因應機器需在固定時段動作需要可設定的多段定時器,因為不是很精準的要求,定時的最小單位為"分"


操作模式分為定時和連續動作,定時模式再分為24小時模式和7天模式。為儘量簡化程式書寫的困難度,動作時間和關閉時間是分開輸入,定時組別的排序不使用自動方式改以手動排序


另外將24小時模式和7天模式的設定資料分別以2個文字檔存檔,以便在程式執行時自動叫出設定檔

 

 

24小時模式只有設定時和分,在這模式下設定星期也不會顯示和存檔

20080122-01  

 

 

7天模式則加上星期這一項,設定是以0為星期日,因此在已設定時間的列表上可以看到星期這一項有0這個數值

20080122-02  

 

 

程式一開始是設定每個功能按鍵的初始值,改變已設定時間的表格標題文字顯示,從儲存的檔案中讀出已設定的定時資料。預設是24小時模式

20080122-04  

 

 

在程式迴圈內第一步是連續讀取並顯示電腦系統的時間,讀出的資料在後續程式中作為比對用來源

20080122-05  

 

 

在迴圈上使用多組Shift Register動態改變資料變化

20080122-06  

 

 

在24小時和7天模式切換時,會先將原先動作模式的資料先存檔,然後讀取另一模式所需要的設定檔案,同時改變已設定時間的表格標題和內容


存檔的同時會跳出一對話方塊詢問是否要蓋過原內容

20080122-09  

 

20080122-03  

 

 

程式關閉時也會自動存檔

20080122-08  

 

 

資料的刪除直接使用陣列的刪除元件,刪除前先使用Property Node方式從已設定時間的表格中取得要刪除的位址,然後才進行刪除動作

20080122-14  

 

20080122-10  

 

 

設定資料寫入前會判定動作時間必須小於關閉時間,否則不會執行寫入動作

20080122-11  

 

 

資料修改前同樣會判定動作時間必須小於關閉時間,否則不會執行寫入動作。另外在修改前必須先從已設定時間的表格中選擇要修改的位址

20080122-13  

 

 

連續輸入多筆資料後有可能動作時間不連貫,有必要重新排序,在此用的是之前"2D陣列資料排序"那篇文章提到的程式,在這裡改造成3階的排序程式,依序是星期、時、分

20080122-12  

 

 

為求能及時反應是否有動作,顯示用的動作燈是寫在事件方框的右側

20080122-07  

 

 

動作的進行使用比對方式,當電腦系統時間落在設定時間內時則動作燈亮,若沒有則切換到下一定時組待機,若已進行到最後一筆定時資料時,會停止切換,等到系統時間過了切換點會從頭開始動作


24小時模式的切換點是每天晚上的0時0分


7天模式的切換點是星期日的0時0分

20080122-15  

 

 

目前這程式有個小問題,在過切換點時會有瞬斷現象,雖然眼睛看不出來,但可用程式檢測出來,瞬斷的時間和Tume事件設的時間相同,這部份有待進一步研究

arrow
arrow
    文章標籤
    定時器
    全站熱搜

    未出師的小工程師 發表在 痞客邦 留言(0) 人氣()