最近由于任务需要,用到了serialPort类,在此记录重要步骤。
主要常用的属性为:
PortName //可用的COM端口号
BaudRate //波特率
DataBits //数据位
StopBits //停止位
Parity //奇偶校验
BytesToRead //获取接收缓冲区的字节数
BytesToWrite //获取发送缓冲区的字节数
其中前五个属性是打开一个串口最基本的参数。比如一般的串口调试工具都是默认数据位为8,停止位1,奇偶校验0,如下:
串口实例化后的对象为serialPort1,则
serialPort1.Parity = Parity.None;
serialPort1.DataBits = Convert.ToInt32(“8”);
serialPort1.StopBits = StopBits.One;
serialPort1.Open();
常用的方法:
DiscardInBuffer //丢弃接收缓存区的内容
DiscardOutBuffer //丢弃发送缓冲区的内容
Open //打开串口
read //从输入缓冲区读取
这个方法需要特别说明,一般用到的重载方法为 public int Read(
byte[] buffer, //将输入写入到其中的字节数组
int offset, //缓冲区数中开始写入的偏移量
int count //要读取的字节数
)
表示从 SerialPort输入缓冲区读取一些字节并将那些字节写入字节数组中指定的偏移量处。并且利用read读出来的是字节数组,如果要转换为字符串的话还需要System.Text.Encoding.ASCII.GetString(buffer);
write(string) //将制定的字符串写入串行端口
常用事件:
DataReceived //数据接收事件的方法
从 serialPort 对象接收数据时,将在辅助线程上引发DataReceived 事件,因此貌似这个事件是一直在“循环的”(只要接收缓冲区有数据就出发)。如果不调用该事件也可以实现实时的接受数据,但应该就要另外开辟一条线程了,目前我还没研究,以后有机会了应该要探究下。