首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

有什么方法可以迅速读取串口来的数据?该怎么处理

2012-02-19 
有什么方法可以迅速读取串口来的数据?我用TYbCommDevice控件做串口通信,下位机是单片机,通讯过程是一种半

有什么方法可以迅速读取串口来的数据?
我用TYbCommDevice控件做串口通信,下位机是单片机,通讯过程是一种半双工的形式,一问一答式,就是上位机发送一串数据,下位机得到数据根据指令回复数据,上位机根据回复的数据判断下一步该执行那个指令

我看TYbCommDevice的示例全是用定时器超时的方式判断接收是否完成,
主线程发送完数据后,启动定时器,定时时间到就去读取一包数据,这样就有个问题,必须是定时时间到才能去读数据,有可能串口只来了一个字节的数据,那么就会浪费时间,
又有可能来了一长串数据,但定时时间不够,就不能读取全部

发送函数发送完成后开启定时器然后就Sleep这个方法好像不太好...

可不可以设置串口超时的,当接收到每一个字节就开始计时,直到固定的时间内串口没有数据进来,这个时候就可以放心的去读了,
但是发送函数用Sleep的方式也有可能会超过接收数据的时间,请问有什么可以及时的收到数据呢?

[解决办法]
开个线程监听串口,数据收全了就通知主界面,主界面再根据不同的结果来发送数据,这样应该可以

也可以使用coComm类,开源的,用起来很好

热点排行