0

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

任何人都可以提供的任何帮助将不胜感激!

4

2 回答 2

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)

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

于 2013-02-28T15:18:10.900 回答
0

你是对的 - 如果 Fluke 同时获取 ascii 和 hex 数据(即使可以通过一种方法发送),它会变得非常混乱。

因此,如果 Write 方法需要一个字符串,那么您需要将您的十六进制命令转换为字符串以及查看 ASC() / CHR() 命令

于 2013-02-28T08:45:59.307 回答