主题:关于超时退出的问题 共有34617人关注过本帖 |
---|
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 [只看该作者]
了解了 谢谢
|
|
单帖管理 | 引用 | 回复 |