1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /*-----------------------------------------
- * 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;//假如该串口使用异步方式时,将会用到该变量
- };
|