看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 6.0 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): for(i=0 ;i<iParam3 ;i++) { Sleep(1000); for( j = 0 ; j<=10000 ; j++) { HW_SetPositionPulse(2,iParam7); HW_SetPositionPulse(3,iParam7); } } 如果我iParam3命令下10 這段程式碼跑完 應該是10秒 但是7秒就跑完了 是否是因為Sleep()本身就會有的誤差 要怎麼調整還是否有其他方式 可以讓時間更準!? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.249.111
Schottky:這不太可能吧, 只聽過睡過頭, 沒聽過早起的 10/01 20:58
watson1988:我測了10多次以上~都是6~7秒就跑完了 10/01 21:02
Schottky:先確定迴圈執行的狀況正不正確 10/01 21:04
Schottky:Sleep(1000) 是否如原本預期的有睡十次 10/01 21:04
watson1988:有睡10次 10/01 21:08
watson1988:我早上測的時候還滿準時的 10/01 21:08
watson1988:ok了~~~又準時了 10/01 21:10
watson1988:sleep() 誤差都會這麼大嗎? 10/01 21:12
watson1988:謝謝S大 10/01 21:12
Schottky:這聽起來不像誤差啊 10/01 23:19
lc85301:其實我更好奇幹嘛沒事讓他睡覺 10/01 23:20
lc85301:算了…其實不是很重要lol 10/01 23:20
Schottky:不然你就用timeBeginPeriod(1);和timeEndPeriod(1);把 10/01 23:21
Schottky:Sleep()夾起來,這樣Sleep()的精確度會以1ms為單位 10/01 23:21
Schottky:如果和硬體有關的話大概是要配合其他裝置的timing吧 10/01 23:22
loveme00835:要不要請板友直接幫你寫完比較快? 自己不會估狗? 10/02 00:23
kdjf:樓上可以去google看看,這問題又不直接... 10/02 19:55
kdjf:你可以把sleep回傳的東西用變數接下來,看看是不是正常結束 10/02 19:56
Schottky:Windows的Sleep()好像沒有傳回值,SleepEx()倒是在設成 10/02 21:16
Schottky:alertable的時候有可能會被打斷而回傳WAIT_IO_COMPLETION 10/02 21:17
Schottky:確實UNIX聞雞起舞的sleep()需要擔心睡不飽... 10/02 21:18