串口通信模块2:串口通信编程基础(打开、配置)

本文介绍了串口通信编程的基础,包括同步和异步操作方式。同步操作会阻塞直到完成,而异步操作则允许后台进行,防止进程阻塞。通常串口操作包括打开、配置、读写和关闭四个步骤。
摘要由CSDN通过智能技术生成

有两种方式可以操作串口:同步操作方式和异步操作方式(即重叠操作方式)。同步操作时,API函数会阻塞直到操作完成以后才能返回(在多线程方式中,虽然不会阻塞主线程,但是仍然会阻塞监听线程);而异步操作方式,API函数会立即返回,操作在后台进行,避免进程阻塞。异步操作方式还允许读、写操作能同时进行(即重叠操作),在实际科研项目中非常有用。但是无论哪种操作方式,一般都通过下面的四个步骤来完成:

1.打开串口;

2.配置串口

3.读写串口

4.关闭串口

1. 打开串口

在很多系统中(包括Windows系统)把文件的概念进行了拓展。无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台,都是用API函数CreateFile()来打开或创建的。该函数的原型是:
<span style="font-size:18px;">HANDLE CreateFile(
LPCTSTR lpFileName,                         //将要打开的串口逻辑名
DWORD dwDesiredAccess,                      //指定串口访问的类型
DWORD dwShareMode,                          //指定共享属性
LPSECURITY_ATTRIBUTES lpSecurityAttributes, //引用安全型属性结构
DWORD dwCreationDistribution,               //创建标志
DWORD dwFlagsAndAttributes,                 //属性描述
HANDLE hTemplateFile                        //对串口而言该参数必须置为NULL
);</span>
同步I/O方式打开串口的示例代码如下:
<span style="font-size:18px;">HANDLE OpenCom()
{
HANDLE hCom;      <span style="font-family: Arial, Helvetica, sans-serif;">//串口句柄</span>
hCom = CreateFile("COM1",     //打开COM1串口
GENERIC_READ|GENERIC_WRITE,   //允许串口读写
0,                            //独占方式,即串行
NULL,  
OPEN_EXISTING,                //打开已存在的文件
0,                           //同步方式打开
NULL);    
if(hCom == (HANDLE)-1)        //打开失败
{
AfxMessageBox("打开串口失败!");
return NULL;
}
return hCom;
}</span>
与同步I/O方式打开的过程与步骤相同,只是参数有点变化,异步I/O打开串口的代码示例如下:
<span style="font-size:18px;">HANDLE OpenCom()
{
HANDLE hCom;
hCom = CreateFile("COM1",
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,   //打开已经存在的文件
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, //重叠方式
NULL);
if(hCom == (HANDLE)-1)
{
AfxMessageBox("打开串口失败!");
return NULL;
}
return hCom;
}</span>

2. 配置串口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值