LabviewRS232串口通信数据格式问题解析

1.最近在开发一款Labview串口通信软件,功能是实现PC与sony摄像机云台的数据通信。主要是通过PC发送16进制指令控制云台的转动,方便做一些测试。

遇到的问题:一开始没注意格式问题,只是纯粹的将16进制数据放入VISA WRITE函数的写入缓冲区。但是忽略了一个问题,就是Labview软件中的程序无论是接收还是发送数据都是字符串的格式,所以遇到其他格式通信的时候需要做相关转换操作。

在论坛找了很多资料,都没找到合适的解决方案。最终找到这个,“VISA Write的写入缓冲区字符串常量上右键>>十六进制显示”。(之前在一个WORD文档里面找到的也是这个方案,只是资料说的不够直白,当时没反应过来:

 

 “如果这些数据是静态的,也就说在程序设计阶段要传输的数据就已经确定了,在这种情况下,首先设置VISA Write的write buffer的显示属性为Hex Display,然后直接输入要发送的16进制字符串就可以了。串口设备的控制命令通常是由一个或多个16进制字符组成的,当我们需要对其进行控制时经常会采用这种方法发送控制命令。”

上面这段文字中的显示属性其实就是写入缓冲区的字符串常量右键之后的“16进制显示”选项,只不过因为我用的是中文版软件,一时没反应过来。


2.使用LabVIEW发送数据

还有一个问题是使用LabVIEW发送数据的问题

①如果下位机接收的是字符串数据类型的话,直接用VISA写入对应的字符串就行了,现在的仪器一般都是接收字符串的,所以可以直接使用VISA发送而不需要转换。

②如果下位机接收的是数值型数据的话,就需要转换一下,其中数值型又是十进制和十六进制二种用得比较多,这二种数据间相互转换一下就行了,其实是一样的。

由于在LabVIEW中字符串直接有十六进制的显示方式,所以发送十六进制的数据比较方便,比如要发送十六进制数值类型的“0xAF”,那么在VISA Write的写入缓冲区字符串常量上右键>>十六进制显示,直接输入“AF”即可,那么下位机接收到的就是正确的数据(十六进制数值类型)了。

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值