Windows编程:串行通信与端口打开方法
需积分: 9 152 浏览量
更新于2024-07-23
收藏 87KB PDF 举报
"Serial Communication in Win32.pdf 是关于在Windows环境下进行串行通信的编程指南,涵盖了如何打开端口、非重叠和重叠操作等主题。"
在Windows编程中,串行通信(Serial Communication)是设备之间通过串行接口进行数据传输的一种方式,常见于打印机、调制解调器等硬件设备的连接。本文档主要讨论了在Win32环境下如何使用串行通信,特别是如何利用Windows API函数`CreateFile`来打开和管理串行端口。
`CreateFile`函数是Windows API中的一个核心功能,用于打开或创建文件、管道、设备等资源,包括串行通信端口。当需要打开串行端口时,`CreateFile`的参数设置至关重要。对于重叠(Overlapped)操作,这是异步I/O的一种形式,允许系统在等待I/O操作完成时执行其他任务,提高程序效率。以下是如何使用`CreateFile`进行重叠操作的示例代码:
```cpp
HANDLE hComm;
hComm = CreateFile(
gszPort, // 端口名称,如"COM1"
GENERIC_READ | GENERIC_WRITE, // 请求读写权限
0, // 不共享,串行端口不支持文件那样的共享模式
NULL, // 默认的安全属性
OPEN_EXISTING, // 只打开已存在的端口
FILE_FLAG_OVERLAPPED, // 标志为重叠操作
NULL // 无模板文件
);
if (hComm == INVALID_HANDLE_VALUE) {
// 打开端口失败,处理错误并退出
}
```
如果将`FILE_FLAG_OVERLAPPED`标志移除,`CreateFile`将使用非重叠(Non-Overlapped)操作,即同步I/O,这会阻塞调用线程直到I/O操作完成。非重叠模式适合简单的、不需要异步处理的串行通信场景。
在打开串行通信端口时,文档指出`fdwShareMode`参数必须设置为零,因为串行端口不支持像文件那样被多个进程共享。然而,使用Telephony Application Programming Interfaces(TAPI)的应用可以利用TAPI函数来实现不同应用间的资源共享。
除了`CreateFile`,在进行串行通信时还需要配置端口参数,如波特率、数据位、停止位、校验位等,这通常通过`DCB`(Device Control Block)结构和`SetCommState`函数完成。同时,`SetCommMask`用于设置串口事件的监视,`WaitForSingleObject`和`GetCommEvents`配合使用可监听并响应串行端口的事件。
`Serial Communication in Win32`探讨了如何在Windows系统下有效地进行串行通信编程,包括如何正确打开端口、选择合适的操作模式以及配置通信参数,这些都是开发涉及串行通信应用时的关键技术点。
2011-08-19 上传
2021-11-02 上传
2023-04-02 上传
点击了解资源详情
2019-09-22 上传
2021-09-29 上传
2021-04-04 上传
2021-10-03 上传
2021-08-11 上传
camsi
- 粉丝: 0
- 资源: 16
最新资源
- UdacityCICDDemo:CICD演示项目
- Basic-Backend-Contact-Form-NodeJS
- rentrez:使用R与NCBI entrez交谈
- jsxhint-loader:jshint-jsx Webpack加载器
- webpack_self
- wind.zip_matlab例程_matlab_
- D1ce:这是一个棘手的骰子IOS应用程序
- DataHarmonizer
- clockette:世界时钟Web应用程序
- ropenaq:OpenAQ API的R包
- time-formatter-js:js时间类型格式化工具库(兼容的IE):自定义时间格式,时间排序,间隔天数,前n天的日期。
- example-flac3d-mohr.zip_Windows编程_Visual_C++_
- teach-shiny:Shiny Train the Trainer研讨会的材料
- FedData:自动下载可从多个联合数据源获得的地理空间数据的功能
- Matlab 仿真 CSMA/CA
- router:简单JavaScript路由器