使用RS232发送字符串和十六进制数据VB.net
问题描述:
我一直在开发一个与COM设备(Fluke 123 Scopemeter)通信的程序。当我通过ASCII数据发送时,我没有任何问题。使用RS232发送字符串和十六进制数据VB.net
我需要做的是发送ASCII和HEX数据的组合。我一直在看这个网站上的许多帖子,但他们似乎专注于发送HEX数据。我需要找到一种发送组合ASCII和HEX的方式 - 实质上,我需要找到一种方法来有效地格式化HEX数据,以便COM设备能够理解它。
下面是我建立我的字符串的一个例子。它给了我一个错误“从字符串PS#0x转换为类型'双'无效”,我假设是因为我混合两种数据类型!我希望我做的事情真的很傻,这实际上是!简单
'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)
任何帮助,任何人都可以给将是非常赞赏
答
诀窍是发送字节,这意味着您的字符串需要转换为字节。举个例子:
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)
你有手册显示协议吗?如果你粘贴一个链接。
答
你是对的 - 它会得到福禄克非常混乱,如果它得到ASCII和十六进制数据[即使它是可能的发送一种方法]
所以,如果写入方法需要一个字符串,那么你需要将你的十六进制命令转换为一个字符串以及ASC()/ CHR()命令
这是我基于我的COM通信的代码。 [与VB.Net的串行通信](http://www.codeworks.it/net/VBNetRs232.htm) – 2013-03-04 08:53:19