[問題] BCB 同單執行緒程式,在2台電腦的計時時間不同

看板C_and_CPP作者 (伊薩凱<L>)時間8年前 (2017/08/22 18:58), 編輯推噓1(1011)
留言12則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) C++ Builder 2010 問題(Question): 小弟用 BCB 開發程式來抓取 有RS485介面的設備資料 但後來發現同一個程式的單執行緒時間,在我的NB (開發程式的電腦) 跟資料擷取用的電腦,兩者記算出來的時間不同 程式碼(Code):(請善用置底文網頁, 記得排版) __fastcall SysRun::SysRun(bool CreateSuspended) : TThread(CreateSuspended) { FreeOnTerminate = true; } //--------------------------------------------------------------------------- void __fastcall SysRun::Execute() { //---- Place thread code here ---- Time_Interval = 50; RS485State = RS485Polling; while(!Terminated){ //R485 狀態機 if (RS485State == RS485Polling) Form3_Polling(); //線程每一次 Cycle 停置 0.01s Sleep(10); TimerCount++; } } //--------------------------------------------------------------------------- void SysRun::Form3_Polling(void) { if (TimerCount % Time_Interval == 0) { Form2->P1->Caption = "Time " + IntToStr((int)GetTickCount() - Form2->changetime) + " ms"; Form2->changetime = GetTickCount(); } if (TimerCount >= 50) {TimerCount = 0;} } 補充說明(Supplement): 用我的 NB 跑計算出來的時間都可以 Time 500 ms 但如果用設備的電腦跑出來的時間都會變成 Time 780 ms 開發程式用NB的硬體系統資訊 http://imgur.com/a/QEpnj 設備電腦的硬體系統資訊 http://imgur.com/a/IWj1r 有點傻眼怎麼會這樣 = =||| 要怎麼樣做才可以設備電腦的計算出來的執行緒時間變正常呢? 感謝回答...~L -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.51.145.16 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1503399498.A.C07.html

08/22 19:01, , 1F
這是compile的問題吧?
08/22 19:01, 1F

08/22 19:02, , 2F
= =痾 這個我不太懂,要怎麼處理
08/22 19:02, 2F

08/22 19:03, , 3F
更新新版一點的BCB試試??
08/22 19:03, 3F

08/22 19:23, , 4F
用 Sleep() 和 GetTickCount() 計時是否搞錯了什麼
08/22 19:23, 4F

08/22 19:24, , 5F
然後你的 Form3_Polling() 所耗的時間也會造成誤差
08/22 19:24, 5F

08/22 19:24, , 6F
每次要推自己的文章都有點害羞 #1IGT3gmB (C_and_CPP)
08/22 19:24, 6F

08/22 20:22, , 7F
這兩個 function 的計時精度是 1 / 18.2Hz = 54.945ms
08/22 20:22, 7F

08/22 22:00, , 8F
S大我知道你想表達的誤差
08/22 22:00, 8F

08/22 22:01, , 9F
但我目前遇到的這個問題應該不單單只是誤差造成的
08/22 22:01, 9F

08/22 23:22, , 10F
你看看執行檔內容→一般→安全性那邊有沒有個解除封鎖的
08/22 23:22, 10F

08/22 23:22, , 11F
選項,說什麼檔案來自另一部電腦之類的
08/22 23:22, 11F

08/29 15:28, , 12F
有可能是OS版本的影響,64位元版效能平均比32位元版高13%
08/29 15:28, 12F
文章代碼(AID): #1Pd0vAm7 (C_and_CPP)