调用Windows的API函数串口编程

调用Windows的API函数串口编程

ID:39583346

大小:70.50 KB

页数:10页

时间:2019-07-06

调用Windows的API函数串口编程_第1页
调用Windows的API函数串口编程_第2页
调用Windows的API函数串口编程_第3页
调用Windows的API函数串口编程_第4页
调用Windows的API函数串口编程_第5页
资源描述:

《调用Windows的API函数串口编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、API串口通信部分1.串口的操作可以有两种操作方式:同步操作方式和重叠操作方式(又称为异步操作方式)。同步操作时,API函数会阻塞直到操作完成以后才能返回(在多线程方式中,虽然不会阻塞主线程,但是仍然会阻塞监听线程);而重叠操作方式,API函数会立即返回,操作在后台进行,避免线程的阻塞。2.一般都通过四个步骤来完成:打开串口,配置串口,读写串口,关闭串(1)打开串口11.CreateFile来打开或创建的。该函数的原型为:HANDLECreateFile(LPCTSTRlpFileName,//将要打开的串口逻辑名,如“COM1”;          

2、DWORDdwDesiredAccess,//指定串口访问的类型,可以是读取写入或二者并列;DWORDdwShareMode,//指定共享属性,由于串口不能共享,该参数必须置为0;         LPSECURITY_ATTRIBUTESlpSecurityAttributes,//引用安全性属性结构,缺省值为NULL;          DWORDdwCreationDistribution,//创建标志,对串口操作该参数必须置为OPEN_EXISTING;DWORDdwFlagsAndAttributes,//属性描述,用于指定该串口是否进行异步

3、操作,该值为FILE_FLAG_OVERLAPPED,//表示使用异步的I/O;该值为0,表示同步I/O操作;HANDLEhTemplateFile);//对串口而言该参数必须置为NULL;12.同步I/O方式打开串口的示例代码:HANDLEhCom; //全局变量,串口句柄 hCom=CreateFile("COM1",//COM1口  GENERIC_READ

4、GENERIC_WRITE,//允许读和写  0,//独占方式  NULL,  OPEN_EXISTING,//打开而不是创建  0,//同步方式  NULL); if(hCom==(HAN

5、DLE)-1) {  AfxMessageBox("打开COM失败!");  returnFALSE; } returnTRUE;13.异步I/O方式打开串口的示例代码:HANDLEhCom; //全局变量,串口句柄 hCom=CreateFile("COM1", //COM1口            GENERIC_READ

6、GENERIC_WRITE,//允许读和写            0, //独占方式            NULL,            OPEN_EXISTING, //打开而不是创建            FILE_AT

7、TRIBUTE_NORMAL

8、FILE_FLAG_OVERLAPPED,//重叠方式            NULL); if(hCom==INVALID_HANDLE_VALUE) {  AfxMessageBox("打开COM失败!");  returnFALSE; }   returnTRUE;(2)配置串口21.需要一个DCB结构。DCB结构包含了诸如波特率、数据位数、奇偶校验和停止位数等信息。在查询或配置串口的属性时,都要用DCB结构来作为缓冲区。(结构详见后)22.一般用CreateFile打开串口后,可以调用GetCommState函数来

9、获取串口的初始配置。GetCommState函数可以获得COM口的设备控制块,从而获得相关参数:BOOLGetCommState(  HANDLEhFile,//标识通讯端口的句柄  LPDCBlpDCB//指向一个设备控制块(DCB结构)的指针 );23.要修改串口的配置,应该先修改DCB结构,然后再调用SetCommState函数设置串口。SetCommState函数设置COM口的设备控制块:BOOLSetCommState(  HANDLEhFile,  LPDCBlpDCB );24.程序一般还需要设置I/O缓冲区的大小和超时。Windows用

10、I/O缓冲区来暂存串口输入和输出的数据。如果通信的速率较高,则应该设置较大的缓冲区。调用SetupComm函数可以设置串行口的输入和输出缓冲区的大小。BOOLSetupComm(   HANDLEhFile, //通信设备的句柄   DWORDdwInQueue, //输入缓冲区的大小(字节数)   DWORDdwOutQueue //输出缓冲区的大小(字节数)  );25.在读写串口之前,要用PurgeComm()函数清空缓冲区,该函数原型:BOOLPurgeComm(HANDLEhFile, //串口句柄   DWORDdwFlags //需要完成

11、的操作:PURGE_TXABORT  中断所有写操作并立即返回,即使写操作还没有完成。PURG

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

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

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