欢迎来到天天文库
浏览记录
ID:39163508
大小:629.50 KB
页数:37页
时间:2019-06-26
《串口设备数据的接收和处理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、工控程序设计学习情景2.2串口设备数据的接收和处理学习情景2.2串口设备数据的接收和处理2.2.1学习要点1.知识点:SerialPort类实例的构造,接收串口数据的方法,接收超时异常处理,HSDZC电能综合测试仪的数据格式,数据帧片段的缓存方法2.技能点:应用程序项目和SerialPort对象的创建,串口数据接收,接收数据的缓存和数据帧的提取2.2.2任务描述某些串口设备能够定时、主动地向上位机发送数据,处于上位机端的工业控制程序,需要获取串口收到的数据并进行分析和处理。利用.NETFramework2.0及更高版本提供的SerialPort类可以比较方便地在C#应用程序中
2、实现串口通信功能。从编程的角度看,串口数据的接收就是利用SerialPort对象的Read或ReadByte方法将操作系统存放在串口输入缓冲区中的数据读入到一个字节数组中。该教学情景通过串口数据接收、接收数据的缓存、数据帧的提取、浮点数解码这几个实施步骤,达到使用SerialPort对象接收单个串口设备(下位机)数据的目的。学习情景2.2串口设备数据的接收和处理2.2.3相关知识1SerialPort类实例的构造SerialPort类是从.NETFramework2.0版本开始提供的一个串口控制类,该类包含在System.IO.Ports命名空间中,使用该类的实例可以打开串口
3、,并发送数据。通过构造函数可以产生SerialPort类的实例,SerialPort类的构造函数在定义时进行了重载,表2.2.1中列出了这些重载构造函数的接口定义:表2.2.1SerialPort类的构造函数定义表2.2.1SerialPort类的构造函数定义构造函数的接口定义功能说明publicSerialPort();使用默认属性值创建SerialPort类的新实例,其中数据位数的默认值为8,校验位的默认值为None,停止位的默认值为1,默认端口名称为COM1。学习情景2.2串口设备数据的接收和处理publicSerialPort(stringportName);使用指定
4、的端口名称初始化SerialPort类的新实例,其它参数采用默认值publicSerialPort(stringportName,intbaudRate);使用指定的端口名称和波特率初始化SerialPort类的新实例,其它参数采用默认值publicSerialPort(stringportName,intbaudRate,Parityparity);使用指定的端口名称、波特率和奇偶校验位初始化SerialPort类的新实例,其它参数采用默认值publicSerialPort(stringportName,intbaudRate,Parityparity,intdataBit
5、s);使用指定的端口名称、波特率、校验位和数据位初始化SerialPort类的新实例,其它参数采用默认值publicSerialPort(stringportName,intbaudRate,Parityparity,intdataBits,StopBitsstopBits);使用指定的端口名称、波特率、奇偶校验位、数据位和停止位初始化SerialPort类的新实例学习情景2.2串口设备数据的接收和处理除了在构造SerialPort类实例的时候可以对端口名称、波特率、奇偶校验位、数据位和停止位进行设置外,构造好SerialPort类实例后,还可以通过PortName、Baud
6、Rate、Parity、DataBits、StopBits属性对这些参数进行修改,因此构造SerialPort类实例的程序书写形式比较灵活。2串口的打开和关闭SerialPort类中与串口打开和关闭相关的成员如下:(1)Open方法Open方法打开新的串口连接,该方法不带参数,接口定义如下:publicvoidOpen()(2)Close方法Close方法关闭已经打开的串口连接,该方法不带参数,接口定义如下:publicvoidClose()学习情景2.2串口设备数据的接收和处理(3)IsOpen属性通过IsOpen属性可以获知串口当前是否为打开状态,返回一个bool类型的值
7、,该属性只读,接口定义如下:publicboolIsOpen{get;}串口不能重复进行打开和关闭操作,在打开或关闭串口前,都要使用该属性检查串口是否已经处于打开或已经处于关闭状态,以免引发异常。3接收串口数据的方法(1)ReadByte方法SerialPort类的ReadByte方法可以从串口接收缓冲区中读取一个字节,该方法的接口定义是:publicintReadByte();该方法从串口接收缓冲区中读取一个字节,要和ReadTimeout属性配合使用。当调用ReadByte方法时,如果接收缓冲区中没
此文档下载收益归作者所有