1.labview对串口进行调试时,首要需求装置visa驱动,可在NI的官方网站上下载,不过速度如同不是很快。
2.最简形式下进行串口程序接纳。如图:
然后在最右边接一个字符串承受区就能够承遭到串口发送的数据了。
留意:通过串口发送的是ascii码,因而假如单片机那儿发送的是比方0x20之类的数据,那么在承受端你用”Normal”形式将看不到任何东西,由于Normal是以ascii形式检查,而0x20的ascii表明空格,处理的办法为右键点击承受区(字符串指示器),然后挑选16进制形式便能够正常检查。
那假如要在单片机那么发送一个详细的数字,怎样才干正确的将这个数提取出来呢?这才是难点地点。
有种办法能够处理:在下位机(发送端)发送的便是表明该数的ascii码,比方你要发送12,那么就发送49,50(ascii比实践的数大48),因而在下位机专门写个函数将欲发送的数转化成ascii码就能够正常发送了。函数很简略,便是将其拆开然后加48。
此办法是专门用于labview,由于要从接纳到的字符串中提取数字就必须用这种办法,当然其他的软件,比方说VB之类的在这方面就简略一些,由于它能够在上位机对承遭到的ascii码进行处理复原。
3.得到字符串后,将有用的信息提取出来:
比方收到如下信息:
b0001b002b0003b0004b0005……
假如字符串是上述固定格局,能够scan from string 函数直接将数字提取出来,但我遇到的问题是上面的格局在每次发送的时分却不是固定的(串口都这样)
上述字符串有可能以如下方法收到
001b0002b0003b0004b0005b00……
此刻scan from string 就会报错,由于它发现第一个不是字母等等。
通过查找,发现Search/Split String函数能够处理这个问题,它能够把格局固定化,
比方我查找的字母为”b”,衔接输出端到match + rest of string 那么上述字符串
就会构成以b最初,然后由剩下的一切字符组成的序列,为
b0002b0003b0004b0005
然后就能够用scan from string 函数对上述字符串进行处理了。
如 format string为: b%4d ,就提取了b后边4个整数。