【c#】串口通信汇总

1、多串口多线程接收数据

https://blog.csdn.net/shouwang1994/article/details/78656840

2、串口通信运行报错System.InvalidOperationException

https://zhidao.baidu.com/question/2075790621619581028.html

3、串口发送数据移位

https://blog.csdn.net/jack__linux/article/details/79382315

3、串口传输中文字符

发送:  
Encoding gb = System.Text.Encoding.GetEncoding("gb2312");  
byte[] bytes = gb.GetBytes("中文");  
serialPort1.Write(bytes, 0, bytes.Length);  

接收:  
int ilen = serialPort1.BytesToRead;  
byte[] bytes = new byte[ilen];  
serialPort1.Read(bytes, 0, ilen);  
string xx =System.Text.Encoding.Default.GetString(bytes); //xx="中文";

4、读取串口信息并解析信息(字符串)

https://blog.csdn.net/qq_38069903/article/details/105948650

5、串口通讯 停止位详解及设置为None或1.5时报错原因

这里所说的位并不是bit,所谓的停止位实际上是一个时间长度。这个时间长度与串口通信的波特率有关,通信所用波特率的倒数值

即为1位,它在实际中表示为一个时间段。

由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不

仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数

据传输率同时也越慢。


(1)设置为None失败原因

枚举不合法。MSDN明确规定,设置None会报错。

(2)设置为1.5失败原因

        1)MSDN中明确规定,数据位只能为5至8位。

        2)当数据位为6、7、8位时,停止位只能配置成1或2位;同样当数据位为5位时,停止位只能为1或1.5位

/*******相与枕藉乎舟中,不知东方之既白*******/
原文地址:https://www.cnblogs.com/Mars-0603/p/13596214.html