如何保证同一时间串口只进行一个操作

2019-07-17 20:00发布

程序在运行的时候,有些地方串口是要写入,有些地方是要读取,但两个地方是同时运行的,那么我该怎么去保证在同一时间内,同一个串口只进行一个操作,要么读取要么写入。就是如何对这些操作进行一个优先度的排序?希望有大神能指导一下思路
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
1030402679
1楼-- · 2019-07-18 00:45
设置个全局bool变量   正在读取则反回
ShuiMoLise
2楼-- · 2019-07-18 06:29
现在串口多数是全双工同时读写也没关系吧!如果非要控制流程建议把串口读写利用“LV2型全局变量”写到一个子vi里面(也就是写成动作机)把子vi设置成不可重入。可以参考一下LabVIEW宝典。
李春明
3楼-- · 2019-07-18 06:45
这个不会  学习一下                     
ChE_Li
4楼-- · 2019-07-18 09:07
最简单用布尔变量做个条件判断就行喽。没记错的话,labview串口通信的范例就是这种。
也可以考虑用事件结构,例如,超时分支放默认的操作(即优先级较低的操作、常规循环的操作),如读取操作,再设置一个布尔按钮(负责响应写入动作)值发生变化的分支,用于处理写入操作。这时候,如果有需要自动响应写入,加上相应的软触发即可。
如果串口设备是写一条指令才能读一条指令的,那么就在写指令处进行条件判断即可。
如果有多个不同指令要处理,个人喜欢用状态机来处理。
张筅笙丶
5楼-- · 2019-07-18 09:08
 精彩回答 2  元偷偷看……
xu391600076
6楼-- · 2019-07-18 14:55
ShuiMoLise 发表于 2017-2-5 10:49
现在串口多数是全双工同时读写也没关系吧!如果非要控制流程建议把串口读写利用“LV2型全局变量”写到一个子vi里面(也就是写成动作机)把子vi设置成不可重入。可以参考一下LabVIEW宝典。

这个是正解,把读写封装到一个VI就可以了

一周热门 更多>