




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广西城轨工程建设有限公司招聘20人考前自测高频考点模拟试题及完整答案详解1套
- 2025年绍兴新昌县卫健系统第一次公开招聘人员17人模拟试卷附答案详解(突破训练)
- 2025广州医科大学校本部招聘工作人员9人(第二次)考前自测高频考点模拟试题及参考答案详解一套
- 2025年杭州市余杭区卫生健康系统事业单位招聘编外工作人员73人考前自测高频考点模拟试题及答案详解一套
- 2025安康石泉县两河镇中心卫生院招聘(2人)考前自测高频考点模拟试题附答案详解(完整版)
- 2025湖南永州市东安县招聘第一批就业见习岗位121人模拟试卷及答案详解(必刷)
- 2025贵州省计量测试院参加第十三届贵州人才博览会引才4人考前自测高频考点模拟试题及答案详解(易错题)
- 2025年宁波余姚市卫生健康事业单位公开招聘卫生技术人员179人模拟试卷参考答案详解
- 2025河南许昌市经发控股集团有限公司社会招聘拟聘人员模拟试卷及完整答案详解一套
- 2025安徽合肥师范学院高层次人才招聘63人考前自测高频考点模拟试题完整答案详解
- 磷化工复工安全培训总结课件
- 2025年四川高考真题化学试题(解析版)
- 海上交通技能安全培训基本试题及答案解析
- 2025-2026学年高一历史上学期第一次月考卷(原卷及解析)(江苏专用)
- 合同的效力教学设计-2025-2026学年中职专业课-经济法律法规-纳税事务-财经商贸大类
- 辽宁省名校联盟2025-2026学年高三上学期9月联合考试数学试题(无答案)
- 2025-2030中国农机金融租赁业务模式创新与风险定价策略报告
- 医院感染的爆发及处理
- 2025年党建知识应知应会测试题库(附答案)
- 脊神经支配图谱-洞察及研究
- 2025年中级社会工作者《工作实务》模拟巩固练习题及答案
评论
0/150
提交评论