一个串口双线程循环如何顺序发送命令

2019-07-18 02:44发布

在一个485串口中有多个仪器需要通讯,如何实现在两个循环线程对一个串口进行发送命令?比如,在一个主循环中定时查询一个仪器的参数,当这个参数超过某个值时,通知另一个次循环,对同一串口中的另 一个仪器开启一个动作,现在的问题是主循环一直占用了串口,次循环就没有办法进行发送指令操作了。这种情况该怎么做呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
yuweilang
2019-07-18 08:08
imcu2007 发表于 2014-11-7 14:55
楼主,你的485总线确定配置好可以同时和各台仪表通信了么?
1.你可以使用USB-485的转换器通过串口调试助手 ...

是这样的,两台仪器单个单个或在一个循环中顺序读写都可以成功通信了。
现在的设想是这样的,在主循环中仪器A一直在定时的被查询,比如0.5s发送一次命令查询下此仪器A的状态,而当查到仪器A的值超过某一个值,就通知另外一个次循环对同一个串口中的另外一个仪器B执行某个操作,而此时主循环仍然需要去定时去查询仪器A的状态。这个时候就会出现顺序的问题了,在执行B的时候,串口可能被A占用着,出现竞争情况。
你提到的状态机方式是顺序进行的,从A转到B后,A就不再查询仪器了。
我的想法是,在双循环模式下是否有一种机制可以设定个顺序,A执行完后,再轮到B?比如在主循环中,执行A指令花费0.2s,还有0.3s的空闲时间,此时B再执行?

一周热门 更多>