主页 > 科技 > 深入浅出VC++串口编程之基于Win32API:亚博APP安全有保障

深入浅出VC++串口编程之基于Win32API:亚博APP安全有保障

亚博APP安全有保障 科技 2021年05月31日
本文摘要:1、API描述 在WIN32API中,串口用以文档方法进行访谈,其操作者的API大部分与文档操作者的API完全一致。

亚博网赌信誉有保障

1、API描述  在WIN32API中,串口用以文档方法进行访谈,其操作者的API大部分与文档操作者的API完全一致。  合上串口  Win32中作为合上串口的API函数为CreateFile,其原形为:HANDLECreateFile( LPCTSTRlpFileName,//将要合上的串口逻辑性名,如COM1或COM2 DWORDdwAccess,//登陆串口访谈的种类,能够是载入、加载或二者三大 DWORDdwShareMode,//登陆共享属性,因为串口没法共享,该主要参数必不可少置为0 LPSECURITY_ATTRIBUTESlpsa,//提及安全系数属性构造,缺省值为NULL DWORDdwCreate,//开创标示,对串口操作者该主要参数必不可少置为OPENEXISTING DWORDdwAttrsAndFlags,//属性描述,作为登陆该串口否可进行多线程操作者, //FILE_FLAG_OVERLAPPED:可用以多线程的I/O HANDLEhTemplateFile//偏向模版文档的句柄,对串口来讲该主要参数必不可少置为NULL);  比如,下列程序流程作为以即时载入方法合上串口COM1:HANDLEhCom;DWORDdwError;hCon=CreateFile(COM1,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);if(hCom==(HANDLE)0xFFFFFFFF){ dwError=GetLastError(); MessageBox(dwError);}  针对dwAttrsAndFlags主要参数及FILE_FLAG_OVERLAPPED标示的来历,可表明以下:Windows文档操作者分为即时I/O和重合I/O(OverlappedI/O)二种方法,在即时I/O方法中,API不容易堵塞直至操作者顺利完成之后才可以返回(在线程同步方法中,尽管会堵塞主线任务程,可是仍然不容易堵塞监视进程);而在重合I/O方法中,API不容易马上返回,操作者在后台管理进行,避免 进程的堵塞。重合I/O更加灵活,它还可以搭建堵塞(比如我们可以设定一定要载入到一个数据信息才可以进行到下一步操作者)。

亚博APP安全有保障

假如进行I/O操作者的API在没顺利完成操作者的状况下返回,我们可以根据启用GetOverLappedResult()涵数堵塞到I/O操作者顺利完成后返回。  配置串口  配置串口是根据变化机器设备操控块DCB(DeviceControlBlock)的组员变量类型来搭建的,接收缓冲区和发送缓冲区的尺寸可根据SetupComm涵数来设定。  DCB结构体定义为:typedefstruct_DCB{//dcb DWORDDCBlength;//sizeof(DCB) DWORDBaudRate;//currentbaudrate DWORDfBinary:1;//binarymode,noEOFcheck DWORDfParity:1;//enableparitychecking DWORDfOutxCtsFlow:1;//CTSoutputflowcontrol DWORDfOutxDsrFlow:1;//DSRoutputflowcontrol DWORDfDtrControl:2;//DTRflowcontroltype DWORDfDsrSensitivity:1;//DSRsensitivity DWORDfTXContinueOnXoff:1;//XOFFcontinuesTx DWORDfOutX:1;//XON/XOFFoutflowcontrol DWORDfInX:1;//XON/XOFFinflowcontrol DWORDfErrorChar:1;//enableerrorreplacement DWORDfNull:1;//enablenullstripping DWORDfRtsControl:2;//RTSflowcontrol DWORDfAbortOnError:1;//abortreads/writesonerror DWORDfDummy2:17;//reserved WORDwReserved;//notcurrentlyused WORDXonLim;//transmitXONthreshold WORDXoffLim;//transmitXOFFthreshold BYTEByteSize;//numberofbits/byte,4-8 BYTEParity;//0-4=no,odd,even,mark,space BYTEStopBits;//0,1,2=1,1.5,2 charXonChar;//TxandRxXONcharacter charXoffChar;//TxandRxXOFFcharacter charErrorChar;//errorreplacementcharacter charEofChar;//endofinputcharacter charEvtChar;//receivedeventcharacter WORDwReserved1;//reserved;donotuse}DCB;而SetupComm涵数的原形则为:BOOLSetupComm( HANDLEhFile,//handletocommunicationsdevice DWORDdwInQueue,//sizeofinputbuffer DWORDdwOutQueue//sizeofoutputbuffer);  下列程序流程将串口设置为:串口波特率为9600,数据信息十位数为7位,中止位为2位,极校检,接收缓冲区和发送缓冲区尺寸皆为1024个字节数,最终用PurgeComm涵数中断全部的后台管理存取数据并清除接收缓冲区和发送缓冲区:DCBdcb;dcb.BaudRate=9600;//串口波特率为9600dcb.ByteSize=7;//数据信息十位数为7位dcb.Parity=EVENPARITY;//极校检dcb.StopBits=2;//2个中止位dcb.fBinary=TRUE;dcb.fParity=TRUE;if(!SetCommState(hCom,dcb)){ MessageBox(串口设定不正确!。

亚博网赌信誉有保障


本文关键词:深入浅出,VC++,串口,编程,之,亚博网赌信誉有保障,基于,Win32API,亚博

本文来源:亚博网赌信誉有保障-www.worldfairfilm.com

标签: 亚博   深入浅出   Win32API   基于   串口   VC++     编程