VS2015串口通信编程(MFC)笔记

前言:

一直很喜欢CSDN这个平台,这是第一次在这里写博客,内容若有不当之处还请多多指教,谢谢!

本笔记主要是记录一些开发过程中可能会遇到的一些注意事项,以加强记忆和提醒。

一、 开发目的:

  开发一个简单的上位机界面程序,实现上位机与下位机串口通信,从而对下位机进行程序升级。

二、 开发环境:

  win7系统; VS2015社区版(免费);USB转TTL模块*2(用于调试);

三、内容:

1.创建MFC项目工程,界面设计直接使用VS2015提供的控件,无非也就是一些按钮、编辑框、下拉框、文本、进度条。

这写可视化操作还是比较简单的。

2.语言细节:

(1). 移位运算: 使用 >> 时高位补1, 使用 << 时低位补0;

(2). int转CString: str.Format(_T("%d"), k); // int k; CString str;

(3) CString转int:k = _ttoi(str); //int k; CString str;

(4).取字符串中的某一部分:str.Mid(s, n); //str的第s个字符开始的n个字符(包括s在内)

(5).将unicode 转换为 char:

   iLength = WideCharToMultiByte(CP_ACP,0, FilePath, -1,NULL,0,NULL,NULL);//先取得长度

   WideCharToMultiByte(CP_ACP,0, FilePath, -1, FPchar, iLength,NULL, NULL);//转换后存入FPchar数组中


3. 选用MSCOMM控件方式进行串口通信

(1). 只能打开不大于COM16的串口;该控件不能在其他线程中直接被调用,但可以将其操作封装到函数中被间接使用。

(2). 接收:MSCOMM控件中断事件,用于接收下位机消息。

(3). 发送:另外创建一个子线程用于控制发送流程。

m_pThread = AfxBeginThread(UpgradeThread, (LPVOID)(this), THREAD_PRIORITY_BELOW_NORMAL, 256 * 1024);//stack size = 256*1024


4. 选用API函数方式进行串口通信

(1). 使用API函数CreateFile打开串口时传入的串口号参数前面需加“\\\\.\\”,否则无法打开大于COM9的串口。(例如打开COM10: "\\\\.\\COM10");

主要有四个函数:

CreateFile //打开

CloseHandle //关闭

ReadFile  //读取

WriteFile  //写入

主要三个变量: 

HANDLE m_HdlSerial = INVALID_HANDLE_VALUE;  //串口句柄

OVERLAPPED m_osRead; //用于读取控制

OVERLAPPED m_osWrite; //用于发送控制

(2). 打开串口(异步重叠方式)

//异步重叠,8个数据位,无校验,1个停止位

HANDLE KSerialOpen(LPCTSTR COMx, DWORD baudrate)

{

HANDLE hCom;

  • 10
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值