微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > Labview > 如何保证同一时间串口只进行一个操作

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

时间:10-02 整理:3721RD 点击:
程序在运行的时候,有些地方串口是要写入,有些地方是要读取,但两个地方是同时运行的,那么我该怎么去保证在同一时间内,同一个串口只进行一个操作,要么读取要么写入。就是如何对这些操作进行一个优先度的排序?希望有大神能指导一下思路

设置个全局bool变量   正在读取则反回

现在串口多数是全双工同时读写也没关系吧!如果非要控制流程建议把串口读写利用“LV2型全局变量”写到一个子vi里面(也就是写成动作机)把子vi设置成不可重入。可以参考一下LabVIEW宝典。

这个不会  学习一下                     

最简单用布尔变量做个条件判断就行喽。没记错的话,labview串口通信的范例就是这种。
也可以考虑用事件结构,例如,超时分支放默认的操作(即优先级较低的操作、常规循环的操作),如读取操作,再设置一个布尔按钮(负责响应写入动作)值发生变化的分支,用于处理写入操作。这时候,如果有需要自动响应写入,加上相应的软触发即可。
如果串口设备是写一条指令才能读一条指令的,那么就在写指令处进行条件判断即可。
如果有多个不同指令要处理,个人喜欢用状态机来处理。

使用 获取信号量/释放信号量 可以解决串口端口读写的竞争关系,只进行读或写操作,不会发生同时操作

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

或者用状态机,动作执行时一个个按照排队来的,就不会出问题了。

设置个全局变量,当地方A在使用串口,地方BCD等全局变量使其为F状态,不运行到串口读取分支

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top