使用Win32创建串口通讯程序

使用Win32创建串口通讯程序

ID:41032297

大小:101.50 KB

页数:7页

时间:2019-08-14

使用Win32创建串口通讯程序_第1页
使用Win32创建串口通讯程序_第2页
使用Win32创建串口通讯程序_第3页
使用Win32创建串口通讯程序_第4页
使用Win32创建串口通讯程序_第5页
资源描述:

《使用Win32创建串口通讯程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、comcool_code.zip使用Win32创建串口通讯程序作者:konchat翻译:PowerCPP下载本文示例代码介绍:本文的目的是介绍如何在Win32中处理串口。串口通讯可以通过多种技术实现,例如:ActiveX,I/O存取和文件操作。本文介绍Win32平台下通过文件操作技术使用串口。程序员可以使用MicrosoftVisualC++Version6.0所提供的kernel32.lib。在MicrosoftWindows(2000,Me,XPand95/98)中,串口作为文件处理。因此可以通过Windows文件创建函数打开串口。文章不仅介绍了串口通讯,也介绍了在串口通讯应用

2、程序中实现多任务,多任务可以使串口通讯应用程序在同一时间处理更多的任务,例如:读数据任务,发送数据任务,GUI任务等。以下主题描述了Win32中基本的串口操作:初始化/打开串口通讯·创建端口句柄·获取配置(DCB)·修改配置·保存配置·设置通讯超时接收/发送数据·发送数据·接收数据·关闭串口设计步骤:初始化/打开串口打开串口的第一步是初始化或设置串口配置,目的是创建串口代理,整篇文章我们都将用文件句柄作为串口代理。创建端口句柄串口句柄是可以被用来存取的串口对象句柄,创建串口句柄的函数是CreateFile,如下代码所示:handlePort_=CreateFile(portName

3、,//端口设备:默认"COM1"GENERIC_READ

4、GENERIC_WRITE,//设备打开模式:允许读写0,//不共享NULL,//默认安全设置OPEN_EXISTING,//打开方式:打开已经存在的端口0,//默认NULL);//默认如图2所示,portName="COM1":portName示一个constchar*变量,它指定想创建串口句柄的端口名称。图2:CreateFile函数获取配置在控制设备中获取当前配置,配置中包含了用于设置串口通讯设备的参数。可以用GetCommState函数得到当前设备配置并用指定通讯设备的当前配置填充设备控制块(DCB结构),如下代码所

5、示://获取串口当前配置if(GetCommState(handlePort_,&config_)==0){AfxMessageBox("Getconfigurationporthasproblem.");returnFALSE;}修改配置当你已经在DCB结构中获取串口配置,你应该修改其中的参数,如下代码所示://指定用户参数config_.BaudRate=dcb.BaudRate;//波特率config_.StopBits=dcb.StopBits;//停止位config_.Parity=dcb.Parity;//奇偶校验config_.ByteSize=dcb.ByteSiz

6、e;//数据位·DWORDBaudRate:波特率(默认=9600)·BYTEStopBits:0,1,2=1,1.5,2(默认=0)·BYTEParity:0-4=无,奇,偶,标志,空格(默认=0)·BYTEByteSize:数据位,4-8(默认=8)对于典型的通讯,建议程序员使用默认值。图3所示,Watch对话框显示了典型通讯使用的默认值。图3:串口配置保存配置下一步是将已经修改的配置保存到设备控制中。调用SetCommStateAPI函数保存配置。SetCommState函数设备控制块(DCB结构)配置通讯设备。该函数重新初始化所有的硬件控制设定,但不清空输入输出队列。代码如

7、下所示:if(SetCommState(handlePort_,&config_)==0){AfxMessageBox("Setconfigurationporthasproblem.");returnFALSE;}设置通讯超时开启端口的最后一步是通过使用COMMTIMEOUTS数据结构和调用SetCommTimeouts函数进行通讯超时设置。如下代码所示://COMMTIMEOUTS对象COMMTIMEOUTScomTimeOut;//接收时,两字符间最大的时延comTimeOut.ReadIntervalTimeout=3;//读取每字节的超时comTimeOut.ReadTo

8、talTimeoutMultiplier=3;//读串口数据的固定超时//总超时=ReadTotalTimeoutMultiplier*字节数+ReadTotalTimeoutConstantcomTimeOut.ReadTotalTimeoutConstant=2;//写每字节的超时comTimeOut.WriteTotalTimeoutMultiplier=3;//写串口数据的固定超时comTimeOut.WriteTotalTimeoutConstant=2;/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。