2013-02-28 460 views
0

我一直在开发一个与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) 

任何帮助,任何人都可以给将是非常赞赏

回答

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) 

你有手册显示协议吗?如果你粘贴一个链接。

+0

这是我基于我的COM通信的代码。 [与VB.Net的串行通信](http://www.codeworks.it/net/VBNetRs232.htm) – 2013-03-04 08:53:19

0

你是对的 - 它会得到福禄克非常混乱,如果它得到ASCII和十六进制数据[即使它是可能的发送一种方法]

所以,如果写入方法需要一个字符串,那么你需要将你的十六进制命令转换为一个字符串以及ASC()/ CHR()命令

相关问题