易币付官方网站:Win32串口编程发布日期:2024-04-15 浏览次数:
本文摘要:Win32串口编程  Win32下串口通信与16位串口通信有相当大的区别。

Win32串口编程  Win32下串口通信与16位串口通信有相当大的区别。在Win32下,可以用于两种编程方式构建串口通信,其一是调用的Windows的API函数,其二是用于ActiveX控件。

用于API调用,可以确切地掌控串口通信的机制,熟知各种配备和权利灵活性使用有所不同的流控展开串口通信。下面讲解串口操作者的基本知识。  关上串口:用于CreateFile()函数,可以关上串口。

有两种方法可以关上串口,一种是实时方式(NonOverlapped),另外一种异步方式(Overlapped)。用于Overlapped关上时,必要的方法是:  HANDLEhComm;  hComm=CreateFile(gszPort,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);  if(hComm==INVALID_HANDLE_VALUE)  //erroropeningport;abort  配备串口:  1.DCB配备  DCB(DeviceControlBlock)结构定义了串口通信设备的掌控设置。许多最重要设置都是在DCB结构中设置的,有三种方式可以初始化DCB。

  (1)通过GetCommState()函数得DCB的初始值,其用于方式为:  DCBdcb={0};  if(!GetCommState(hComm,&dcb))  //ErrorgettingcurrentDCBsettings  else  //DCBisreadyforuse.  (2)用BuildCommDCB()函数初始化DCB结构,该函数填满DCB的波特率、奇偶校验类型、数据位、暂停位。对于流控成员函数设置了缺省值。其用法是:  DCBdcb;  FillMemory(&dcb,sizeof(dcb),0);  dcb.DCBlength=sizeof(dcb);  if(!BuildCommDCB(9600,n,8,1,&dcb)){  //CouldntbuildtheDCB.Usuallyaproblem  //withthecommunicationsspecificationstring.  returnFALSE;  }  else  //DCBisreadyforuse.  (3)用SetCommState()函数手动设置DCB初值。

用法如下:  DCBdcb;  FillMemory(&dcb,sizeof(dcb),0);  if(!GetCommState(hComm,&dcb))//getcurrentDCB  //ErrorinGetCommState  returnFALSE;  //UpdateDCBrate.  dcb.BaudRate=CBR_9600;  //Setnewstate.  if(!SetCommState(hComm,&dcb))  //ErrorinSetCommState.  Possiblyaproblemwiththecommunications  //porthandleoraproblemwiththeDCBstructureitself.  手动设置DCB值时,DCB的结构的各成员的含义,可以参见MSDN协助。


本文关键词:易币付官方网站

本文来源:易币付官方网站-www.etiwari.com

官方微信关闭