#ifndef _SERIALPROCESS_H_ #define _SERIALPROCESS_H_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "Struct_Def.h" class CSerialProcess { public: CSerialProcess( ); virtual ~CSerialProcess(); BOOL OpenComm( const int &iCommPort, // 1.采集串口; const int &iRate, // 2.串口波特率; const int &iDataBit, // 3.数据位; const int &iStopBit, // 4.停止位; const int &iParity, // 5.校验码; const int &iResponsetime, // 6.响应时间; const int &iInterval); // 7.采集频率; BOOL CloseComm(); void SetSize(const int &nSize); void RaiseSize(); void DealSpecialCmd(); int InsertCommand(const BYTE *szCommand,int iLen, int iAddr,const char *szMark, const char *szCheck, int iSNum, bool bRecv); int RemoveCommand(const BYTE *szCommand); void RemoveDeivce(const int &addr); int GetCommandsCount(); int AutoCollect(); int StopCollect(); BOOL SetCommand(const BYTE *szCommand,int iLen, int iAddr); public: // 这两个值可以供外部修改,动态的更改线程频率和响应时间; unsigned int m_nResponseTime; // Response time(设备响应时间); unsigned int m_nAFrequency; // Acquisition frequency(设备采集频率); private: BOOL m_bOpen; int m_iPort; HANDLE m_hCom; DWORD inQue, outQue; virtual int Write(const BYTE *pBuf, int len); virtual int Read(BYTE *pBuf, int len); protected: DWORD m_dwThreadID; // 采集线程的ID; HANDLE m_hThreaObj; // 采集线程对象; HANDLE m_hRunCtrl ; // 线程控制; HANDLE m_hCollectCtrl ; // 采集控制; HANDLE m_hFrequencyCtrl; // 采集频率控制事件; HANDLE m_hResponsetime; // 响应时间控制事件; int m_iSLSize; // vector size; vector m_sendlist; void RemoveAllSendCommand(); void RemoveAllRecvCommand(); BOOL m_bCollected;//是否启动线程; static DWORD WINAPI CollectThreadProc(LPVOID lpParamter); }; #endif