【问题标题】:Serial Communication - byte stream串行通信 - 字节流
【发布时间】:2012-06-08 04:59:44
【问题描述】:

我正在尝试与 XM 调谐器进行串行通信。调谐器要求从 comport 发送一系列字节来控制调谐器,命令流的示例如下:“B8,4D,18,30,20,B8”。最初,我尝试将命令作为字符串发送(如下),但没有成功。

 _Comport.Write("B8,4D,18,30,20,B8");

我也尝试将命令转换为字节数组,但这也没有效果。

 System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
 Byte[] bytes = encoding.GetBytes("B8,4D,18,30,20,B8");               
 _Comport.Write(bytes,0,bytes.Length);

comport 已打开并接收来自调谐器的消息;但是我不知道如何将字节流传输到调谐器。有人可以指导我如何与调谐器进行适当的沟通吗?

【问题讨论】:

  • 您将该数据作为字符串发送,而当您使用.GetBytes 时,您只是获得了引号中字符串表示的字节。您需要发送一个实际的字节数组。

标签: c# serial-port


【解决方案1】:

如果你想将它们作为字节发送,而不是 ASCII 字节表示,你可以这样做:

var bytes = new byte[] { 0xB8, 0x4D, 0x18, 0x30, 0x20, 0xB8 };
_Comport.Write(bytes, 0, bytes.Length);

数字前面的0x 向编译器表明它们是十六进制数字。

【讨论】:

  • C# 实际上有字节文字吗?根据这个帖子,它没有:stackoverflow.com/a/43059/362536那个帖子错了吗?
  • 那篇文章没有错,但指的是你不能明确地请求语言中的字节文字。由于数组的元素类型,此处的值实际上是在编译时转换为字节的 int 字面量。
  • 谢谢你 vcsjones。像魅力一样工作。
  • @InternalServerError,啊,有道理!感谢您的澄清。一直以来,我一直在对每个元素进行数组转换......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
  • 1970-01-01
  • 2020-02-17
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多