zfszfs:多谢,这几天没有上网,所以,这个帖子没有及时回复。
我是Linux下面采用485串口通讯,由于485是单工的,因此在发送的时候,我需要把某个引脚拉低,这样才能把数据发出去,发出去之后,立即将该引脚恢复,这样才能保证及时接受。
现在的问题是,QIODevice,好像是有缓冲的,往缓 ..
(2014-10-14 14:15) 
zfszfs,你好!
从您的描述,可否理解如下:您所说的485串口通讯,是否指RS485串口?如是,你是否进行嵌入式开发(例如ARM类的开发)或工控?若上述猜测成立,真心不建议您使用QT进行底层硬件的开发,因为这不是它的强项。
在Linux下,请直接使用C语言和ioctl系统调用。直接调用ioctl()的目的是避免用户级的缓存,那么发送延迟就只剩下linux核心级的缓存延迟;
另外由于RS485是半双工的,是需要I/O口控制RS485数据方向(例如您所说的需要把某个引脚拉低,同理),建议发送时,在ioctl ()和write()系统调用后,增加一个delay()的延迟,具体延迟时间可自行测试后确定;
发送完毕后,置反数据方向进入接收数据(例如您所说的立即将该引脚恢复,同理),采用ioctl ()和read()系统调用进行接收数据;
同时为避免硬件原因出现数据不完整情况,建议在程序上自定义发送和接收数据帧格式,自行进行校验处理,不符则重发该数据帧。
供参考。
祝好运!
begboy