主題:關于超時退出的問題 共有39507人關注過本帖 |
---|
sdfa |
1樓 |
關于超時退出的問題 Post By:2005-2-28 11:00:00 [只看該作者]
初學BC 我用etr232i采集數據時 要么是收到數據退出 要么是超時退出  超時是毫秒級的   請問一下 DOS是單任務環境 你們是怎么實現超時退出的  謝謝 
|
|
單帖管理 | 引用 | 回復 |
zhl |
2樓 |
Post By:2005-2-28 11:12:00 [只看該作者]
可以通過記錄啟動和結束時clock(),計算它們之間的差值來判斷是否超時。如:
clock_t start, end; start = end = clock( ); for(;;)    {     // application code      end = clock( );     if( (end-start)>2 )   break;    // 2: about 110ms    } |
|
單帖管理 | 引用 | 回復 |
sdfa |
3樓 |
Post By:2005-2-28 11:23:00 [只看該作者]
超時只有5-10ms  該設成多少呢?
|
|
單帖管理 | 引用 | 回復 |
zhl |
4樓 |
Post By:2005-2-28 11:33:00 [只看該作者]
如果是這樣的話,可直接利用for(;;),通過調整循環次數來實現。
|
|
單帖管理 | 引用 | 回復 |
sdfa |
5樓 |
Post By:2005-2-28 11:51:00 [只看該作者]
我開始就用的FOR(;;)來實現 但是好象不耗時的感覺 那我再試試
btw:end-start>1 大概是多少MS呢? |
|
單帖管理 | 引用 | 回復 |
zhl |
6樓 |
Post By:2005-2-28 12:14:00 [只看該作者]
end-start>1 相當于時間間隔為1個tick,越約為55ms。
建議可采用for(;;) + NB_Delay( )延時,這樣比較好控制。如: for( i=0; i<5; i++ )   {    .....    NB_Delay( 1 );      //延時1ms。    } |
|
單帖管理 | 引用 | 回復 |
sdfa |
7樓 |
Post By:2005-2-28 12:38:00 [只看該作者]
了解了 謝謝
|
|
單帖管理 | 引用 | 回復 |