欢迎来到天天文库
浏览记录
ID:18127002
大小:45.00 KB
页数:10页
时间:2018-09-14
《用api函数实现串行通讯》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、用API函数实现串行通讯责任编辑:admin 更新日期:2005-8-6以往的DOS系统是通过DOS中断和BIOS中断向用户提供串行接口的通讯能力。在Windows环境下,C++的开发工具既没有提供象DOS和BIOS中那样专门的串行通讯控制方法,也不允许用户直接控制串口的中断。为了保证资源共享,Windows系统完全接管了各种硬件资源,使用中断来控制端口将破坏系统的多任务性,使系统的稳定性受到影响。但Windows同时也提供了功能强大的API函数使用户能间接的控制串行通讯。1、实现串行通讯的相关
2、API函数API函数不仅提供了打开和读写通讯端口的操作方法,还提供了名目繁多的函数以支持对串行通讯的各种操作。常用函数及作用如表5-1所示。表5-1常用串行通讯API函数及其作用函数名 作用CreateFile打开串口GetCommState 检测串口设置SetCommState设置串口BuilderCommDCB用字符串中的值来填充设备控制块GetCommTimeouts检测通信超时设置SetCommTimeouts设置通信超时参数SetCommMask设定被监控事件WaitCommEve
3、nt等待被监控事件发生WaitForMultipleObjects等待多个被监测对象的结果WriteFile发送数据ReadFile 接收数据GetOverlappedResult返回最后重叠(异步)操作结果PurgeComm清空串口缓冲区,退出所有相关操作ClearCommError更新串口状态结构体,并清除所有串口硬件错误CloseHandle 关闭串行口2、打开串口函数CreateFile原本用于打开文件,但它同样可用于打开一个通信端口。与系统中其他对象一样,通信端口也是用句柄来标识的
4、。CreateFile函数返回被操作的通信端口句柄,其调用方法如下:HANDLECreateFile(LPCTSTRlpFileName, //指向文件名字符串的指针DWORDdwDesireAccess, //操作模式DWORDdwShareMode, //共享方式LPSECURITY_ATTRIBUTES lpSecurityAttributes, //指向安全属性的指针DWORDdwCreationDistribution,//文件建立方式D
5、WORDdwFlagsAndAttributes //文件属性HANDLEhTemplateFile) //模板文件句柄lpFileName:指向一个以NULL结束的字符串,该串指定了要创建、打开或截断的文件、管道、通信源、磁盘设备或控制台的名字。当用CreateFile打开串口时,这个参数可用“COM1”指定串口1,用“COM2”指定串口2,依此类推。dwDesireAccess:指定对文件访问的类型,该参数可以为GENERIC_READ(指定对该文件的读访问权)或ENERIC_W
6、RITE(指定该文件的写访问权)两个值之一或同时为为这两个值。用ENERIC_READ
7、GENERIC_WRITE则指定可对串口进行读写;dwShareMode:指定此文件可以怎样被共享。因为串行口不支持任何共享模式,所以dwShareMode必须设为0;lpSecurityAttributes定义安全属性,一般不用,可设为NULL。Win9x下该参数被忽略;dwCreationDistribution定义文件创建方式,对串口必须设为OPEN_EXISTING,表示打开已经存在的文件;dwFla
8、gsAndAttributes为该文件指定定义文件属性和标志,这个程序中设为FILE_FLAG_OVERLAPPED,表示异步通信方式;hTemplateFile指向一个模板文件的句柄,串口无模板可言,设为NULL。在Windows9x下该参数必须为NULL。用异步读写方式打开串口1的函数调用如下:m_hComm=CreateFile(“COM1”, //打开串口1 GENERIC_READ
9、GENERIC_WRITE,//读写方式
10、 0, //不能共享 NULL, //不用安全结构 OPEN_EXISTING, //打开已存在的设备 FILE_FLAG_OVERLAPPED, //异步方式
此文档下载收益归作者所有