zoukankan      html  css  js  c++  java
  • .net初学之SerialPort串口类

    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有这个控件。。。不过没用过。

  • 相关阅读:
    auto_ptr(转载)
    OSG在VS2008下的配置安装
    没有找到MSVCR80.dll (转)
    获取程序数据路径(转)
    vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法(转)
    wxWidgets编程笔记二(samples使用设置)
    关于简繁转换的工作以及校正转换词汇表的设计
    汉文博士简繁汉字转换功能测试版已经上线
    感谢wangyanhan和sanwsw网友为汉文博士制作数据库
    汉文博士新增四角号码检索字典
  • 原文地址:https://www.cnblogs.com/wu-tong/p/6180392.html
Copyright © 2011-2022 走看看