labview中 我现在在做一个上位机对串口的发送 ASCII码和十六位进制的转换问题

2024-10-28 10:10:57
推荐回答(3个)
回答1:

你的意思我大概清楚了。这么给你解释下吧:且不管你的老师说的是什么,首先,在LabVIEW里,不管你的上位机发送的具体内容是什么,其给串口的指令对于LabVIEW来说都应是字符。比如你要发的是字符“a”,那么发送的就是“a”;如果你要发送数字“15”,则LabVIEW实际能发送的是ASCII码为15的那个字符。所以如果要发字符或者文本,直接发就是了,如果要发数字,则先将其转换为字符,我记得LabVIEW里有这样的vi,可以将15转换为其对应字符而不是转成文本的“15”。当然如果你要发的是字符串“15”,那就按照字符的做法直接发就是了。接收也是一样的,你收到的永远是字符或文本,这个不用担心。其次,关于进制的问题。这个只是指令设计者自己为了指令形式易懂易操作而弄的,对于程序,它不知道这是多少进制,它只需要发送的字符是正确的就可以。比如你发55H,一定要事先将其变为十进制的85,这样发送的字符才是正确的。至于它是什么01010101 的形式还是其他什么形式程序是不管的,它只要85对应的字符。最后,如果你是为了输入指令方便想要弄成16进制输入或者显示,将基数改为16进制即可。
总结下就是:不管发什么,最终都应发送字符或文本,不要管指令的具体形式是什么,只要知道你发送的数据10进制是多少就OK了。

回答2:

如果发的是一个不固定值就用扫描值加强制转换,如果需要不断改变,可以用十进制转换为十六进制字符串,然后按上面的扫描值输出,本人实践成功过。

回答3:

发送的就是ascii中55H对应的字符,创建数组,基数改为16进制,第一个元素输入55,然后接u8数组转字符串,然后写入visa即可