用api函数实现windows下的串行通讯

本文介绍了在Windows环境下,如何使用API函数实现串行通信。内容包括使用CreateFile打开串口、GetCommState和SetCommState设置串口、BuilderCommDCB填充设备控制块等函数,并强调了Windows下API函数提供的串行通信功能。此外,文章还讨论了读写串口数据的方法,如ReadFile、WriteFile和WaitCommEvent,以及关闭串口的处理。
摘要由CSDN通过智能技术生成

用api函数实现windows下的串行通讯    
              冯华亮   2002年4月     四川·电子科大    
                以往的dos系统是通过dos中断和bios中断向用户提供串行接口的通讯能力。在windows环境下,c++的开发工具既没有提供象dos和bios  
              中那样专门的串行通讯控制方法,也不允许用户直接控制串口的中断。  
              为了保证资源共享,windows系统完全接管了各种硬件资源,使用中断来控制端口将破坏系统的多任务性,使系统的稳定性受到影响。  
              但windows同时也提供了功能强大的api函数使用户能间接的控制串行通讯。  
                   
              1、实现串行通讯的相关api函数  

 

windows下这个任务都是由驱动程序完成的,你的程序不必去管理中断,也不应该直接管理中断

发表者:rkt_dijkstra

waitforcomevent();  
   
  一个类似的函数,到msn看看,

发表者:glmis

在windows下可以用createfile()   打开串口,然后用readfile()     writefile来读写串口。  
  最好用一个线程来监视串口事件,可以用waitcommevent来等待事件。  
  具体可以查看msdn。

发表者:hanlearn

vc下采用activx控件mscomm32.ocx,该组件封装了中断机制,你只需应用该类的成员函数即可,注意在oncomm()事件函数里处理。  
  还有就是采用bc3.1或tc下中断机制编写控制台程序。

WaitCommEvent、WaitForSingleObject+GetOverlappedResult等函数均可以检测到串口是否有数据。  
                    
              api函数不仅提供了打开和读写通讯端口的操作方法,还提供了名目繁多的函数以支持对串行通讯的各种操作。常用函数及作用如表5-1所示。  
              表5-1   常用串行通讯api函数及其作用  
                          函数名   作用  
                          createfile 打开串口  
                          getcommstate   检测串口设置  
                          setcommstate 设置串口  
                          buildercommdcb 用字符串中的值来填充设备控制块  
                          getcommtimeouts 检测通信超时设置  
                          setcommtimeouts 设置通信超时参数  
                          setcommmask 设定被监控事件  
                          waitcommevent 等待被监控事件发生  
                          waitformultipleobjects 等待多个被监测对象的结果  
                          writefile 发送数据  
                          readfile   接收数据  
                          getoverlappedresult 返回最后重叠操作结果  
                          purgecomm 清空串口缓冲区,退出所有相关操作  
                          clearcommerror 更新串口状态结构体,并清除所有串口硬件错误  
                          closehandle   关闭串行口  
   
              2、打开串口    
                   
                  函数createfile原本用于打开文件,但它同样可用于打开一个通信端口。与系统中其他对象一样,通信端口也是用句柄来标识的。  
              createfile函数返回被操作的通信端口句柄,其调用方法如下:  
              handle   createfile   (  
              lpctstr   lpfilename,         //指向文件名字符串的指针  
              dword   dwdesireaccess,           //操作模式  
              dword   dwsharemode,            //共享方式  
              lpsecurity_attributes     lpsecurityattributes,     //指向安全属性的指针  
              dword   dwcreationdistribution, //文件建立方式  
            dword   dwflagsandattributes     //文件属性  
              handle   htemplatefile //模板文件句柄  
                                              )              
              lpfilename:指向一个以null结束的字符串,该串指定了要创建、打开或截断的文件、管道、通信源、磁盘设备或控制台的名字。  
              当用createfile打开串口时,这个参数可用“com1”指定串口1,用“com2”指定串口2,依此类推。  
               
  dwdesireaccess:   指定对文件访问的类型,该参数可以为generic_read(指定对该文件的读访问权)  
              或eneric_write两个值之一或同时为为这两个值。用eneric_read|generic_write则指定可对串口进行读写;  
              <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值