wince 串口的处理速度问题

xxc555   2010-4-9 23:45 楼主
    用串口与MCU通信,用57600波特率,8位数据,1位停止位,无校验位。mcu端发送一个数据包号请求命令(共10个字节长度),wince端收到后,解析出包号,把对应包号的数据发送给MCU(共40个字节长度)。mcu端收到数据后继续请求下一包数据,一来一去,如此反复。  按理说这个处理过程应该是很快的啊,我测了下完成一包数据的通讯传递过程平均要50多毫秒!而理想状态下应该至少在20MS以下,请问要如何配置串口,才能达到这样的速度?

    我的配置是:接收缓冲区和发送缓冲区大小均为1024个字节;以 EV_RXCHAR 来触发读线程ReadFile;发送数据直接用writefile(),没有另开写线程了。ReadTotalTimeoutMultiplier 和 ReadTotalTimeoutConstant 都设为0,ReadIntervalTimeout 设为 MAXDWORD;写超时设为TimeOuts.WriteTotalTimeoutMultiplier=10;TimeOuts.WriteTotalTimeoutConstant=100;(TimeOuts.WriteTotalTimeoutMultiplier=1;TimeOuts.WriteTotalTimeoutConstant=10也试过了,没什么起色)


请各位大侠指教!

回复评论 (8)

把波特率再提高一倍,那么时间会减少二分之一
点赞  2010-4-10 08:40
可以适当的提高波特率
点赞  2010-4-10 22:14
我波特率115200 一点事都没有。呵呵。看我的博客,我曾经被串口折磨过几次。
点赞  2010-4-11 14:33
不行啊,波特率提高了,相应的误码率也会随着提高,而我这个对通信过程中的准确性要求比较高。除了提高波特率还有没有实质性的提升方法;我原来在单片机对单片机的方式中是可以控制在10ms以下的,难道是操作系统的消息机制制约了???
点赞  2010-4-11 15:38
不行啊,波特率提高了,相应的误码率也会随着提高,而我这个对通信过程中的准确性要求比较高。除了提高波特率还有没有实质性的提升方法;我原来在单片机对单片机的方式中是可以控制在10ms以下的,难道是操作系统的消息机制制约了???
点赞  2010-4-11 15:38
呵呵,误码率提高,但是你可以通过握手来保证通信质量的。单片机对单片机的通讯可以控制在10ms以下是正常的,因为它没有操作系统,没有很多的系统开销。
点赞  2010-4-12 09:03
请教高手了,是不是操作系统制约的原因呢?
如何才能提高处理速度?
点赞  2010-4-17 22:38
顶串口,估计是操作系统开销了一些
点赞  2010-4-18 13:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复