C#串口编程实例代码
由于工作需要,第一次接触串口编程.所以不得不在网上查阅各种编程实例.最后结合自己的理解与实践,最终有了如下代码.
本代码只经过了简单的软件测试,与简单的硬件测试.
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Runtime.InteropServices;
usingSystem.Threading;
usingSystem.IO.Ports;
namespacePacketsTest
{
classComSR
{
privateSerialPortserialPort;
privateboolstatus=false;//接受结束状态,true为成功接收到数据.
privatebyte[]reciveData=null;//接受到的数据存储到这里.
publicboolStatus
{
set{status=value;}
get{returnstatus;}
}
publicbyte[]RecivedData
{
get{returnreciveData;}
}
publicSerialPort_SerialPort
{
get{returnserialPort;}
}
publicComSR(stringportName,intbaudRate,intdataBits,Parityparity,StopBitsstopbits)
{
serialPort=newSerialPort();
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+=newSerialDataReceivedEventHandler(Data_Recive);//绑定处理读事件的函数.
}
publicvoidSendBuff(byte[]data)
{
try
{
serialPort.Write(data,0,data.Length);//这里是写
}
catch(Exceptione)
{
if(serialPort!=null&&serialPort.IsOpen)
{
status=false;//这个status是我在上层类中判断端口读写状态的属性,可以去掉
serialPort.Close();
}
}
}
voidData_Recive(objecto,EventArgse)//这个是读端口,事件处理函数
{
try
{
Thread.Sleep(3);
intlength=serialPort.BytesToRead;
reciveData=newbyte[length];
serialPort.Read(reciveData,0,length);
while(serialPort.BytesToRead!=0)//由于数据长度读写不一,而且时间很难确定,所以在这里做了这样的处理
{
Thread.Sleep(1);
}
if(serialPort.IsOpen)
{
status=true;
//serialPort.Close();//这里不应该关闭,应当在更高层次的程序上关闭端口.
}
}
catch(Exceptionex)
{
if(serialPort!=null&&serialPort.IsOpen)
{
status=false;
serialPort.Close();
}
}
}
publicvoidPortOpen()
{
if(!serialPort.IsOpen)
{
serialPort.Open();
}
else
{
serialPort.Close();
serialPort.Open();
}
}
///<summary>
///关闭端口
///</summary>
publicvoidPortClose()
{
if(serialPort!=null&&serialPort.IsOpen)
{
serialPort.Close();
}
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。