我在使用
QextSerialPort类进行
串口通信编程,是在windows下进行的。然后我专门开了一个线程进行读写串口,出现的情况如下:
我向串口写入一个数据以后,进行10ms睡眠,即调用msleep(10);但是结果是睡眠时间并不如预想的一样。
测试代码如下:
QTime x;
x.start();
forever {
//com->write( &a );
x.restart();
msleep( 10 );
qDebug()<<x.restart();
}
结果如下:
0
15
16
0
16
15
0
16
16
0
15
16
0
15
16
16
0
15
16
0
16
15
0
16
15
0
16
16
0
15
16
16
0
(基本是规律出现)
把msleep(10);换成如下代码:
while( x.elapsed < 10 )
continue;
得到的结果是:15或者16,不会出现0;
把msleep(10);更换成msleep( 1 ); 的时候出现的结果是:返回7次0,然后出现一次15或者16.
[ 此帖被loveonfire在2010-07-13 09:49重新编辑 ]