采集的数据转换成有符号数的问题
时间:10-02
整理:3721RD
点击:
现在用采集卡采集数据,用的“VISA读取”的VI,输出是字符串形式,正常显示是乱码,用十六进制显示可以得到正确的结果,将采集的数据存盘,用cooledit看,结果也正确。但是自己在做实时波形显示部分的时候怎么都不正确,具体原因如下,字符串转数值的时候只发现可以转换成无符号数,而采集下来的数据是有符号数,转换成无符号数之后就无法正确显示波形了。请教采集卡采集下来的有符号字符串类型的数据如何正确的转换成有符号数值并波形显示。
举例:采集下来的十六进制数D1,转换成二进制后是11010001,无符号数是209,有符号数是-81.
有没有这样一个VI直接将无符号数转换成有符号数的也行啊。
举例:采集下来的十六进制数D1,转换成二进制后是11010001,无符号数是209,有符号数是-81.
有没有这样一个VI直接将无符号数转换成有符号数的也行啊。
曾经遇到过类似的状况,比如你说的16进制数D1,通过将16进制字符串转换成十进制的数值控件,转换后的值赋予一个数值显示控件,此时要注意的时,你的数值显示控件的数据类型要更改为有符号型的,比如I8/I16/I32,就可以成功的转变为负数,小编可以试验一下。
你好,很感谢你能及时回答我的问题,你说的那个控件我试过,有两个问题。首先用VISA读取我每次循环设置的是读取10K的数据,而那个控件只能转换出一个数字,也就是10K数据中的第一个数据(原因不详)。第二,即使转换出来的结果也不对,原帖说过,读出的字符串正常显示是乱码,用十六进制显示才是正确结果,而上面这个控件似乎是以乱码进行转换的,所以输出结果全都是0.不知道我这样做是不是错误,若有好的方法请赐教。
是这样的,你采集到的数据是乱码,需要右键显示控件,选中十六进制显示,才是正确的结果,那你可以将读取到的内容通过字符串控件转换成十六进制的字符串,再转换成十进制的,你看看结果如何。
对于你每次读取的数据量是1K,建议你将读取到的内容存储到队列中,通过循环结构和索引字符串的函数的结合,每次索引出单个字符进行处理,然后将处理后的字符串再通过连接字符串函数合并起来,提供的这思路你可要试试。
VISA输出是字符串数据吗