已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026内蒙古锡林郭勒盟镇沅县教育体育行业急需紧缺人才招聘13人笔试考试参考试题及答案解析
- 2025南昌市政公用集团有限公司客户服务分公司招聘市政公用热线话务员5人笔试考试备考试题及答案解析
- 2025福建福州左海置地有限公司招聘1人笔试考试备考试题及答案解析
- 2025年度绍兴滨海新区控股集团有限公司下属合资公司社会化公开招聘11人考试笔试备考试题及答案解析
- 2025四川资阳文化旅游发展集团有限公司招聘4人(第三批次)考试笔试模拟试题及答案解析
- 2025广西壮族自治区防城金花茶国家级自然保护区管理中心招聘合同制工作人员2人考试笔试备考试题及答案解析
- 2025年江西中医药大学第二附属医院招聘编制外工作人员6人(第四批)笔试考试参考试题及答案解析
- 2025云南昆明高新区高新实验高中招聘30人考试笔试模拟试题及答案解析
- 2025江西人力诚聘派遣至中国铁路南昌局集团有限公司赣州工务段招聘21人笔试考试参考题库及答案解析
- 2025年中国科学技术大学火灾安全全国重点实验室劳务派遣岗位招聘3名笔试考试备考题库及答案解析
- 企业会计准则实施典型案例
- 培育战斗精神 砥砺血性胆气 -2024教育实践活动
- 教学设计流程图模板
- 高考英语单词3500(乱序版)
- 《会议策划与组织(第4版)》课件 任务五 会中突发事件的处理
- 4蚯蚓的选择 说课稿-2023-2024学年科学五年级下册教科版
- DB11-T 1550-2018 残疾人社区康复站服务规范
- 2024年1月福建高中学业水平合格考语文试卷真题(含答案详解)
- 《欧洲浪漫主义文学》课件
- 2024年江苏省安全员《C证》考试题库
- 高压输电线路质量、检查、验收培训课件
评论
0/150
提交评论