单片机串口接收——WIN32多线程基础

本文是作者学习串口编程的笔记,探讨了在串口通信中因不确定的接收时间需要使用多线程的原因。通过创建线程解决while(true)循环导致的UI界面卡死问题,介绍了使用CreateThread()函数创建线程的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    注:此文为笔者学习串口编程时的笔记,最初版本可能凌乱且非常不完整,笔者会逐渐完善此文,如果你熟悉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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值