AI智能
改变未来

C#串口通信

新建一个串口对象SerialPort port = new SerialPort();设置串口的一些配置port.PortName = \"COM1\";//串口名port.BaudRate = 115200;//波特率port.DataBits = 8;//数据位port.Parity = Parity.None;//校验位port.StopBits = StopBits.One;//停止位port.ReadTimeout = 1000;//读串口延时port.WriteTimeout = 1000;//写串口延时清空缓冲区DiscardInBuffer()//丢弃来自串行驱动程序的接收缓冲区的数据。DiscardOutBuffer()//丢弃来自串行驱动程序的传输缓冲区的数据。
串口的读和写先说写:sp.write(data,o,data.length);//注意data是byte[]在说读:sp.DataReceived += new SerialDataReceivedEventHandler(Com_DataReceived);//绑定事件(注册端口数据获取操作系统托管监听事件)//DataReceived事件表示将处理的 SerialPort 对象的“数据接收事件”的方法private void Com_DataReceived(){this.sleep(1000)}之后你需要新建一个方法来接受你的数据,sp.DataReceived用于和时间绑定,注意这个方法不在主线程上(如果想将数据显示到主界面需要使用到委托),而且只有串口有数据接受到就会触发这个事件,如果出发太快,会导致数据丢失或者程序抛错,所以加上如图,等数据全部接受完再读取这时候数据读写都已经完成。
解析数据:解析数据,一定要遵守下位机老司机的协议文档,不下位机老师傅的协议文档,数据读出来后,是2个BYTE一个值,4个BYTE一个值,是用ASCII还是Unicode编码都一定要按照协议进行解析。
常用方法:Close			关闭端口连接,将 IsOpen 属性设置为 false,并释放内部 Stream 对象GetPortNames	获取当前计算机的串行端口名称数组Open			打开一个新的串行端口连接Read			从 SerialPort 输入缓冲区中读取Write			将数据写入串行端口输出缓冲区常用事件:DataReceived	表示将处理 SerialPort 对象的数据接收事件的方法

每个SerialPort被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » C#串口通信