C#串口编程实例代码
程序员文章站
2023-08-26 23:59:24
由于工作需要,第一次接触串口编程.所以不得不在网上查阅各种编程实例.最后结合自己的理解与实践,最终有了如下代码.
本代码只经过了简单的软件测试,与简单的硬件测试....
由于工作需要,第一次接触串口编程.所以不得不在网上查阅各种编程实例.最后结合自己的理解与实践,最终有了如下代码.
本代码只经过了简单的软件测试,与简单的硬件测试.
using system; using system.collections.generic; using system.linq; using system.text; using system.runtime.interopservices; using system.threading; using system.io.ports; namespace packetstest { class comsr { private serialport serialport; private bool status = false;//接受结束状态,true为成功接收到数据. private byte[] recivedata = null;//接受到的数据存储到这里. public bool status { set { status = value; } get { return status; } } public byte[] reciveddata { get { return recivedata; } } public serialport _serialport { get { return serialport; } } public comsr(string portname,int baudrate,int databits,parity parity,stopbits stopbits) { serialport = new serialport(); serialport.portname = portname;//设置端口 serialport.baudrate = baudrate;//设置波特率 serialport.databits = databits;//设置数据长度 serialport.parity = parity;//设置奇偶校验协议 serialport.stopbits = stopbits;//停止位 serialport.receivedbytesthreshold = 1;//这里是读事件触发条件,1代表一个字节 serialport.dtrenable = true;//启用数据终端就绪信号 serialport.rtsenable = true;//请求发送就绪信号 serialport.datareceived += new serialdatareceivedeventhandler(data_recive);//绑定处理读事件的函数. } public void sendbuff(byte[] data) { try { serialport.write(data, 0, data.length);//这里是写 } catch (exception e) { if (serialport != null && serialport.isopen) { status = false; //这个status是我在上层类中判断端口读写状态的属性,可以去掉 serialport.close(); } } } void data_recive(object o, eventargs e)//这个是读端口,事件处理函数 { try { thread.sleep(3); int length = serialport.bytestoread; recivedata = new byte[length]; serialport.read(recivedata, 0, length); while (serialport.bytestoread != 0)//由于数据长度读写不一,而且时间很难确定,所以在这里做了这样的处理 { thread.sleep(1); } if (serialport.isopen) { status = true; //serialport.close();//这里不应该关闭,应当在更高层次的程序上关闭端口. } } catch (exception ex) { if (serialport != null && serialport.isopen) { status = false; serialport.close(); } } } public void portopen() { if (!serialport.isopen) { serialport.open(); } else { serialport.close(); serialport.open(); } } /// <summary> /// 关闭端口 /// </summary> public void portclose() { if (serialport != null && serialport.isopen) { serialport.close(); } } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: Springboot处理CORS跨域请求的三种方法
下一篇: 详解JAVA类加载机制