完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
程序在运行的时候,有些地方串口是要写入,有些地方是要读取,但两个地方是同时运行的,那么我该怎么去保证在同一时间内,同一个串口只进行一个操作,要么读取要么写入。就是如何对这些操作进行一个优先度的排序?希望有大神能指导一下思路
|
|
相关推荐
8个回答
|
|
设置个全局bool变量 正在读取则反回
|
|
|
|
现在串口多数是全双工同时读写也没关系吧!如果非要控制流程建议把串口读写利用“LV2型全局变量”写到一个子vi里面(也就是写成动作机)把子vi设置成不可重入。可以参考一下LabVIEW宝典。
|
|
|
|
这个不会 学习一下
|
|
|
|
最简单用布尔变量做个条件判断就行喽。没记错的话,labview串口通信的范例就是这种。
也可以考虑用事件结构,例如,超时分支放默认的操作(即优先级较低的操作、常规循环的操作),如读取操作,再设置一个布尔按钮(负责响应写入动作)值发生变化的分支,用于处理写入操作。这时候,如果有需要自动响应写入,加上相应的软触发即可。 如果串口设备是写一条指令才能读一条指令的,那么就在写指令处进行条件判断即可。 如果有多个不同指令要处理,个人喜欢用状态机来处理。 |
|
|
|
使用 获取信号量/释放信号量 可以解决串口端口读写的竞争关系,只进行读或写操作,不会发生同时操作
|
|
|
|
ShuiMoLise 发表于 2017-2-5 10:49 这个是正解,把读写封装到一个VI就可以了 |
|
|
|
或者用状态机,动作执行时一个个按照排队来的,就不会出问题了。
|
|
|
|
设置个全局变量,当地方A在使用串口,地方BCD等全局变量使其为F状态,不运行到串口读取分支
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
用udl里的字符串信息在局域网内其他电脑连接sql数据库为什么为出现连接失败拒绝访问?
1796 浏览 2 评论
为什么同一个队列引用的全局变量,运行在两个子vi中发现队列数据丢失了
1407 浏览 0 评论
1610 浏览 0 评论
关于labview2024版本的lvanlys.dll出错的问题
3477 浏览 3 评论
1527 浏览 2 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 06:06 , Processed in 0.712734 second(s), Total 90, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号