labview串口通信绘制实时变化的强度图

目前在用labview读串口数据并且想绘制强度图。
串口读到的数据类似为(A1:5,B2:10,C3:15,D4:5),
需要把这四个不断变化的数据存入一个2*2的数组才能绘制强度图。
但不知道怎么才能将串口实时读到的数据写入数组中。

你可以通过使用LabVIEW的FIFO来实现将串口数据实时写入数组。下面是一个简单的实现过程:

1.首先,创建一个包含两个2x2的数组的全局变量。这些数组将用于存储最新的4个数据。

2.然后,创建一个FIFO,用于存储串口读取到的数据。FIFO的数据类型应该是一个包含4个元素的聚合类型(例如一个Cluster,包含4个元素:A1,B2,C3,D4)。

3.在读取串口数据的代码中,将读取到的数据打包成一个聚合类型,然后将其写入FIFO中。

4.接下来,在主程序中创建一个while循环,该循环不断地从FIFO中读取数据,并将其写入全局变量中。

5.最后,你可以在主程序中使用绘图模块,将2x2的数组作为输入,实时绘制强度图。

下面是一个伪代码,供你参考:

// 全局变量
Global Variable: 2x2 Array of Int32: RecentData

// 创建FIFO
Create New FIFO: MyFIFO, Data Type: Cluster(A1:Int32, B2:Int32, C3:Int32, D4:Int32)

// 串口读取数据
While (True)
    Read Serial Port: MySerialPort
    Parse Data: A1, B2, C3, D4
    Create Cluster: MyData, Elements: A1, B2, C3, D4
    Write to FIFO: MyFIFO, Data: MyData
End While

// 从FIFO中读取数据
While (True)
    Read from FIFO: MyFIFO, Data: MyData
    Unbundle Elements: A1, B2, C3, D4, from Cluster: MyData
    Update Global Variable: RecentData, Elements: A1, B2, C3, D4
End While

// 绘制强度图
Plot 2D Array: RecentData   

需要注意的是,由于这个方案使用了全局变量和循环,因此你需要小心处理并发问题和资源管理问题。

可以将串口读到的数据进行解析,提取出每个传感器的强度值,然后将这些值存入一个2*2的数组中。

1.首先,将串口读到的字符串进行分割,得到每个传感器的数据。

2.使用字符串函数(如Substring)提取每个传感器的强度值,并将其转换为数值类型。

3.将这些值存入一个2*2的数组中。可以使用一个计数器来记录已经存储了多少个传感器的数据,然后根据计数器的值来确定要存储到哪个位置。

4.绘制强度图。将2*2的数组作为数据源,使用LabVIEW自带的绘图函数(如Intensity Graph)来绘制实时变化的强度图。

以下是一个简单的LabVIEW程序示例,实现了将串口读到的数据存入2*2的数组,并绘制强度图。注意:此示例仅为演示目的,实际使用时需要根据实际情况进行修改。

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:labview串口数据采集异常显示界面制作
  • 除此之外, 这篇博客: LabVIEW串口通信基础知识中的 1.1 配置(打开)串口 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    配置串口是进入串口通讯的门槛,只有配置成功了,才能进行正确的通讯。首先我们看下 VISA 配置串口函数:
    在这里插入图片描述
    这里有个小技巧,配置串口时最好是在对应的参数端口那里,右键,新建常量或者输入控件,然后再在新建出来的常量或者输入控件上面修改。因为,新建出来的数据类型,肯定是对的。接下来解释下主要的输入参数:
    (1) 启用终止符: 目的是使串行设备做好识别终止符的准备,默认值为TRUE, VI_ATTR_ASRL_END_IN属性设置为识别终止符;如值为FALSE,VI_ATTR_ASRL_END_IN属性设置为0(无)且串行设备不识别终止符。
    (2)终止符:通过调用终止读取操作。从串行设备读取终止符后读取操作终止。 0xA是换行符( \n )的十六进制表示。消息字符串的终止符由回车( \r )改为0xD。
    终止符的设置如下所示:
    在这里插入图片描述
    (3) 超时:指定读/写操作的时间,以毫秒为单位。 默认值为10000ms,即10s。如果你设置了超时,等待超时时间到了,程序就不执行了,错误输出会输出错。
    (4)VISA资源名称:指定要打开的资源。VISA资源名称控件也可指定会话句柄和类。
    (5)波特率是传输速率。 默认值为9600。
    (6) 数据位是输入数据的位数。 数据位的值介于5和8之间。默认值为8。
    (7)奇偶指定要传输或接收的每一帧使用的奇偶校验。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^