持续更新中……(2018/6/25)
- 串口通讯中的数据类型:
常用两种:
1. Byte[] 数组:
a) 纯数字类型数据——转换、解析
b) ASCII编码、ansi编码、GBK编码、Unicode编码、UTF-8编码、GB2312编码……——编码转换、解析
c) 混合型(以上两种的混合)——参考通讯协议
2. 文本字串:
a) 纯文本字串——解析
b) 十六进制的字符串、十进制的字符串——字符串转换成数字、解析
c) 编码的字符串数据——编码转换成字符串、解析
d) 混合型(以上三种的混合)——参考通讯协议
- 串口通讯中的数据发送与接收方式:
通用的有一下几种:
1. 自发自收:
组合数据→发送→延时→主动接收→解析数据
(串口驱动对象部分,是系统操作,不需展开)
关于延时:慎用Sleep、推荐使用Doevent
2. 定时器接收:
a) 发送数据单元:组合数据→发送→启用定时器。
b) 定时器接收:定时器循环接收→数据不为null→关闭定时器→读取数据→解析数据
注意:
i. 根据使用定时器的不同,a)与b)不一定在同一个线程中。
ii. 此定时器接收的特点是:只要已接收到的数据不为null就接收数据,否则循环继续。
3. 主动循环查询已接收的数据。满足条件后主动接收:
a) 发送数据单元:组合数据→发送
b) 主动循环查询、满足条件后主动接收:循环查询→满足条件→读取数据→解析数据
注意:
i. b)一般使用定时器,根据使用定时器的不同,a)与b)不一定在同一个线程中。
ii. 所谓条件是指:
◇ 固定长度。
◇特殊结尾字符(系统定义的特殊数据、用户自定义的数据)
4. 主动循环查询状态标志。满足条件后主动接收:
a) 发送数据单元:组合数据→发送
b) 主动循环查询状态标志。满足条件后主动接收:循环查询→满足条件→读取数据→解析数据
注意:
i. 一般使用定时器,根据使用定时器的不同,a)与b)不一定在同一个线程中。
ii. 状态标志指:CTS、DSR、RLSD、Ring变化。
5. 事件接收:
a) 发送数据单元:组合数据→发送
b) 接收事件:读取数据→解析数据
注意:a)与b)不一定在同一个线程中。
产生接收事件条件:
i. 协议接收(CTS、DSR、RLSD、Ring变化,产生事件)
ii.固定数据长度接收(根据用户设置的接收数据长度属性而产生事件)
iii.特殊结尾字符接收(接收到系统定义的特殊数据、用户自定义的数据而产生事件)
- 常用开发用RS232组件:……
◇微软提供的SerialPort组件
◇ MSComm控件
◇第三方组件
◇ API
◇ Tony.SerialPorts.RS232组件
- 线程问题:……
- 三端时序:……
何为三端:
所谓三端是指
1. 应用程序端:指的是运行于计算机端的客户程序(如EXE、DLL等等),就线程角度而言,此端包含:主线程、客户线程、串口事件线程。
2. 串口驱动端:指的是运行于计算机端的串口驱动程序。有三种情况:
a) 计算机本身带有RS232硬件接口:一般在安装板卡驱动时已集成安装串口驱动。
(优点:简单,不需单独安装。缺点:通讯质量中等、可用端口数量少、抗干扰能力一般。)
b) 计算机插接独立的RS232集成板卡:一般用于:计算机无RS232硬件接口;即使有RS232硬件接口,但数量不够,需扩展。需要单独安装相关驱动。
(优点:通讯质量高、控制能力高、可用端口数量多、抗干扰能力强。缺点:价格高、需单独安装驱动。)
c) 使用USB转RS232接线:一般用于:计算机无RS232硬件接口;即使有RS232硬件接口,但数量不够,需扩展。需要单独安装相关驱动。
(优点:数量扩展随意、价格便宜(别太便宜、便宜没好货)。缺点:通讯质量低、电平不稳定、某些产品不支持硬握手、抗干扰能力弱、不适合于工业现场、需单独安装驱动。)
(安装后在计算机系统的设备管理器中,会显示已安装的RS232可用的串口端口,如:COM1、COM2……)
串口驱动是以计算机硬件服务的方式存在(在计算机系统的设备管理器中禁用,将关闭服务)
3. 下位机端:指客户仪表、仪器、设备等。
为何要理解三端:
1. 排查通讯故障时,要以此三端+通讯线为对象逐个排查。具体每个又分为:应用程序的软排查(软件设计问题、协议匹配问题……)、串口驱动端的软排查(指驱动、服务……)、串口驱动端的硬排查(是否插接正确、可靠……)、通讯线的硬排查(线质量、线长度、线抗干扰能力、线接驳是否正确……)、下位机端软排查(协议匹配问题……)、下位机端硬排查(端口测试……)
2. 应用程序端、下位机端无法直接交互,是通过串口驱动端为中介进行交互的。
3. 要理解应用程序端在通讯时的阻塞、假死现象,需了解三端的交互模式。
三端建立流程:
三端需要注意的问题:
- 响应时间:……
- 获取可用串口:……
- 关于USB—RS232转接线:……
- 超速阻塞:……
- 编码转换:……
- 进制转换:……
- 硬协议/软协议、硬握手/软握手:……
- 物理串口形式:……
- 通讯线脚定义:……
- 连接说明:……