如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
基于WindowsAPI的串行通信程序设计一、串行通信API函数简介1、打开串口要使用串口,必须先打开串口。在VC++中,打开串口与打开文件使用相同的函数,其原型为:HANDLECreateFile(LPCTSTRlpFileName,//指向串口名称字符串,如“COM1”DWORDdwDesiredAccess,//访问模式,读、写DWORDdwShareMode,//共享模式,0=独占LPSECURITY_ATTRIBUTESlpSecurityAttributes,//安全属性,NULLDWORDdwCreationDisposition,//创建方式,OPEN_EXISTINGDWORDdwFlagsAndAttributes,//文件属性,0HANDLEhTemplateFile//临时文件句柄,NULL);2、对串口进行初始设置打开串口后,应设置其工作参数和工作环境。主要为:(1)设置通信的参数串口的参数用一个DCB结构描述。该结构有28个成员,这里仅列出4个关键成员:typedefstruct_DCB{……DWORDBaudRate;//波特率BYTEByteSize;//每个字符的位数BYTEParity;//0=无校验,1=奇校验,2=偶校验BYTEStopBits;//停止位数。0,1,2=1,1.5,2……);下面的程序段是对DCB结构的配置代码样例:DCBMyDcb;//定义DCB结构GetCommState(MyHand,&MyDcb);//得到系统的配置MyDcb.BaudRate=2400;//将波特率改为2400bpsMyDcb.ByteSize=8;//8位数据MyDcb.Parity=0;//无校验位MyDcb.StopBits=1;//1停止位SetCommState(MyHand,&MyDcb);//按新参数配置串口(2)设置接收和发送缓冲区的大小在Windows下,用户接收和发送数据的操作形式如下:接收数据系统会自动地将串口接收到的数据存放到内存中的一个接收缓冲区。用户程序只需从该缓冲区得到数据,不必直接访问芯片的数据接收缓冲器。发送数据用户程序只需将要发送的数据写入一个发送缓冲区即可。一旦写入,系统会自动发送出去。因此,用户程序应根据需要设置接收和发送缓冲区的大小。至于接收和发送缓冲区的位置在何处,用户程序不必关心。函数原型:BOOLSetupComm(HANDLEhFile,//串口的句柄DWORDdwInQueue,//接收缓冲区的大小,字节数DWORDdwOutQueue//发送缓冲区的大小,字节数);(3)设置读写超时时间读超时用户程序从接收缓冲区读取数据时,若在指定的时间内未读到数据,称为读超时。写超时用户程序将要发送的数据写入发送缓冲区后。若在指定的时间内未将写入的数据全部发送出去,称为写超时。因此,用户程序应根据实际情况设置读超时和写超时。读/写超时由一个结构来描述,其定义为:typedefstruct_COMMTIMEOUTS{DWORDReadIntervalTimeout;//读间隔DWORDReadTotalTimeoutMultiplier;//读时间系数DWORDReadTotalTimeoutConstant;//读时间常数DWORDWriteTotalTimeoutMultiplier;//写时间系数DWORDWriteTotalTimeoutConstant;//写时间常数}COMMTIMEOUTS,*LPCOMMTIMEOUTS;(4)读写操作读操作函数原型:BOOLReadFile(HANDLEhFile,//串口句柄LPVOIDlpBuffer,//指向读得的数据存放的变量DWORDnNumberOfBytesToRead,//希望读到多少字节LPDWORDlpNumberOfBytesRead,//返回实际读到多少字节LPOVERLAPPEDlpOverlapped//指向一个OVERLAPPED结构,NULL);(5)用毕,关闭串口CloseHandle(hCom);//参数为串口句柄