我有一个应用程序,我希望通过串行链接与嵌入式设备进行通信。通信协议是二进制的 - 这意味着我有一个结构化的消息,我希望从内存复制到串行字节流不变(无编码)。
我正在使用Microsoft VS 2012使用.NET框架在C#中编写应用程序。我继承了一个应用程序的shell,它似乎使用System.IO.Ports.SerialPort类来读取/写入com端口。
几位同事告诉我,我会遇到问题,因为现代通讯库,甚至是USB和串行驱动程序,都会假设您正在使用某种形式的编码(如ASCII或Unicode)进行通信。如果有人知道如何开始这个,请告诉我。我感谢任何帮助。
答案 0 :(得分:1)
您可能正在寻找的起点是Write(byte\[\], int, int)
方法,它允许您将任意数据块的二进制数据发送到串行端口。
不,串行(RS-232)通信不需要字符数据。物理通信并不关心您通过它发送的数据。您是否可以发送'原始二进制'数据或文本命令(例如调制解调器使用的所谓AT
命令)是在该通信链接之上使用的实际应用程序协议(如果有)的问题。 / p>
答案 1 :(得分:1)
C#非常简单。
using System.IO.Ports;
public void TestSerialPort()
{
SerialPort serialPort = new SerialPort("COM1", 115200, Parity.None, 8, StopBits.One);
serialPort.Open();
byte[] data = new byte[] { 1, 2, 3, 4, 5 };
serialPort.Write(data, 0, data.Length);
serialPort.Close();
}
如上所述,您可以发送所需的任何原始二进制值,它不需要是字符数据。