目录
1、SerialPort类的介绍和使用:
(1)、SerialPort类的功能介绍
SerialPort类封装了串口的基本上操作,包括打开串口,传递串口参数,控制串口监视线程,获取写缓冲事件,获取事件,获取DCB,写数据到串口,从串口读数据,判断串口是否打开,关闭串口,线程处理等功能
(2)、SerialPort类提供接口函数的介绍
1)、InitPort函数
串口连接首先要打开串口建立串口通讯协议(也就是确定串口号,波特率,数据位,校验位和停止位)。InitPort函数实现的就是串口的打开和串口设置的初始化。
函数原型:
2)、控制串口监视线程函数
3)、获取事件,写缓冲大小,获取DCB的接口函数
4)、写数据到串口接口函数
5)、错误处理接口函数
6)、线程接口函数
7)、接收字符和字符串接口函数
8)、对接手的数据进行处理函数
(3)、对于这些接口函数的使用
由于SerialPort以及封装好了底层操作,首先InItPort函数(也就是传递串口设置和对话框的句柄),其次就可以进行写入串口操作WriteToPort和数据处理重写纯虚函数HandleReadData。
2、设计串口通信:
(1)、UI设计
创建工程,选择MFC对话框,然后添加控件
(2)、添加变量
(3)、程序设计
1)、初始化下拉框
在框架类的CPP中,自定义函数MycommInit来初始化下拉列表
在OnInitDialog中被调用初始化。这个初始化仅仅是一个UI上的初始化。
2)、打开串口点击事件
打开串口的点击事件,首先需要根据SerialPort的打开串口接口函数进行串口属性的初始化(真正的属性初始化)和打开串口操作,同时设置了一个picture control(更改属性加载BTM的图片)根据串口打开和关闭改变颜色。
先判断什么时候需要进行串口的初始化
波特率
串口号
校验位
停止位
真正打开串口
异常捕获(上面的打开串口)
加载自己的位图
打开串口操作之后,打开串口变成关闭串口并且位图也要变化
3)、发送信息点击事件
点击发送按钮在EDIT中发送信息
先进性一个判断如果串口没有打开就提示弹框,获取我们打开串口上面的文字内容进行判断。
然后就可以进行发送消息的处理(首先是发送二十六进制数据)
首先定义一个BYTE类型的数组存放数据,把EDIT上的内容同步到str上
自定以一个处理函数来处理数据,先转成十进制再利用十进制转成16进制的整形存放再数组中
上面的函数需要先调用HexChar把字符数字转成十进制对应的数字
利用WriteToPort函数接口第二个重载可以发送十六进制,直接传递参数
如果发送的是二进制数据可以直接调用WriteToPort函数
4)、发送清空显示功能实现
5)、勾选框功能的添加
当选中十六进制发送的时候,把原来EDIT上的文本直接转成十六进制
获取EDIT中的内容然后格式化内容
遍历每一个字符都格式化成16进制
没有勾选勾选框的情况下默认二进制
6)、保存文件功能实现
UpdateData(TRUE);
7)、打开文件功能实现
7)、实现饮水机的读取温度功能
对话框中的通信类的实例化对象调用通讯类的函数自动发送读取温度的十六进制
通讯类发送温度ReadTemp函数
通过勾选框十六进制读取温度的勾选来解析收到的十六进制