天天看點

關于時間比較的想法---20190223

  最近想用STM32讀取SD卡中配置資訊,和GPS時間做比較後實作定時開關機的功能。

要求如下:

1.裝置讀取SD卡内容後,和目前GPS時間進行比較:

2.GPS時間中年月日不會出現0x00的值,但是時分秒中會出現0x00.

3.時間比較函數:

讀取配置檔案中時間資訊和目前GPS時間資訊,逐位元組進行比較,如果配置檔案中時間大于目前GPS時間傳回1,等于傳回0,大于傳回2.

配置檔案中的時間進行限制:沒有用到的時間記作0xFF,如定時在每天的6點開始,年月日時分秒記作0xFF 0xFF 0xFF 0x06 0x00 0x00.

這樣在進行時間比較時如果配置檔案中的時間資訊某個位元組為0xFF,則放棄該位元組比較,進行下一位比較。

4.如果在某天的某個小開機到某個小時關機:

例如:0:00開機---3:00關機, 這種情況可以直接進行比較,GPS時間大于0:00小于3:00可以開機,大于3:00則關機。

如果需要在前一天的某個小時開機,到第二天的某個小時關機:

例如在每天的22:00開機到第二天的1:00關機。開機情況分析:如果GPS時間大于開機時間,為開機狀态,如果GPS時間小于關機時間為開機狀态,如果GPS時間大于關機時間且小于開機時間則為關機狀态。

5.總結,:

    如果目前時間小于開機時間且小于關機時間 --- 1.如果關機時間大于開機間---關機,如果關機時間小于開機時間---開機;

              如果目前時間小于開機時間且大于關機時間  --- 關機

    如果目前時間大于開機時間且小于關機時間 --- 開機

            如果目前時間大于開機時間且大于關機時間 --- 1.如果關機時間大于開機時間--關機 ,2.如果關機時間小于開機時間--開機;

代碼處理:如果((目前時間大于開機時間且小于關機時間) || (目前時間大于開機且大于關機&&關機時間小于開機時間)||(目前時間小于開機時間且小于關機時間&&關機時間小于開機時間))----開機

                  否則 關機處理。

6. 如果配置時間為7:00~9:00  如果GPS時間在6:00 ---關機,如果GPS時間為8:00---開機,GPS時間在10:00 ---關機 。

    如果配置時間為9:00~7:00  如果GPS時間在6:00 -- 開機,如果GPS時間為8:00---關機,GPS時間在10:00 --- 開機。

    如果配置時間為22:00~2:00 如果GPS時間在21:00--關機, 如果GPS時間為23:00---開機,GPS時間在1:00--開機。

 

轉載于:https://www.cnblogs.com/Better-Hai/p/10422888.html