返回列表 回复 发帖

有关多线程+API串口通信问题!求助!

首先我这有一个设备接在我的电脑上,通过使用本书提供的串口类可以与该设备进行正常通信,但是当有多个同样的设备连接到计算机上的时候就出现了一个问题,这些设备是同一类型,但是有他们自己的地址,所以我在通信的时候会轮流发送他们的地址进行通信,要是一个设备在规定时间内没有回应(发送数据),我就发送下一个设备的地址,这样一直循环,实现的方法是,打开串口,启动监听线程后我启动了定时器1,在定时器1中通过设定轮流发送设备的地址,在发送一次后关闭定时器1并启动定时器2(定时器2为等待的时间),在定时器2中关闭定时器2并启动定时器1(接着发送下一个设备的地址),这种方法我在用串口控件的时候是可以实现的,但是在用到多线程+API时出现了问题。

问题:比如要用到10个相同的设备,地址为1--10,但是我这只有两个设备地址为3和5,问题出现了:当我从1号设备开始发送时一个表的数据都没有数据,当我从3号开始发送时只有3号有数据,当从5号发送时只有5号有数据,当我把5号地址改为4号时,再从3号发送,这时3号、4号都有数据。就是说当你向一个设备发送命令后要是该设备没有回发消息则后面的设备都不能回发消息了!我不知道是读写超时设定的有问题还是里面的函数一直在等待设备回复,我在调试的时候发现,我从一号还是发送,1号要是没有数据则定时器2启动并发送2号,当发送到3号时,本应该3号是有数据的,但是调试的时候去没有,我还把定时器2的等待时间加长了依旧没有!实在是不知道问题出现在哪里了,用串口控件实现的话倒是没有问题,所以我就怀疑是不是多线程和API这里出现了什么问题,查了好几天也没弄明白,实在是没有办法了,希望可以得到解答!
建议检查缓冲区。最好在使用之前,清空缓冲区。
返回列表