新建一个串口对象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被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。