串行设备驱动_第1页
串行设备驱动_第2页
串行设备驱动_第3页
串行设备驱动_第4页
串行设备驱动_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

串行设备驱动第一页,共三十五页,编辑于2023年,星期六主要内容1、WindowsCE.net串行设备简介2、串口设备驱动3、串行设备API简介4、串口设备操作5、红外设备简介第二页,共三十五页,编辑于2023年,星期六1、WindowsCE.net串行设备简介第三页,共三十五页,编辑于2023年,星期六WindowsCE.net串行设备WindowsCE.net的串行设备应用十分广泛GPRS通信智能数据终端GPS定位系统红外通讯设备第四页,共三十五页,编辑于2023年,星期六使用通用码流进行数据传输,与标准串口完全兼容支持3线/9线串口方式串口模型基本延续了桌面系统的风格和基本的API,但未封装成类第五页,共三十五页,编辑于2023年,星期六串口的7层结构第六页,共三十五页,编辑于2023年,星期六第七页,共三十五页,编辑于2023年,星期六Netarm2410-S串行设备情况UART0(3线)标准格式化信息输出串口;基本通讯串口UART1(3线)基本通讯串口(未使用)UART2(3线)红外通讯串口;基本通讯串口第八页,共三十五页,编辑于2023年,星期六2、串口设备驱动第九页,共三十五页,编辑于2023年,星期六串口设备驱动是一种流驱动BSP中提供的串口驱动模型较为复杂,在结构上也分层为MDD和PDD层第十页,共三十五页,编辑于2023年,星期六第十一页,共三十五页,编辑于2023年,星期六第十二页,共三十五页,编辑于2023年,星期六3、串行设备API简介第十三页,共三十五页,编辑于2023年,星期六串口的APICreateFileOpensaserialport.GetCommStateFillsinadevice-controlblock—DCBstructure—withthecurrentcontrolsettingsforaspecifiedcommunicationdevice.SetCommStateConfiguresacommunicationdeviceaccordingtothespecificationsinaDCBstructure.Thefunctionreinitializesallhardwareandcontrolsettings,butdoesnotemptyI/Oqueues.GetCommTimeoutsRetrievesthetime-outparametersforallread/writeoperationsonaspecifiedcommunicationdevice.SetCommTimeoutsSetsthetime-outparametersforallread/writeoperationsonaspecifiedcommunicationdevice.WriteFileWritesdatatoaserialport,whichtransfersdatatothedeviceattheotherendofaserialconnection.ReadFileReadsdatafromaserialport,whichreceivesdatafromadeviceattheotherendofaserialconnection.第十四页,共三十五页,编辑于2023年,星期六串口的APISetCommMaskSpecifiesasetofeventstomonitorforacommunicationdevice.GetCommMaskRetrievesthevalueoftheeventmaskforaspecifiedcommunicationdevice.WaitCommEventWaitsforaneventtooccurforaspecifiedcommunicationdevice.ThesetofeventsmonitoredbyWaitCommEventiscontainedintheeventmaskassociatedwiththedevicehandle.EscapeCommFunctionDirectsaspecifiedcommunicationdevicetoperformanextendedfunction.OftenusedtosetaserialporttoIRmode.ClearCommBreakRestorescharactertransmissionforaspecifiedcommunicationdeviceandplacesthetransmissionlineinanon-breakstate.ClearCommErrorRetrievescommunicationerrordataandreportsthecurrentstatusofaspecifiedcommunicationdevice.第十五页,共三十五页,编辑于2023年,星期六4、串口设备操作第十六页,共三十五页,编辑于2023年,星期六打开串口//Opentheserialport.hPort=CreateFile(lpszPortName,//PointertothenameoftheportGENERIC_READ|GENERIC_WRITE,//Access(read-write)mode0,//SharemodeNULL,//PointertothesecurityattributeOPEN_EXISTING,//Howtoopentheserialport0,//PortattributesNULL);//Handletoportwithattribute//tocopy第十七页,共三十五页,编辑于2023年,星期六配置串口//InitializetheDCBlengthmember.PortDCB.DCBlength=sizeof(DCB);//Getthedefaultportsettinginformation.GetCommState(hPort,&PortDCB);//ChangetheDCBstructuresettings.PortDCB.BaudRate=9600;//CurrentbaudPortDCB.fBinary=TRUE;//Binarymode;noEOFcheckPortDCB.fParity=TRUE;//EnableparitycheckingPortDCB.fOutxCtsFlow=FALSE;//NoCTSoutputflowcontrolPortDCB.fOutxDsrFlow=FALSE;//NoDSRoutputflowcontrolPortDCB.fDtrControl=DTR_CONTROL_ENABLE;//DTRflowcontroltypePortDCB.fDsrSensitivity=FALSE;//DSRsensitivityPortDCB.fTXContinueOnXoff=TRUE;//XOFFcontinuesTxPortDCB.fOutX=FALSE;//NoXON/XOFFoutflowcontrolPortDCB.fInX=FALSE;//NoXON/XOFFinflowcontrolPortDCB.fErrorChar=FALSE;//DisableerrorreplacementPortDCB.fNull=FALSE;//DisablenullstrippingPortDCB.fRtsControl=RTS_CONTROL_ENABLE;//RTSflowcontrolPortDCB.fAbortOnError=FALSE;//Donotabortreads/writesonerrorPortDCB.ByteSize=8;//Numberofbits/byte,4-8PortDCB.Parity=NOPARITY;//0-4=no,odd,even,mark,spacePortDCB.StopBits=ONESTOPBIT;//0,1,2=1,1.5,2//ConfiguretheportaccordingtothespecificationsoftheDCBstructure.if(!SetCommState(hPort,&PortDCB)){//Couldnotconfiguretheserialport.dwError=GetLastError();MessageBox(hMainWnd,TEXT("Unabletoconfiguretheserialport"),TEXT("Error"),MB_OK);returnFALSE;}第十八页,共三十五页,编辑于2023年,星期六设置超时值//Retrievethetime-outparametersforallreadandwriteoperationsontheport.COMMTIMEOUTSCommTimeouts;GetCommTimeouts(hPort,&CommTimeouts);//ChangetheCOMMTIMEOUTSstructuresettings.CommTimeouts.ReadIntervalTimeout=MAXDWORD;CommTimeouts.ReadTotalTimeoutMultiplier=0;CommTimeouts.ReadTotalTimeoutConstant=0;CommTimeouts.WriteTotalTimeoutMultiplier=10;CommTimeouts.WriteTotalTimeoutConstant=1000;//Setthetime-outparametersforallreadandwriteoperationsontheport.if(!SetCommTimeouts(hPort,&CommTimeouts)){//Couldnotsetthetime-outparameters.MessageBox(hMainWnd,TEXT("Unabletosetthetime-outparameters"),TEXT("Error"),MB_OK);dwError=GetLastError();returnFALSE;}第十九页,共三十五页,编辑于2023年,星期六写串口DWORDdwError,dwNumBytesWritten;WriteFile(hPort,//Porthandle&Byte,//Pointertothedatatowrite1,//Numberofbytestowrite&dwNumBytesWritten,//Pointertothenumberofbytes//writtenNULL//MustbeNULLforWindowsCE);第二十页,共三十五页,编辑于2023年,星期六读串口BYTEByte;DWORDdwBytesTransferred;ReadFile(hPort,//Porthandle&Byte,//Pointertodatatoread1,//Numberofbytestoread&dwBytesTransferred,//Pointertonumberofbytes//readNULL//MustbeNULLforWindowsCE);第二十一页,共三十五页,编辑于2023年,星期六使用通讯事件BYTEByte;DWORDdwBytesTransferred;//Specifyasetofeventstobemonitoredfortheport.SetCommMask(hPort,EV_RXCHAR|EV_CTS|EV_DSR|EV_RLSD|EV_RING);while(hPort!=INVALID_HANDLE_VALUE){//Waitforaneventtooccurfortheport.WaitCommEvent(hPort,&dwCommModemStatus,0);//Re-specifythesetofeventstobemonitoredfortheport.SetCommMask(hPort,EV_RXCHAR|EV_CTS|EV_DSR|EV_RING);if(dwCommModemStatus&EV_RXCHAR){//Loopforwaitingforthedata.do{//Readthedatafromtheserialport.ReadFile(hPort,&Byte,1,&dwBytesTransferred,0);//Displaythedataread.if(dwBytesTransferred==1)ProcessChar(Byte);}while(dwBytesTransferred==1);}第二十二页,共三十五页,编辑于2023年,星期六通讯事件简介Event DescriptionEV_BREAK Abreakoccurredoninput.EV_CTS TheCTSsignalchangedstate.EV_DSR TheDSRsignalchangedstate.EV_ERR Aline-statuserroroccurred.Line-statuserrorsareCE_FRAME,CE_OVERRUN,andCE_RXPARITY.EV_RING Aringindicatorwasdetected.EV_RLSDThereceive-line-signal-detectsignalchangedstate.EV_RXCHAR Acharacterwasreceivedandplacedintheinputbuffer.EV_RXFLAG Theeventcharacterwasreceivedandplacedintheinputbuffer.EV_TXEMPTY Thelastcharacterintheoutputbufferwassent.第二十三页,共三十五页,编辑于2023年,星期六关闭串口BOOLCloseHandle(HANDLEhObject);关闭一个已经打开的对象句柄,使用这种方法来关闭串口参数:待关闭的句柄返回值:是否关闭成功第二十四页,共三十五页,编辑于2023年,星期六5、红外设备简介第二十五页,共三十五页,编辑于2023年,星期六红外通讯红外线是波长在750nm至1mm之间的电磁波,其频率高于微波而低于可见光,是一种人的眼眼看不到的光线。目前无线电波和微波已被广泛应用在长距离的无线通信中,但由于红外线的波长较短,对障碍物的衍射能力差,所以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论