/*----------------------------------------- * Copyright (c) 2008 Eric Wong * 本版紧供读者参考,不得用于任何商业行为 * * 文件名称: CESeries.h * 文件标识: * 摘要:用于封装WINCE 串口通讯 * * 当前版本: 1.0 * 作者: 汪兵 Eric Wong * 完成日期: 2008年1月17日 * * 取代版本: * 原作者: * 完成日期: ----------------------------------------*/ #pragma once //定义串口接收数据函数类型 typedef void (CALLBACK* MY_ONSERIESREAD)(void * pOwner /*父对象指针*/ ,BYTE* buf /*接收到的缓冲区*/ ,DWORD dwBufLen /*接收到的缓冲区长度*/); class CMyCESeries { public: bool bCanComRead; bool m_bSyncOrAsync;//使用同步方式或者异步方式(重叠方式),默认值为true:异步方式 CMyCESeries(UINT portNo = -1, UINT baud = 9600, UINT parity = NOPARITY, UINT databits = 8, UINT stopbits = 0); ~CMyCESeries(void); public: UINT m_portNo; //串口号 UINT m_baud; //波特率 UINT m_parity; //奇偶校验 UINT m_databits; //数据位 UINT m_stopbits; //停止位 //打开串口 BOOL OpenPort(void* pOwner,/*指向父指针*/ UINT portNo = 1, /*串口号*/ UINT baud = 9600, /*波特率*/ UINT parity = 0, /*奇偶校验*/ UINT databits = 8, /*数据位*/ UINT stopbits = 0, /*停止位*/ bool isASync = true ); //关闭串口 void ClosePort(); //写入数据 BOOL WriteSyncPort(const BYTE*buf , DWORD bufLen); //设置串口读取、写入超时 BOOL SetSeriesTimeouts(COMMTIMEOUTS CommTimeOuts); //得到串口是否打开 BOOL GetComOpened(); private: //同步串口读线程函数 static DWORD WINAPI ReadThreadFunc(LPVOID lparam); //static DWORD WINAPI ReadThreadFunc2(LPVOID lparam); private: //关闭读线程 void CloseReadThread(); private: //已打开的串口句柄 // HANDLE m_hComm; //读线程句柄 HANDLE m_hReadThread; //读线程ID标识 DWORD m_dwReadThreadID; //读线程退出事件 HANDLE m_hReadCloseEvent; bool m_bOpened; //串口是否打开 void * m_pOwner; //指定父对象指针 public: MY_ONSERIESREAD m_OnSeriesRead; //同步方式下,串口读取回调函数 HANDLE m_hComm; OVERLAPPED m_olWrite;//假如该串口使用异步方式时,将会用到该变量 };