小草手把手教你 LabVIEW 串口仪器控制——字符串处理
上一篇我已经讲过了,用 LabVIEW 做串口程序很容易,就拖 4 个函数,加个循环,基本就完事了。so easy.
然而,你这个只能说,可以收发数据而已。好比你有了很多做菜的原料,你得自己按照自己厨艺来加工,才能变成有用的菜肴。好吧,有人听不懂了。
我开始打比方:
Example:在谍战片里,很多会降到窃听情报的,都是窃听过电报。一般截取电报的信号很容易,因为都是无线电传输,很容易截取。但是截取了密文,没什么用啊,你得翻译出来呀!要怎么翻译呢?你得有个密码本,对着翻译。翻译成人能听懂的话。所以,重点不在于如何获取敌人的无线信号,而在于破译密码。
这个例子,够形象吧。
你串口收到都是字符串,很多时候,都需要自己处理一下,转成数值。
注意:一定要区分,正常显示下的字符串,和 16 进制下的字符串。
一般如果你接收的字符串如果被你看到的是 乱码。
请不要着急,请切换到 16 进制显示模式。怎么切换见下图。
一般接收到的字符串分以下几种情况(我随便想的,我不是专家,无法面面俱到):以下假定都是正常模式下的,不是 16 进制显示的。
---------------------------------
①单个接受字符串就是数字形式。
比如,收到的数据,就是 1,你要转成 1,很容易。直接用下面的函数来转为数值形式。
②你接收到的是一串字符串:比如 01 02 03 04 05 。..。..。
一般来说,这种一串的,都是有含义的,至于什么含义,你得看仪器说明,如果自己是单片机编程,编写单片机程序的那个人应该懂的.如果是一串字符串,你需要截取字符串。操作都是字符串这个函数面板里。自己看着办。
你用截取字符串截取每一个数据,然后再参照第①种方式,转化成数值。
====================================
第一种,单一的接受一个字符的,很容易。问题是,大多时候,我们串口都是发送的一串数据。我们要截取字符串,得找到入口。就是找到字符串的头。比如你单片机或仪器发送来的数据,是 010203010203010203.。.有时候,可能你接受的是 03010203010203.。..这个时候,你不能说,第一个数,就是你心中的第一个数吧,因为错位了哦。怎么办?
接着往下看。
一般而言,专业的写单片机的人,会加帧头 (校验码) 帧尾。
比如,帧头是特殊字符(永远不可能出现在数据中的,一般是 STX,特殊字符等。帧位,常见的仪器的就是终止符。OAOD 或者 ODOA 或者 OA 或者 OD,就那么几个。这样,每次都检查下头,找到头了,才开始截取 后面的 数据。 这样就一般不会出现错位啦。
=====================
上面只是随便讲了下。
接收命令,一般两种形式。
①一般仪器,都是你发送一个命令,仪器才回送一串字符串。
这样一发,一收的,一般都不会错位的,自己按照仪器说明书,自己转化下数值就可以了。
举例:
你发送一个 A。
仪器回复一个 A123。
没其他干扰,自己直接截取就行。可能 A 是读取 A 寄存器的值,返回的是 A123,,协议规定 A 后面的字符串就是 A 寄存器的值。那么 A 的值是 123。
②,你发一个命令,下位机就不停的回送数据。
举例:你发送一个 A。
仪器回送:FFABCDFFABCDFFABCDFFABCD.。..。..,搞不好,还有 CDFFABCDFFAB.。..。.,错位了的。错位了就自己查找头,然后拼接成正常数据,然后提取字符串。至于怎么拼接,这个,可以用移位寄存器,然后用连接字符串拼接。
比如,你定义的字符串的头,是 FF,你得到了 FF 后,开始等待后面的字符。然后 A B C D 陆续来了。你拼接到一起,然后集体提取,当然,你也可以来一个提取一个。无所谓了,有些人性子急,不过作为编程人员,一定要稳重。
编写者:浅浅的小草
论坛账号:happyarrow
推荐阅读:
小草手把手教你 LabVIEW 串口仪器控制——VISA 串口配置
小草手把手教你 LabVIEW 串口仪器控制——初识VISA串口
小草手把手教你LabVIEW串口仪器控制—安装使用仪器现有驱动
小草手把手教你 LabVIEW 串口仪器控制——VISA 驱动下载安装篇
讲解的很深入,谢了
刚好能用到,我收下了,谢过
小草的教材,好多啊…………
把这一个顶上去,全集在哪里?
建议大家把小草的这个全集搞起来
实际的串口通讯,是个复合体啊
小编 比如说我下位机发送一帧数据有30个字节,用labview接受时,会出现分段接收的情况。不是因为终止符引起的 请问 有什么高招指点下~
小草写的好好啊
写的很好
学习了,很好的资料,谢谢分享!希望更多labview资料可以分享
学习了,很好的资料,谢谢
谢谢小编!
太实用了
很基础 很实用 学习了
谢谢分享,,,,,,,,,,,,
先收藏了,谢谢分享。
串口不好的时候乱码怎么处理呢
小编讲的通俗易懂 赞一个~~~~~~~~~
好东东 一起分享····
讲解得不错,谢谢分享
值得学习!
多谢小编分享,学习了。
非常感谢小编大人的分享,问小编大人一个问题,帧结束可以设置,帧头是如何设置的呐?
讲得很不错,看了你其他文章,对于我这样新手真是太好的帮助了
生动形象,内容丰富,印象深刻,喜大普奔。
不错啊,讲的很详细。
真形象,细致,有用
感谢小草!
看一看,学一学,
谢谢小编的分享
好东西 谢谢小编分享
DING
学习一下
好贴子感谢小编分享
好崇拜啊
谢谢
小草的教材,好多啊…………
谢谢小编分享,顶一下
学习了谢谢
说明的蛮细的,具体操作留给读者
讲解的很深入,谢了
收到了的字符,怎么能转成其它格式并显示出来呢?
谢谢分享
展会都是水军嘛
好东西 讲的简单
惺惺惜惺惺想行行行行行行行行行行行行惺惺惜惺惺
全部是干货,果断收藏,谢谢小编
谢谢分享
文章很好。给了我提示。谢谢小草。
好长时间不写程序,忘了这段叫字符串处理
666666666666666666666666666666