C# 串行化通过串行端口发送的有效负载

C# 串行化通过串行端口发送的有效负载,c#,serialization,serial-port,packet,C#,Serialization,Serial Port,Packet,我正在尝试发送此字节数组:0x7E 0x02 0x40 0x01 0x00 0x06 0xDA 0x7E 通过串行端口,但必须先对其进行序列化。我不知道该怎么办。我还必须反序列化来自串行端口的数据。我该怎么做呢?串行端口上的协议数据单元是字节;没有必要将它们序列化。您只需将字节写入串行端口,就可以从电缆的另一端获得这些字节 串行端口的行为可能有点棘手。像Linux这样的Unix通常将它们视为“文本”设备,因此开始解释传入的字节流,就像在键盘上键入它一样(因此^H 0x08是退格,并被解释为退格)

我正在尝试发送此字节数组:0x7E 0x02 0x40 0x01 0x00 0x06 0xDA 0x7E
通过串行端口,但必须先对其进行序列化。我不知道该怎么办。我还必须反序列化来自串行端口的数据。我该怎么做呢?

串行端口上的协议数据单元是字节;没有必要将它们序列化。您只需将字节写入串行端口,就可以从电缆的另一端获得这些字节

串行端口的行为可能有点棘手。像Linux这样的Unix通常将它们视为“文本”设备,因此开始解释传入的字节流,就像在键盘上键入它一样(因此^H 0x08是退格,并被解释为退格)。因此,您必须小心地将串行端口配置为原始二进制接口

如果端口是纯文本的,那么这就是像base64这样的二进制编码的用武之地,它实际上是字节的文本序列化

您还需要正确配置和布线;使用硬件流量控制并连接相应的电线

然后是信息划分。根据您配置的流量控制,如果接收端未运行,则发送端无需停止,因此可能会出现启动顺序问题


基本上,串行端口是一个该死的讨厌的使用,像xmodem和ymodem这样的协议是为了使传输可靠而开发的。如果您希望串行端口与tcp网络套接字一样可靠地交换数据报(以及文件),则需要在应用程序和串行端口之间使用类似xmodem或ymodem的东西。问题是这些都是古老的技术,但似乎有一些实现。

使用网络流,然后将流结果去可视化。见: