/************************************************* /* Copyright (C), 2010-2011,StoneU. Co., Ltd. /* File name: APCSilcon.h /* Author: Zero.t /* Version: Ver1.0.0.1 /* Date: 2011-10-19 /* Description: ## /* Others: RS232; /* Function List: ### /* History: 1.Date: ### Author: ### Modification: ### *************************************************/ #ifndef APC_SILCON_HEAD_H #define APC_SILCON_HEAD_H #pragma once #include "CommInterface.h" class APCSilcon:public CCommInterface { public: #define DEBUG_APC 1 // UPS 设备Dll错误代码定义 enum __ERRO_CODE_DATAMATE3000 { ERR_CODE_APC_COM_FAULT = 50201 , // 设备串口通信故障; ERR_CODE_APC_COM_BUSY , // 设备串口通信忙; ERR_CODE_APC_COM_READ_NO_DATA , // 设备没有读到数据; ERR_CODE_APC_COM_READ_LEN_OVER , // 设备读到数据长度超时限制; ERR_CODE_APC_COM_CHKSUM_LOST , // 设备校验失败; EER_CODE_APC_COM_WRITE_DATA , // 设备写串口错误; EER_CODE_APC_COM_REGNUM , // 设备寄存器数; ERR_CODE_APC_COM_VARLEN , // 设备变量长度非法; ERR_CODE_APC_COM_INVALIDRES , // 设备无效应答; }; APCSilcon( char szPath[MAX_PATH], // 程序所在路径; char szIniName[MAX_PATH], // 配置文件名称; int nCommPort, // 串行端口; int nAddr, // 设备地址; int nRate, // 波特率; int nDataBit, // 数据位; int nStopBit, // 停止位; int nParity, // 校验位; int nInterval // 时间间隔; ); virtual ~APCSilcon(); public: int SendReadRequest( char szPath[MAX_PATH], // 程序所在路径 char szIniName[MAX_PATH], // 配置文件名称 int nCommPort, // 串行端口 int nAddr, // 设备地址 char szCmd[MAX_CMD], // 请求命令 char szMsg[VAR_MSG], // 响应的值 int nReversed1, // 预留整形参数1接口 int nReversed2, // 预留整形参数2接口 int nReversed3, // 预留整形参数3接口 int nReversed4, // 预留整形参数4接口 int nReversed5, // 预留整形参数5接口 float fReversed1, // 预留float参数1接口 float fReversed2, // 预留float参数2接口 float fReversed3, // 预留float参数3接口 char szReversed1[MAX_RESERVED1], // 预留字符数组参数1接口 char szReversed2[MAX_RESERVED2], // 预留字符数组参数2接口 char szReversed3[MAX_RESERVED3], // 预留字符数组参数3接口 char szReversed4[MAX_RESERVED4], // 预留字符数组参数4接口 char szReversed5[MAX_RESERVED5] // 预留字符数组参数5接口 ); BOOL APCOpenComm(int nCommPort, int nAddr, int nRate, int nDataBit, int nStopBit, int nParity, int nInterval); protected: BOOL bSendSST; char m_szSSTMsg[MAX_RECE_MSG]; protected: int _SendSSTbyFirst(int nAddr,CCommProcess *pComm); int RequestReadStatus(int nAddr,CCommProcess *pComm,char szSendMsg[MAX_SEND_MSG]); int ResponseReadStatus( CCommProcess *pComm, char szCmd[MAX_CMD], char szRecvMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH] ); int GetDeviceParam( int nAddr, CCommProcess *pComm, //串口对象指针 char szSendMsg[MAX_SEND_MSG], //发送Buffer char szCmd[MAX_CMD], // 命令 char szRecvMsg[VAR_MSG], // 接收Buffer int &nIndex, // 变量索引,针对接收Buffer而言 int &nLen, // 变量长度 char szType[TYPE_LENGTH] // 变量数据类型 ); int GetIniInfo( char szPath[MAX_PATH], //服务器程序所在目录 char szIniName[MAX_PATH], //配置文件名 char szCmd[MAX_CMD], //命令 char szSanTakSendMsg[MAX_CMD], //发送Buffer char nType[MAX_CMD], int &nIndex, int &nLen ); int GetSSTVarMsg( char szCmd[MAX_CMD], // 命令 char szRecvMsg[VAR_MSG], // 接收Buffer int &nIndex, // 变量索引,针对接收Buffer而言 int &nLen, // 变量长度 char szType[TYPE_LENGTH] ); void SetSSTVarMsg( char szCmd[MAX_CMD], char *pBuffer); void SimulationCommData(void); private: HANDLE m_hSemComm; #if IS_USE_READMSG_CS CRITICAL_SECTION m_csReadMsg; #endif BOOL m_dwOnlineTick; BOOL m_devOnline; }; #endif