1.命名空间:System.IO.Ports
2.SerialPort类有7个重载
第一个没有参数,第二个没看懂,剩下的都是传的串口的参数
(1)portName:串口名称
(2)baudRate:设置串行波特率,及通信的传输速度
(3)parity:设置奇偶校验检查协议
(4)获取或设置传输中的字节长度
(5)获取每个字节的停止位
3.方法
(1)Open():打开串口,需要注意的是串口只能有一个程序占用,如果当前串口已被其他程序打开则不
能再次打开。
(2)Close():关闭串口。
(3)Read(byte[],int,int):读接收缓冲区(返回值)的数据,参数分别是:用哪个数组来接,从第几位
开始接,接到第几位。返回int类型数据。
(4)Write(byte[],int,int):向继电器发送数据,参数分别是:传进去哪个数组,从数组的第几位开始
发,发几位。
(5)GetPortNames():获取继电器串口名称,静态方法,返回string类型数组。
(6)DiscardInBuffer():清空接收缓冲区数据。
4.属性
(1)BaudRate:获取或设置串行波特率,及数据传输速度,返回int型数据。
(2)Parity:获取或设置奇偶校验检查,返回Parity。
(3)DataBits:获取或设置每个字节的标准数据位长度,返回int类型数据。
(4)StopBits:获取或设置标准停止位数,返回StopBits类型数据。
5.事件
(1)DataReceived:接收区有返回值时触发。
6.一个简单的DEMO
1 SerialPort serialPort1 = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);//设置串口数据 3 byte[] data = new byte[8] { 0x55, 0x01, 0x12, 0x00, 0x00, 0x00, 0x01, 0x69 };//第一路吸合命令 4 serialPort1.Open()//打开串口 5 serialPort1 .Write(data,0,8);//向串口写入命令 6 int n = serialPort1.BytesToRead;//读继电器返回缓冲区的内容有几位 7 byte[] by = new byte[n];//定义byte数组接收返回值 8 serialPort1.Read(by, 0, n);//读缓冲区数据并存带by数组中 9 serialPort1.Close();//关闭串口
7.备注
(1).串口的开关耗时较长,应该直接打开串口然后发送数据,确定不需要发送的时候再关闭。
(2).串口返回十六进制数据,需要解析,我手里的解析方式是:倒数第二位十六进制返回值转换为二
进制,转换为8位,不足8位的在前面用零(0)补齐,为零的位置如果是1则标识继电器已打开,否
则为已关闭。
(3).SerialPort有这个控件。。。不过没用过。