注:此文为笔者学习串口编程时的笔记,最初版本可能凌乱且非常不完整,笔者会逐渐完善此文,如果你熟悉WIN32 多线程编程,欢迎提出宝贵意见。
需要使用多线程的原因:
串口通信——与其他任何通信一样,需要有两个及以上的设备进行发送和接收活动,在这里,如果采用UDP协议,发送活动将会变得非常简单:当用户按下按钮后,消息被捕获并调用向串口发送消息的函数。也就是说,发送活动的开始时间是确定的并能被机器捕获的,即用户按下按钮的时刻为发送活动开始的时刻。但反观接收活动就没有这么幸运了,对方设备随时都有可能发来消息,也就是说,接收活动的开始时间是不确定的,那么我们就需要程序不间断地监听,不放过任何间隙,用一个while(true)的无限循环就可以实现功能。
这样一来问题又出现了,一个while(true)的循环霸占了程序的资源,UI界面就会卡死。解决问题的办法便是并发地处理这些矛盾,即开线程。
开多线程的方法:
1.使用CreateThread()函数:
#include <Windows.h>
#include<iostream>
#include<tchar.h>
using namespace std;
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
printf(_T("sub thread started\n"));
printf(_T("sub thread finished\n"));
return 0;
}
int ma