因为任何数据采集后都希望能做出图表来,在LabVIEW里写了一个串口的程序,无奈输出的是字符串,而作图的输入数据必须要是数值类型,找遍了控件也没看见将字符串转换成相应ASCII码的控件。于是上网搜索,真是众说纷纭,很多人说用十六进制数字符串转换成数值的控件,也有人说用扫描字符串的控件,本人也是初学,发现这两种方法并不能实现我的目标。
虽然我的字符串输入控件选择的是显示16进制数,但数据流实际上记录的是该字符串的ASCII码。所谓将十六进制数字符串转换为数值,其实是指正常显示时显示为16进制数。举个例子,ASCII码的0x31,对应于字符“1”,如果输入0x31即“1”,则用上述控件就会将该字符串转换为0x01。
而第二个说法提到的扫描字符串,其实是将字符串中的数字提取出来,而并不是得到该字符串的ASCII码。比如,ab123c,用一定的格式说明就可以把123提取出来,即输入“ab123c”,可以得到数字123。这种方法也可以提取浮点数,具体可以参见LabVIEW的帮助文档。
将字符串转换成相应的ASCII码,我用了挺复杂的方法,如果有幸被高手看到此文章希望能抽出宝贵的时间留下更好的方法。因为我是要做图,于是每次循环的时候我只要字符串的最后一个字符的ASCII码,所以我先将该字符分离出来,然后将它转换成字节数组,再提取数组元素,就得到了该字符对应的那个ASCII码。具体如下:
第一个小方框是“字符串”->“字符串长度”
第二个是“字符串”->“截取字符串”
第三个小框里有U8的是“字符串”->“字符串/数组/路径转换”->“字符串字节数组转换”
第四个是“数组”->“索引数组”