MFC简单的串口使用
来源:互联网 发布:asp微信接口源码 编辑:程序博客网 时间:2024/05/21 08:48
其实这里也不算是MFC的串口,c++应该都可以用。
头文件
#pragma onceclass Serial{public:Serial(void);~Serial(void);private:HANDLE hCom; //全局变量,串口句柄public:/*创建一个串口对象参数,端口,波特率作者:HES*/BOOL Create_Serial(CString port,int bt);/*关闭端口作者:HES*/void Close_COM();/*接收一个字节参数 数据作者:HES*/BOOL Read_Byte(char &ch);/*发送一个字节参数 数据作者:HES*/BOOL Write_Byte(char ch);/*接收一个字符串参数 数据 长度作者:HES*/BOOL Read_Buf(char *ch, DWORD len);};
c文件
#include "stdafx.h"#include "Serial.h"Serial::Serial(void){}Serial::~Serial(void){}/*创建一个串口对象参数,端口,波特率作者:HES*/BOOL Serial::Create_Serial(CString port,int bt){hCom=CreateFile( port, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if(hCom==(HANDLE)-1) { //MessageBox(L"打开COM 失败!"); return false; } else { } SetupComm(hCom,100,100);//输入缓冲区和输出缓冲区的大小都是1024 COMMTIMEOUTS TimeOuts; //设定读超时 TimeOuts.ReadIntervalTimeout=MAXDWORD; TimeOuts.ReadTotalTimeoutMultiplier=0; TimeOuts.ReadTotalTimeoutConstant=0; //在读一次输入缓冲区的内容后读操作就立即返回, //而不管是否读入了要求的字符. //设定写超时 TimeOuts.WriteTotalTimeoutMultiplier=100; TimeOuts.WriteTotalTimeoutConstant=500; SetCommTimeouts(hCom,&TimeOuts);//设置超时 DCB dcb; GetCommState(hCom,&dcb); dcb.BaudRate=bt;//波特率 dcb.ByteSize=8;//每个字节有8 位 dcb.Parity=NOPARITY;//无奇偶校验位 dcb.StopBits= ONE5STOPBITS;//1个停止位 SetCommState(hCom,&dcb); PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR); return true;}/*接收一个字节参数 数据作者:HES*/BOOL Serial::Read_Byte(char &ch){ DWORD wCount=0;//读取的字节数 BOOL bReadStat; bReadStat=ReadFile(hCom,&ch,1,&wCount,NULL); if(!bReadStat) {//MessageBox(_T("读串口失败!")); return false; }return true;}/*发送一个字节参数 数据作者:HES*/BOOL Serial::Write_Byte(char ch){ DWORD dwBytesWrite=0; COMSTAT ComStat; DWORD dwErrorFlags; BOOL bWriteStat; ClearCommError(hCom,&dwErrorFlags,&ComStat); bWriteStat=WriteFile(hCom,&ch,1,&dwBytesWrite,NULL); if(!bWriteStat) { //MessageBox(_T("写串口失败!")); return false; } return true;}/*关闭端口作者:HES*/void Serial::Close_COM(){ CloseHandle( hCom ); }/*接收一个字符串参数 数据 长度作者:HES*/BOOL Serial::Read_Buf(char *ch, DWORD len){ memset(ch,'\0',len); DWORD dwBytesWrite=len; COMSTAT ComStat; DWORD dwErrorFlags; BOOL bWriteStat; ClearCommError(hCom,&dwErrorFlags,&ComStat); bWriteStat=WriteFile(hCom,ch,len,&len,NULL); if(!bWriteStat) { //MessageBox(_T("写串口失败!")); PurgeComm(hCom,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR); return false; } PurgeComm(hCom,PURGE_TXABORT| PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);return true;}
初始化串口
void CMFC串口Dlg::OnBnClickedInit(){if(!COM3.Create_Serial(L"COM3",115200)){MessageBox(_T("打开串口失败!"));}}
读写这里就不写了,看函数说明使用吧。
阅读全文
0 0
- MFC简单的串口使用
- MFC-串口控件的使用
- MFC串口控件MSComm的使用
- mfc-串口控件的添加和使用
- MFC中串口类的使用
- MFC-串口编程简单示例
- C++ MFC 简单 串口通信
- 一个简单的串口通信程序(vc6 mfc)
- VS2013+MFC串口控件的简单上位机
- 虚拟串口软件和串口调试助手的简单使用
- 上位机简单串口类,VC串口类, MFC串口
- 虚拟串口软件的简单使用
- 基于MFC的串口类CSerialPort的使用
- MFC中使用串口控件
- MFC使用mscomm串口通信
- MFC使用mscomm串口通信
- MFC/基于对话框的MFC上位机串口通信(C++实现)简单例程
- [MFC]使用强大的第三方串口类 CSerialPort
- 关于ActionContext.getContext()的用法心得
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- spring.profiles.active 针对多种启动环境的spring配置
- 在Homestead虚拟机上安装laravel5.5
- 学习ThreadLocal
- MFC简单的串口使用
- final、finally和finalize的区别
- jQuery-事件绑定
- RabbitMQ-JAVA常见报错信息
- Android JNI开发(6)--JNI中使用线程
- HashMap、HashTable、LinkedHashMap、TreeMap、HashSet简单总结
- Highcharts 制作仪表盘 gauge
- list去重操作
- RMAN参数详解