123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- #ifndef _SERIALFACTORY_H_
- #define _SERIALFACTORY_H_
- #pragma once
- //#include "serialinterface.h"
- #include "SerialProcess.h"
- #ifdef SERIAL_IMPL
- #define SERIALDLLEXPORT _declspec(dllexport)
- #else
- #define SERIALDLLEXPORT _declspec(dllimport)
- #endif
- #include <list>
- using namespace std;
- #define USE_INSERT_AUTORAISE 1 // 插入元素,自增容器大小 ;
- typedef struct __COM_STRUCT
- {
- int iCommPort;
- CSerialProcess* pComm;
- }COM_STRUCT, *pCOM_STRUCT;
- /************************************************************************/
- /*
- 启动执行顺序:
- 0.先从设备库中,获取该设备的命令数:nSize;
- 1.打开串口,调用OpenSerialPort(...),并用nSize来构造CCommProcess对象;
- 2.若串口成功打开,循环调用InserCommand(...)插入发送的命令;
- 3.命令插入完毕后,执行AutoCollect( ... ) 函数,启动线程循环采集;
- 停止执行顺序:
- 1.停止某一设备的采集,调用RemoveDevice函数,该函数会自动处理运行线程的挂起,安全删除;
- 2.停止某个串口的所有设备采集,调用CloseSerialPort函数;
- 3.停止所有串口的所有设备采集,循环调用CloseSerialPort函数;
- */
- /************************************************************************/
- class SERIALDLLEXPORT CSerialFactory /*:public CSerialInterface*/
- {
- public:
- CSerialFactory( );
- virtual ~CSerialFactory(void);
- protected:
- // 查找串口,没找到返回NULL
- list<COM_STRUCT> m_listComm;
- const CSerialProcess* FindComm(const int &iCommPort);
- public:
- void SetVectorSize(const int &iCommPort,const int &nSetSize);
- virtual BOOL OpenSerialPort(
- const int &iCommPort,
- const int &iRate,
- const int &iDataBit,
- const int &iStopBit,
- const int &iParity,
- const int &iRespTime, // 响应时间
- const int &iInterval // 采集频率;
- );
- virtual BOOL CloseSerialPort( const int &iCommPort = -1);
- virtual int AutoCollect( const int &iCommPort );
- virtual void StopCollect(const int &iCommPort = -1);
- virtual void RemoveDeivce(const int &iCommPort, const int &iAddr);
- virtual int GetCommandsCount(const int &iCommPort);
- // 自动接收/停止自动接收(这种情况,只用于电脑当作下位机时);
- virtual void AutoScatter(const int &iCommPort);
- virtual void StopScatter(const int &iCommPort);
- virtual void SendRequest( const int &iCommPort, const int &iAddr, BYTE *szCmd,const int &iLen, const int &iRequestType );
- virtual void ReadRespone( const int &iCommPort, const int &iAddr );
- virtual void InserCommand(
- const int &iCommPort,
- const int &iAddr,
- BYTE *szCommand,
- const int &iLen,
- const char *szMark,
- const char *szCheck,
- bool bRecv = true ,
- const int &iSNum = -1 );
- virtual void DeleteRequestCommannd( const int &iCommPort,const int &iAddr, BYTE *szCommand, const int &iLen );
- virtual void GetAnalogValue(
- const int &iCommPort,
- const int &iAddr,
- char *szMark,
- const int &iIndex,
- const int &iCutLen,
- const int &iSBit,
- const int &iEBit,
- char *szValue,
- const int &iConvertType);
- virtual void SetAnalogValue(
- const int &iCommPort,
- const int &iAddr,
- char *szMark,
- const int &iIndex,
- const int &iCutLen,
- const int &iSBit,
- const int &iEbit,
- char *szSetValue,
- const int &iCovertType);
- };
- #endif
|