完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在一个485串口中有多个仪器需要通讯,如何实现在两个循环线程对一个串口进行发送命令?比如,在一个主循环中定时查询一个仪器的参数,当这个参数超过某个值时,通知另一个次循环,对同一串口中的另 一个仪器开启一个动作,现在的问题是主循环一直占用了串口,次循环就没有办法进行发送指令操作了。这种情况该怎么做呢?
|
|
相关推荐
5个回答
|
|
楼主,你的485总线确定配置好可以同时和各台仪表通信了么?
1.你可以使用USB-485的转换器通过串口调试助手和仪表通信,测试RS485的网络是否可以用 因为RS485网络的寻址应该是通过仪表本身的控制命令是否带有地址码,RS485主设备向外广播。 为什么我这么提问,因为一般RS485总线使用都是通过MODBU来和多台通讯,我是想确认一下楼主的方案是否可行。 2,关于问题,通讯的时候,串口初始化打开后,就不要关闭,把串口的VISA资源放入移位寄存器中,供不同的状态机使用,是不会冲突的。好的程序框架式成功的要素。 遇到这种案子,建议用串口卡或者GPIB通讯,串口卡一对一,GPIB可以总线寻址。 评分 |
|
|
|
是这样的,两台仪器单个单个或在一个循环中顺序读写都可以成功通信了。 现在的设想是这样的,在主循环中仪器A一直在定时的被查询,比如0.5s发送一次命令查询下此仪器A的状态,而当查到仪器A的值超过某一个值,就通知另外一个次循环对同一个串口中的另外一个仪器B执行某个操作,而此时主循环仍然需要去定时去查询仪器A的状态。这个时候就会出现顺序的问题了,在执行B的时候,串口可能被A占用着,出现竞争情况。 你提到的状态机方式是顺序进行的,从A转到B后,A就不再查询仪器了。 我的想法是,在双循环模式下是否有一种机制可以设定个顺序,A执行完后,再轮到B?比如在主循环中,执行A指令花费0.2s,还有0.3s的空闲时间,此时B再执行? |
|
|
|
yuweilang 发表于 2014-11-7 22:06 我也出现了同样的问题,不知道怎样才能,完成双循环下向一个串口发送指令,设备能够成功接收,希望等得到您的答复 |
|
|
|
我没有实现双循环下用一个串口接发指令,最后还是妥协用状态机的方式,在一个循环线程里来操作一个串口。 我也期待其它高手可以指点一二。 |
|
|
|
您好,我最近用事件结构形式,实现了所谓A和B仪器的操作,但是也属于伪操作,我用超时事件对应A,其他控件事件对应B,这样是不是可以 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
807 浏览 2 评论
NI Vision有个图片打不开其他图都能打开(用NI Vision Assistant也打开不了)
1209 浏览 1 评论
labview2015使用Excel报表程序打包生成后打开程序要选一个vi才能使用,否则软件就会报错,这是什么问题?
1776 浏览 2 评论
LabVIEW与单片机无法串口通信 提示串口打开错误 端口设置有问题吗?
1688 浏览 3 评论
1994 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 16:43 , Processed in 0.681992 second(s), Total 87, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号