我一直在开发一个与COM设备(Fluke 123 Scopemeter)通信的程序。当我发送ASCII数据时,我没有遇到任何问题。
我需要做的是通过ASCII和HEX数据的组合发送。我一直在看这个网站上的一些帖子,但他们似乎专注于专门发送HEX数据。我需要找到一种发送组合ASCII和HEX的方法 - 本质上,我需要找到一种有效格式化HEX数据的方法,以便COM设备能够理解它。
我如何构建字符串的示例如下。它给了我一个错误“从字符串PS#0x转换”到类型'Double'是无效的“我假设是因为我混合了两种数据类型!我希望我做的事情真的很傻,这实际上是直截了当!
'Building my command line
Command = "PS"
Command += ControlChars.Cr
Command += "#0 x"
Command += &H0 + &H2 + &H0 + &H0 + &H0
Command += " y"
Command += &H0 + &H1 + &H0 + &H0
...
'Writing my command to the COM device
moRS232.Write(Command)
任何人都可以给予任何帮助,我将不胜感激!
答案 0 :(得分:1)
技巧是发送字节,这意味着你的字符串需要转换为字节。一个例子:
Dim buf As New List(Of Byte)
buf.AddRange(moRS232.Encoding.GetBytes("PS" & ControlChars.Cr & "#0 x"))
buf.AddRange(New Byte() {0, 2, 0, 0, 0})
buf.AddRange(moRS232.Encoding.GetBytes(" y"))
buf.AddRange(New Byte() {0, 1, 0, 0})
moRS232.Write(buf.ToArray, 0, buf.Count)
您是否有显示协议的手册?如果您粘贴链接。
答案 1 :(得分:0)
你是对的 - 如果它同时获得ascii和十六进制数据[即使可以通过一种方法发送],它将会让Fluke感到非常困惑。
因此,如果Write方法需要一个字符串,那么你需要将十六进制命令转换为一个字符串,同时参见ASC()/ CHR()命令