用串口与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也试过了,没什么起色)
请各位大侠指教!
我波特率115200 一点事都没有。呵呵。看我的博客,我曾经被串口折磨过几次。
不行啊,波特率提高了,相应的误码率也会随着提高,而我这个对通信过程中的准确性要求比较高。除了提高波特率还有没有实质性的提升方法;我原来在单片机对单片机的方式中是可以控制在10ms以下的,难道是操作系统的消息机制制约了???
不行啊,波特率提高了,相应的误码率也会随着提高,而我这个对通信过程中的准确性要求比较高。除了提高波特率还有没有实质性的提升方法;我原来在单片机对单片机的方式中是可以控制在10ms以下的,难道是操作系统的消息机制制约了???
呵呵,误码率提高,但是你可以通过握手来保证通信质量的。单片机对单片机的通讯可以控制在10ms以下是正常的,因为它没有操作系统,没有很多的系统开销。
请教高手了,是不是操作系统制约的原因呢?
如何才能提高处理速度?