




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/* YFCOM.cpp /* YFSoft 2005 - 2006(C) /* /* 200644 /* /* /* /* V1.0 /* #include stdafx.h #include yfcom.h / HANDLE m_COM_Handle; / OVERLAPPED m_OverlappedRead, m_OverlappedWrite; /* / OpenCom / long lngPort, / char *cfgMessage, 9600,e,8,1 / long lngInSize, / long lngOutSize / long / / / / / 200644 / / / /* long OpenCom(long lngPort,char *cfgMessage,long lngInSize,long lngOutSize) try char szMsg255; DCB dcb; / if (lngPort9) sprintf( szMsg, .COM%d, lngPort ); else sprintf( szMsg, COM%d, lngPort ); / m_COM_Handle = CreateFile(szMsg, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED , NULL ); if( m_COM_Handle = NULL ) return( 2 ); / memset(&(m_OverlappedRead), 0, sizeof (OVERLAPPED); memset(&(m_OverlappedWrite), 0, sizeof (OVERLAPPED); /dcb dcb.DCBlength = sizeof( DCB ); / GetCommState(m_COM_Handle , &dcb ); /, 9600,n,8,1 sprintf(szMsg,COM%d:%s, lngPort,cfgMessage); BuildCommDCB(szMsg,&dcb); /- dcb.fBinary=TRUE; / dcb.fOutxCtsFlow=FALSE; /CTS dcb.fOutxDsrFlow=FALSE; /DSR dcb.fDtrControl=DTR_CONTROL_DISABLE; /DTR dcb.fDsrSensitivity=FALSE; /DTR dcb.fTXContinueOnXoff=TRUE; / dcb.fOutX=FALSE; / dcb.fInX =FALSE; / dcb.fErrorChar=FALSE; / dcb.fNull=FALSE; /NULL dcb.fRtsControl=RTS_CONTROL_ENABLE; /RTS dcb.fAbortOnError=FALSE; / dcb.fDummy2=0; / dcb.wReserved=0; /0 dcb.XonLim=0; /XOFF dcb.XoffLim=0; /XOFF 2006-5-2 19:47 ikkoku01 6 2 dcb.XonChar=0; /XON dcb.XoffChar=0; /XOFF dcb.ErrorChar=0; / dcb.EofChar=0; / dcb.EvtChar=0; / dcb.wReserved1=0; / /dcb.BaudRate =9600; / /dcb.Parity=0; / /dcb.ByteSize=8; / /dcb.StopBits=0; / /- if(dcb.Parity=0 ) / 0-4=None,Odd,Even,Mark,Space dcb.fParity=FALSE; / else dcb.fParity=TRUE; / sprintf(szMsg,COM%d:%d,%d,%d,%d (InSize:%ld,OutSize:%ld), lngPort,dcb.BaudRate,dcb.Parity,dcb.ByteSize,dcb.StopBits,lngInSize,lngOutSize); / COMMTIMEOUTS CommTimeOuts; / CommTimeOuts.ReadIntervalTimeout =0; /ms readfile CommTimeOuts.ReadTotalTimeoutMultiplier =0; /() CommTimeOuts.ReadTotalTimeoutConstant = 2500; /ms CommTimeOuts.WriteTotalTimeoutMultiplier =0; /() CommTimeOuts.WriteTotalTimeoutConstant = 2500; / SetCommTimeouts( m_COM_Handle, &CommTimeOuts ); / m_OverlappedRead.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); m_OverlappedWrite.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); if( !SetCommState( m_COM_Handle, &dcb ) | / !SetupComm( m_COM_Handle, lngInSize, lngOutSize ) | / m_OverlappedRead.hEvent=NULL | m_OverlappedWrite.hEvent=NULL) DWORD dwError = GetLastError(); / if( m_OverlappedRead.hEvent != NULL ) CloseHandle( m_OverlappedRead.hEvent ); if( m_OverlappedWrite.hEvent != NULL ) CloseHandle( m_OverlappedWrite.hEvent ); CloseHandle( m_COM_Handle ); m_COM_Handle=NULL; return dwError; return( 0 ); catch(.) return -1; /* / CloseCom / / long / / / / / 200644 / / / /* long CloseCom() try if(m_COM_Handle = NULL ) return( 1 ); SetCommMask(m_COM_Handle ,NULL); SetEvent(m_OverlappedRead.hEvent); SetEvent(m_OverlappedWrite.hEvent); 2006-5-2 19:47 ikkoku01 6 3 if( m_OverlappedRead.hEvent != NULL ) CloseHandle( m_OverlappedRead.hEvent ); if( m_OverlappedWrite.hEvent != NULL ) CloseHandle( m_OverlappedWrite.hEvent ); if (CloseHandle( m_COM_Handle )=FALSE)return (2); m_COM_Handle = NULL; catch(.) return (3); return( 0 ); /* / SendData / BYTE *bytBuffer, / long lngSize / long / / / / / 200644 / / / /* long SendData(BYTE *bytBuffer, long lngSize ) try if( m_COM_Handle = NULL ) return( -1 ); DWORD dwBytesWritten=lngSize; BOOL bWriteStat; COMSTAT ComStat; DWORD dwErrorFlags; ClearCommError(m_COM_Handle,&dwErrorFlags,&ComStat); bWriteStat=WriteFile(m_COM_Handle, bytBuffer, lngSize, &dwBytesWritten, &(m_OverlappedWrite); if(!bWriteStat) if(GetLastError()=ERROR_IO_PENDING) GetOverlappedResult(m_COM_Handle,&(m_OverlappedWrite),&dwBytesWritten,TRUE); / else dwBytesWritten=0; return (long)dwBytesWritten; catch(.) return -1; /* / AcceptData / BYTE *bytBuffer, / long lngSize / long / / / / / 200644 / / / /* long AcceptData(BYTE *bytBuffer, long lngSize ) try if( m_COM_Handle = NULL ) return( -1 ); DWORD lngBytesRead=lngSize; BOOL fReadStat; DWORD dwRes=0; / fReadStat=ReadFile(m_COM_Handle,bytBuffer,lngSize,&lngBytesRead,&(m_OverlappedRead); /Sleep(1); if( !fReadStat ) if( GetLastError() = ERROR_IO_PENDING ) / I/O dwRes=WaitForSingleObject(m_OverlappedRead.hEvent,1000); / switch(dwRes) case WAIT_OBJECT_0: / if(GetOverlappedResult(m_COM_Handle,&(m_OverlappedRead),&lngBytesRead,FALSE)=0) / return -2; break; case WAIT_TIMEOUT: / return -1; break; default: /WaitForSingleObject break; return lngBytesRead; catch(.) return -1; /* / ClearAcceptBuffer / / long / / / / / 200644 / / / /* long ClearAcceptBuffer() try if(m_COM_Handle = NULL ) return( -1 ); PurgeComm(m_COM_Handle,PURGE_RXABORT | PURGE_RXCLEA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南宁代建合同范本
- 简短个人租房合同范本
- 门窗采购合同范本
- 路面硬化劳务合同范本
- 成人交友活动合同
- 合肥装潢公司合同范本
- 保险销售的合同范本
- 电缆敷设合同范本
- 工程小活合同范本
- 农具机械购销合同范本
- 2024年中考数学真题分类汇编(全国版)专题12一次函数及其应用(39题)含答案及解析
- 2024城市轨道交通节能改造EMC合作合同
- 全国职业院校技能大赛中职(大数据应用与服务赛项)考试题及答案
- 实验室检验结果及报告管理制度
- 新能源汽车动力系统优化
- 2022年版 义务教育《数学》课程标准
- 《电力行业职业技能标准 农网配电营业工》
- JTG∕T F30-2014 公路水泥混凝土路面施工技术细则
- 第四章 休克病人的护理课件
- 委托合同解除协议书
- 植物生理学课件(王小菁-第8版)-第五章-植物同化物的运输
评论
0/150
提交评论