////////////////////////////////////////////////////////////////////////////// ////// ////// ////// 文 件: ParadigmNxV260.cpp ////// ////// 作 者: wangjianfeng ////// ////// 创建时间: ////// ////// 说 明: NxV260协议 ////// ////// ////// ////// 修改时间:2010-09-07 ////// ////// 修改说明:新版本 ////// ////// ////// ////////////////////////////////////////////////////////////////////////////// #include "StdAfx.h" #include "CommProcess.h" #include "Global.h" #include ".\paradigmnxv260.h" ParadigmNxV260::ParadigmNxV260( char szPath[MAX_PATH], // 程序所在路径 char szIniName[MAX_PATH], // 配置文件名称 int nCommPort, // 串行端口 int nAddr, // 设备地址 int nRate, // 波特率 int nDataBit, // 数据位 int nStopBit, // 停止位 int nParity, // 校验位 int nInterval // 时间间隔 ) { #if IS_USE_READMSG_CS InitializeCriticalSection( &m_csReadMsg ); //初始化一个临界资源对象 #endif MTVERIFY( m_hSemComm = CreateEvent( NULL, TRUE, TRUE, 0 ) ); //CreateEvent()创建或打开一个命名的或无名的事件对象 for(int i = 0;i < MAX_ADDR;i++) { memset(m_szNxV260_41Msg[i], 0, sizeof(m_szNxV260_41Msg[i])); memset(m_szNxV260_E1Msg[i], 0, sizeof(m_szNxV260_E1Msg[i])); memset(m_szNxV260_E2Msg[i], 0, sizeof(m_szNxV260_E2Msg[i])); memset(m_szNxV260_E3Msg[i], 0, sizeof(m_szNxV260_E3Msg[i])); memset(m_szNxV260_43Msg[i], 0, sizeof(m_szNxV260_43Msg[i])); memset(m_szNxV260_44Msg[i], 0, sizeof(m_szNxV260_44Msg[i])); m_devOnline[i] = TRUE; m_dwOnlineTick[i] = 0; } } ParadigmNxV260::~ParadigmNxV260() { #if IS_USE_READMSG_CS DeleteCriticalSection( &m_csReadMsg ); #endif MTVERIFY( CloseHandle( m_hSemComm ) ); CloseComm(); } BOOL ParadigmNxV260::NxV260OpenComm(int nCommPort, int nAddr, int nRate, int nDataBit, int nStopBit, int nParity, int nInterval) { BOOL bResult = FALSE; bResult = OpenComm( nCommPort, nAddr, nRate, nDataBit, nStopBit, nParity, nInterval ); return bResult; } int ParadigmNxV260::SendReadRequest( char szPath[MAX_PATH], char szIniName[MAX_PATH], int nCommPort, int nAddr, char szCmd[MAX_CMD], char szMsg[VAR_MSG], int nReversed1, int nReversed2, int nReversed3, int nReversed4, int nReversed5, float fReversed1, float fReversed2, float fReversed3, char szReversed1[MAX_RESERVED1], char szReversed2[MAX_RESERVED2], char szReversed3[MAX_RESERVED3], char szReversed4[MAX_RESERVED4], char szReversed5[MAX_RESERVED5] ) { int nIndex = 0, nLen = 0; char szSendCmd[10] = {0}; char szType[TYPE_LENGTH] = {0}; GetNxV260FromIni(szPath, szIniName, szCmd,szSendCmd, szType, nIndex, nLen); CCommProcess *pComm = FindComm(nCommPort); if( pComm == NULL ) return -1; int nRet = -1; if ( (strlen(m_szNxV260_41Msg[nAddr -1]) ==0 && ( strcmp(szCmd, "cmd-1") == 0 || strcmp(szCmd, "cmd-2") == 0 || strcmp(szCmd, "cmd-3") == 0 || strcmp(szCmd, "cmd-4") == 0 || strcmp(szCmd, "cmd-6") == 0 || strcmp(szCmd, "cmd-5") == 0 || strcmp(szCmd, "cmd-6") == 0 || strcmp(szCmd, "cmd-7") == 0 || strcmp(szCmd, "cmd-8") == 0 || strcmp(szCmd, "cmd-9") == 0 || strcmp(szCmd, "cmd-10") == 0 || strcmp(szCmd, "cmd-11") == 0 || strcmp(szCmd, "cmd-12") == 0 || strcmp(szCmd, "cmd-13") == 0 ) ) || (strlen(m_szNxV260_E1Msg[nAddr -1]) ==0 && ( strcmp(szCmd, "cmd-14") == 0 || strcmp(szCmd, "cmd-15") == 0 || strcmp(szCmd, "cmd-16") == 0 || strcmp(szCmd, "cmd-17") == 0 || strcmp(szCmd, "cmd-18") == 0 || strcmp(szCmd, "cmd-19") == 0 || strcmp(szCmd, "cmd-20") == 0 || strcmp(szCmd, "cmd-21") == 0 || strcmp(szCmd, "cmd-22") == 0 || strcmp(szCmd, "cmd-23") == 0 || strcmp(szCmd, "cmd-24") == 0 || strcmp(szCmd, "cmd-25") == 0 || strcmp(szCmd, "cmd-26") == 0 || strcmp(szCmd, "cmd-27") == 0 || strcmp(szCmd, "cmd-28") == 0 ) ) || (strlen(m_szNxV260_E2Msg[nAddr -1]) ==0 && ( strcmp(szCmd, "cmd-29") == 0 || strcmp(szCmd, "cmd-30") == 0 || strcmp(szCmd, "cmd-31") == 0 || strcmp(szCmd, "cmd-32") == 0 || strcmp(szCmd, "cmd-33") == 0 || strcmp(szCmd, "cmd-34") == 0 || strcmp(szCmd, "cmd-35") == 0 || strcmp(szCmd, "cmd-36") == 0 || strcmp(szCmd, "cmd-37") == 0 || strcmp(szCmd, "cmd-38") == 0 || strcmp(szCmd, "cmd-39") == 0 || strcmp(szCmd, "cmd-40") == 0 || strcmp(szCmd, "cmd-41") == 0 || strcmp(szCmd, "cmd-42") == 0 || strcmp(szCmd, "cmd-43") == 0 ) ) || (strlen(m_szNxV260_E3Msg[nAddr -1]) ==0 && ( strcmp(szCmd, "cmd-44") == 0 || strcmp(szCmd, "cmd-45")== 0 || strcmp(szCmd, "cmd-46")== 0 || strcmp(szCmd, "cmd-47")== 0 || strcmp(szCmd, "cmd-48")== 0 || strcmp(szCmd, "cmd-49")== 0 || strcmp(szCmd, "cmd-50")== 0 || strcmp(szCmd, "cmd-51")== 0 || strcmp(szCmd, "cmd-52")== 0 || strcmp(szCmd, "cmd-53")== 0 || strcmp(szCmd, "cmd-54")== 0 || strcmp(szCmd, "cmd-55")== 0 || strcmp(szCmd, "cmd-56")== 0 || strcmp(szCmd, "cmd-57")== 0 || strcmp(szCmd, "cmd-58")== 0 || strcmp(szCmd, "cmd-59")== 0 || strcmp(szCmd, "cmd-60")== 0 || strcmp(szCmd, "cmd-61")== 0 ) ) || (strlen(m_szNxV260_43Msg[nAddr -1]) ==0 && ( strcmp(szCmd, "cmd-62")== 0 || strcmp(szCmd, "cmd-63")== 0 || strcmp(szCmd, "cmd-64")== 0 || strcmp(szCmd, "cmd-65")== 0 || strcmp(szCmd, "cmd-66")== 0 || strcmp(szCmd, "cmd-67")== 0 || strcmp(szCmd, "cmd-68")== 0 || strcmp(szCmd, "cmd-69")== 0 || strcmp(szCmd, "cmd-70")== 0 || strcmp(szCmd, "cmd-71")== 0 || strcmp(szCmd, "cmd-72")== 0 || strcmp(szCmd, "cmd-73")== 0 ) ) || (strlen(m_szNxV260_44Msg[nAddr -1]) ==0 && ( strcmp(szCmd, "cmd-74")== 0 || strcmp(szCmd, "cmd-75")== 0 || strcmp(szCmd, "cmd-76")== 0 || strcmp(szCmd, "cmd-77")== 0 || strcmp(szCmd, "cmd-78")== 0 || strcmp(szCmd, "cmd-79")== 0 || strcmp(szCmd, "cmd-80")== 0 || strcmp(szCmd, "cmd-81")== 0 || strcmp(szCmd, "cmd-82")== 0 || strcmp(szCmd, "cmd-83")== 0 || strcmp(szCmd, "cmd-84")== 0 || strcmp(szCmd, "cmd-85")== 0 || strcmp(szCmd, "cmd-86")== 0 || strcmp(szCmd, "cmd-87")== 0 || strcmp(szCmd, "cmd-88")== 0 || strcmp(szCmd, "cmd-89")== 0 || strcmp(szCmd, "cmd-90")== 0 || strcmp(szCmd, "cmd-91")== 0 || strcmp(szCmd, "cmd-92")== 0 || strcmp(szCmd, "cmd-93")== 0 || strcmp(szCmd, "cmd-94")== 0 || strcmp(szCmd, "cmd-95")== 0 || strcmp(szCmd, "cmd-96")== 0 || strcmp(szCmd, "cmd-97")== 0 || strcmp(szCmd, "cmd-98")== 0 || strcmp(szCmd, "cmd-99")== 0 || strcmp(szCmd, "cmd-100")== 0 || strcmp(szCmd, "cmd-101")== 0 || strcmp(szCmd, "cmd-102")== 0 || strcmp(szCmd, "cmd-103")== 0 || strcmp(szCmd, "cmd-104")== 0 || strcmp(szCmd, "cmd-105")== 0 || strcmp(szCmd, "cmd-106")== 0 || strcmp(szCmd, "cmd-107")== 0 || strcmp(szCmd, "cmd-108")== 0 || strcmp(szCmd, "cmd-109")== 0 || strcmp(szCmd, "cmd-110")== 0 || strcmp(szCmd, "cmd-111")== 0 || strcmp(szCmd, "cmd-112")== 0 || strcmp(szCmd, "cmd-113")== 0 || strcmp(szCmd, "cmd-114")== 0 || strcmp(szCmd, "cmd-115")== 0 || strcmp(szCmd, "cmd-116")== 0 || strcmp(szCmd, "cmd-117")== 0 || strcmp(szCmd, "cmd-118")== 0 || strcmp(szCmd, "cmd-119")== 0 || strcmp(szCmd, "cmd-120")== 0 || strcmp(szCmd, "cmd-121")== 0 || strcmp(szCmd, "cmd-122")== 0 || strcmp(szCmd, "cmd-123")== 0 || strcmp(szCmd, "cmd-124")== 0 || strcmp(szCmd, "cmd-125")== 0 || strcmp(szCmd, "cmd-126")== 0 || strcmp(szCmd, "cmd-127")== 0 || strcmp(szCmd, "cmd-128")== 0 || strcmp(szCmd, "cmd-129")== 0 || strcmp(szCmd, "cmd-130")== 0 || strcmp(szCmd, "cmd-131")== 0 || strcmp(szCmd, "cmd-132")== 0 || strcmp(szCmd, "cmd-133")== 0 || strcmp(szCmd, "cmd-134")== 0 || strcmp(szCmd, "cmd-135")== 0 || strcmp(szCmd, "cmd-136")== 0 || strcmp(szCmd, "cmd-137")== 0 || strcmp(szCmd, "cmd-138")== 0 || strcmp(szCmd, "cmd-139")== 0 || strcmp(szCmd, "cmd-140")== 0 || strcmp(szCmd, "cmd-141")== 0 || strcmp(szCmd, "cmd-142")== 0 ) ) || strcmp(szCmd, "cmd-1") == 0 || strcmp(szCmd, "cmd-14") == 0 || strcmp(szCmd, "cmd-29") == 0 || strcmp(szCmd, "cmd-44") == 0 || strcmp(szCmd, "cmd-62") == 0 || strcmp(szCmd, "cmd-74") == 0 ) { nRet = GetDeviceParam( nAddr,pComm, szSendCmd, szCmd, szMsg, nIndex, nLen, szType ); if( nRet != 0 ) return nRet; } if( GetTickCount() - m_dwOnlineTick[nAddr -1] > 60 *1000 && m_dwOnlineTick[nAddr -1] > 0 ) { m_devOnline[nAddr -1] = FALSE; } else if( GetTickCount() - m_dwOnlineTick[nAddr -1] < 60 *1000 && m_dwOnlineTick[nAddr -1] > 0 ) { m_devOnline[nAddr -1] = TRUE; } if( m_devOnline[nAddr -1] == FALSE ) { return -1; } nRet = GetNxV260Q41VarMsg(nAddr, szCmd, szMsg, nIndex, nLen, szType); nRet = GetNxV260QE1VarMsg(nAddr, szCmd, szMsg, nIndex, nLen, szType); nRet = GetNxV260QE2VarMsg(nAddr, szCmd, szMsg, nIndex, nLen, szType); nRet = GetNxV260QE3VarMsg(nAddr, szCmd, szMsg, nIndex, nLen, szType); nRet = GetNxV260Q43VarMsg(nAddr, szCmd, szMsg, nIndex, nLen, szType); nRet = GetNxV260Q44VarMsg(nAddr, szCmd, szMsg, nIndex, nLen, szType); return nRet; } int ParadigmNxV260::GetDeviceParam( int nAddr, CCommProcess *pComm, //串口对象指针 char szSendCmd[10], //发送Buffer char szCmd[MAX_CMD], // 命令 char szRecvMsg[VAR_MSG], // 接收Buffer int &nIndex, // 变量索引,针对接收Buffer而言 int &nLen, // 变量长度 char szType[TYPE_LENGTH] // 变量数据类型 ) { int nRet = -1; nRet = RequestReadStatus(nAddr,pComm, szSendCmd); if( nRet != 0 ) { return nRet; // 串口忙 } nRet = ResponseReadStatus(nAddr, pComm, szCmd, szRecvMsg, nIndex, nLen, szType); return nRet; } int ParadigmNxV260::RequestReadStatus(int nAddr,CCommProcess *pComm,char szSendCmd[10]) { #if DEBUG_NxV260 char chLength[4] = {0}; char chChkSum[5] = {0}; REQUESTPARAM RequestPara; int RequestParaLen = sizeof(RequestPara); memset( &RequestPara, 0, RequestParaLen ); //起始位 RequestPara.RequestChild.bySoi = 0x7E; //通讯协议版本 2.60 RequestPara.RequestChild.byVer[0] = 0x32; RequestPara.RequestChild.byVer[1] = 0x36; //设备地址描述 RequestPara.RequestChild.byAdr[0] = ByteToAscii((nAddr >> 4) & 0x0f); RequestPara.RequestChild.byAdr[1] = ByteToAscii(nAddr & 0x0f); //Cid1 2A RequestPara.RequestChild.byCid1[0] = 0x32; RequestPara.RequestChild.byCid1[1] = 0x41; //Cid2 memcpy(RequestPara.RequestChild.byCid2, szSendCmd, 2); RequestPara.RequestChild.byLength[0] = 0x30; RequestPara.RequestChild.byLength[1] = 0x30; RequestPara.RequestChild.byLength[2] = 0x30; RequestPara.RequestChild.byLength[3] = 0x30; //Info //RequestPara.RequestChild.byInfo[0] = 0x30; //RequestPara.RequestChild.byInfo[1] = 0x31; //校验码 BYTE *pDataBuf = new BYTE[RequestParaLen - 5]; memset(pDataBuf, 0, RequestParaLen -5 ); memcpy(pDataBuf, &RequestPara, RequestParaLen - 5); GetCheckSum((char *)pDataBuf + 1, chChkSum, RequestParaLen - 6 ); delete []pDataBuf; pDataBuf = NULL; RequestPara.byCheckSum[0] = chChkSum[0]; RequestPara.byCheckSum[1] = chChkSum[1]; RequestPara.byCheckSum[2] = chChkSum[2]; RequestPara.byCheckSum[3] = chChkSum[3]; //结束符 RequestPara.byEoi = 0x0D; //WaitForSingObject();等待有信号; if( WaitForSingleObject( m_hSemComm, 0 ) == WAIT_OBJECT_0 ) { //求得数组字符实际长度; int nDataLen = (int)sizeof(RequestPara); //ResetEvent()设置无信号状态 ResetEvent( m_hSemComm ); int nResult = pComm->Write((BYTE *)&RequestPara, nDataLen); if( nResult != nDataLen ) { SetEvent( m_hSemComm ); //LOG4C((LOG_NOTICE,"Write写错误")); return EER_CODE_ParadigmNxV260_COM_REGNUM; //返回 错误值; } } else { //如果m_hSemCom无信号,返回错误; //LOG4C((LOG_NOTICE, "事件m_hSenCom无信号")); return ERR_CODE_ParadigmNxV260_COM_BUSY; } #endif return 0; } int ParadigmNxV260::ResponseReadStatus( int nAddr, CCommProcess *pComm, char szCmd[MAX_CMD], char szRecvMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH] ) { #if DEBUG_NxV260 RESPONSE_STRUCT structResponse; memset( &structResponse, 0, sizeof(RESPONSE_STRUCT) ); int nReceiveLen = 0; nReceiveLen = sizeof(RESPONSE_STRUCT); char *pBuffer = new char[nReceiveLen]; memset(pBuffer, 0, nLen); int nReadLen = 0; nReadLen = pComm->Read((BYTE *)pBuffer, nReceiveLen); if (!CheckLength(pBuffer)) //长度校验出错 { SetEvent(m_hSemComm); if (pBuffer !=NULL) { delete[] pBuffer; pBuffer = NULL; } //LOG4C((LOG_NOTICE,"长度校验出错")); return ERR_CODE_ParadigmNxV260_COM_CHKSUM_LOST; } if (!ChkSumCheck(pBuffer,nReadLen)) //校验码校验出错 { SetEvent(m_hSemComm); if (pBuffer !=NULL) { delete[] pBuffer; pBuffer = NULL; } //LOG4C((LOG_NOTICE,"校验码校验出错")); return ERR_CODE_ParadigmNxV260_COM_CHKSUM_LOST; } int nRet = RtnCheck(pBuffer, nReadLen); if (nRet != 0) //RTN校验出错 { SetEvent( m_hSemComm ); if( pBuffer != NULL) { delete[] pBuffer; pBuffer = NULL; } //LOG4C((LOG_NOTICE,"RTN校验出错")); return nRet; } if( nReadLen <= 0) // 串口没有读到数据 { SetEvent( m_hSemComm ); if( pBuffer != NULL) { delete[] pBuffer; pBuffer = NULL; } //LOG4C((LOG_NOTICE,"串口没有读到数据")); return ERR_CODE_ParadigmNxV260_COM_READ_NO_DATA; } SetNxV260Q41VarMsg( nAddr, szCmd, pBuffer); SetNxV260QE1VarMsg( nAddr, szCmd, pBuffer); SetNxV260QE2VarMsg( nAddr, szCmd, pBuffer); SetNxV260QE3VarMsg( nAddr, szCmd, pBuffer); SetNxV260Q43VarMsg( nAddr, szCmd, pBuffer); SetNxV260Q44VarMsg( nAddr, szCmd, pBuffer); m_dwOnlineTick[nAddr -1] = GetTickCount(); SetEvent( m_hSemComm ); if( pBuffer != NULL) { delete[] pBuffer; pBuffer = NULL; } #else SimulationCommData(); #endif return 0; } int ParadigmNxV260::GetNxV260Q41VarMsg(int nAddr, char szCmd[MAX_CMD], char szRecvMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH]) { int nRet = 0; if( strcmp(szCmd, "cmd-1") == 0 || strcmp(szCmd, "cmd-2") == 0 || strcmp(szCmd, "cmd-3") == 0 || strcmp(szCmd, "cmd-4") == 0 || strcmp(szCmd, "cmd-6") == 0 || strcmp(szCmd, "cmd-5") == 0 || strcmp(szCmd, "cmd-6") == 0 || strcmp(szCmd, "cmd-7") == 0 || strcmp(szCmd, "cmd-8") == 0 || strcmp(szCmd, "cmd-9") == 0 || strcmp(szCmd, "cmd-10") == 0 || strcmp(szCmd, "cmd-11") == 0 || strcmp(szCmd, "cmd-12") == 0 || strcmp(szCmd, "cmd-13") == 0 ) { #if IS_USE_READMSG_CS EnterCriticalSection( &m_csReadMsg ); #endif DataConversion("FLOAT", m_szNxV260_41Msg[nAddr - 1] + nIndex, szRecvMsg, nLen,0,0 ); #if IS_USE_READMSG_CS LeaveCriticalSection(&m_csReadMsg); #endif nRet = 0; } return nRet; } int ParadigmNxV260::GetNxV260QE1VarMsg(int nAddr, char szCmd[MAX_CMD], char szRecvMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH]) { int nRet = 0; if( strcmp(szCmd, "cmd-14") == 0 || strcmp(szCmd, "cmd-15") == 0 || strcmp(szCmd, "cmd-16") == 0 || strcmp(szCmd, "cmd-17") == 0 || strcmp(szCmd, "cmd-18") == 0 || strcmp(szCmd, "cmd-19") == 0 || strcmp(szCmd, "cmd-20") == 0 || strcmp(szCmd, "cmd-21") == 0 || strcmp(szCmd, "cmd-22") == 0 || strcmp(szCmd, "cmd-23") == 0 || strcmp(szCmd, "cmd-24") == 0 || strcmp(szCmd, "cmd-25") == 0 || strcmp(szCmd, "cmd-26") == 0 || strcmp(szCmd, "cmd-27") == 0 || strcmp(szCmd, "cmd-28") == 0 ) { #if IS_USE_READMSG_CS EnterCriticalSection( &m_csReadMsg ); #endif DataConversion("FLOAT", m_szNxV260_E1Msg[nAddr - 1] + nIndex, szRecvMsg, nLen, 0, 0); #if IS_USE_READMSG_CS LeaveCriticalSection(&m_csReadMsg); #endif nRet = 0; } return nRet; } int ParadigmNxV260::GetNxV260QE2VarMsg(int nAddr, char szCmd[MAX_CMD], char szRecvMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH]) { int nRet = 0; if( strcmp(szCmd, "cmd-29") == 0 || strcmp(szCmd, "cmd-30") == 0 || strcmp(szCmd, "cmd-31") == 0 || strcmp(szCmd, "cmd-32") == 0 || strcmp(szCmd, "cmd-33") == 0 || strcmp(szCmd, "cmd-34") == 0 || strcmp(szCmd, "cmd-35") == 0 || strcmp(szCmd, "cmd-36") == 0 || strcmp(szCmd, "cmd-37") == 0 || strcmp(szCmd, "cmd-38") == 0 || strcmp(szCmd, "cmd-39") == 0 || strcmp(szCmd, "cmd-40") == 0 || strcmp(szCmd, "cmd-41") == 0 || strcmp(szCmd, "cmd-42") == 0 || strcmp(szCmd, "cmd-43") == 0 ) { #if IS_USE_READMSG_CS EnterCriticalSection( &m_csReadMsg ); #endif DataConversion("FLOAT", m_szNxV260_E2Msg[nAddr - 1] + nIndex, szRecvMsg, nLen, 0, 0); #if IS_USE_READMSG_CS LeaveCriticalSection(&m_csReadMsg); #endif nRet = 0; } return nRet; } int ParadigmNxV260::GetNxV260QE3VarMsg(int nAddr, char szCmd[MAX_CMD], char szRecvMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH]) { int nRet = 0; if( strcmp(szCmd, "cmd-44") == 0 || strcmp(szCmd, "cmd-45")== 0 || strcmp(szCmd, "cmd-46")== 0 || strcmp(szCmd, "cmd-47")== 0 || strcmp(szCmd, "cmd-48")== 0 || strcmp(szCmd, "cmd-49")== 0 || strcmp(szCmd, "cmd-50")== 0 || strcmp(szCmd, "cmd-51")== 0 || strcmp(szCmd, "cmd-52")== 0 || strcmp(szCmd, "cmd-53")== 0 || strcmp(szCmd, "cmd-54")== 0 || strcmp(szCmd, "cmd-55")== 0 || strcmp(szCmd, "cmd-56")== 0 || strcmp(szCmd, "cmd-57")== 0 || strcmp(szCmd, "cmd-58")== 0 || strcmp(szCmd, "cmd-59")== 0 || strcmp(szCmd, "cmd-60")== 0 || strcmp(szCmd, "cmd-61")== 0 ) { #if IS_USE_READMSG_CS EnterCriticalSection( &m_csReadMsg ); #endif DataConversion("FLOAT", m_szNxV260_E3Msg[nAddr - 1] + nIndex, szRecvMsg, nLen, 0, 0); #if IS_USE_READMSG_CS LeaveCriticalSection(&m_csReadMsg); #endif nRet = 0; } return nRet; } int ParadigmNxV260::GetNxV260Q43VarMsg(int nAddr, char szCmd[MAX_CMD], char szRecvMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH]) { int nRet = 0; if( strcmp(szCmd, "cmd-62")== 0 || strcmp(szCmd, "cmd-63")== 0 || strcmp(szCmd, "cmd-64")== 0 || strcmp(szCmd, "cmd-65")== 0 || strcmp(szCmd, "cmd-66")== 0 || strcmp(szCmd, "cmd-67")== 0 || strcmp(szCmd, "cmd-68")== 0 || strcmp(szCmd, "cmd-69")== 0 || strcmp(szCmd, "cmd-70")== 0 || strcmp(szCmd, "cmd-71")== 0 || strcmp(szCmd, "cmd-72")== 0 || strcmp(szCmd, "cmd-73")== 0 ) { #if IS_USE_READMSG_CS EnterCriticalSection( &m_csReadMsg ); #endif DataConversion("BYTE", m_szNxV260_43Msg[nAddr - 1] + nIndex, szRecvMsg, nLen, 0, 0); #if IS_USE_READMSG_CS LeaveCriticalSection(&m_csReadMsg); #endif nRet = 0; } return nRet; } int ParadigmNxV260::GetNxV260Q44VarMsg(int nAddr, char szCmd[MAX_CMD], char szRecvMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH]) { int nRet = 0; if( strcmp(szCmd, "cmd-74")== 0 || strcmp(szCmd, "cmd-75")== 0 || strcmp(szCmd, "cmd-76")== 0 || strcmp(szCmd, "cmd-77")== 0 || strcmp(szCmd, "cmd-78")== 0 || strcmp(szCmd, "cmd-79")== 0 || strcmp(szCmd, "cmd-80")== 0 || strcmp(szCmd, "cmd-81")== 0 || strcmp(szCmd, "cmd-82")== 0 || strcmp(szCmd, "cmd-83")== 0 || strcmp(szCmd, "cmd-84")== 0 || strcmp(szCmd, "cmd-85")== 0 || strcmp(szCmd, "cmd-86")== 0 || strcmp(szCmd, "cmd-87")== 0 || strcmp(szCmd, "cmd-88")== 0 || strcmp(szCmd, "cmd-89")== 0 || strcmp(szCmd, "cmd-90")== 0 || strcmp(szCmd, "cmd-91")== 0 || strcmp(szCmd, "cmd-92")== 0 || strcmp(szCmd, "cmd-93")== 0 || strcmp(szCmd, "cmd-94")== 0 || strcmp(szCmd, "cmd-95")== 0 || strcmp(szCmd, "cmd-96")== 0 || strcmp(szCmd, "cmd-97")== 0 || strcmp(szCmd, "cmd-98")== 0 || strcmp(szCmd, "cmd-99")== 0 || strcmp(szCmd, "cmd-100")== 0 || strcmp(szCmd, "cmd-101")== 0 || strcmp(szCmd, "cmd-102")== 0 || strcmp(szCmd, "cmd-103")== 0 || strcmp(szCmd, "cmd-104")== 0 || strcmp(szCmd, "cmd-105")== 0 || strcmp(szCmd, "cmd-106")== 0 || strcmp(szCmd, "cmd-107")== 0 || strcmp(szCmd, "cmd-108")== 0 || strcmp(szCmd, "cmd-109")== 0 || strcmp(szCmd, "cmd-110")== 0 || strcmp(szCmd, "cmd-111")== 0 || strcmp(szCmd, "cmd-112")== 0 || strcmp(szCmd, "cmd-113")== 0 || strcmp(szCmd, "cmd-114")== 0 || strcmp(szCmd, "cmd-115")== 0 || strcmp(szCmd, "cmd-116")== 0 || strcmp(szCmd, "cmd-117")== 0 || strcmp(szCmd, "cmd-118")== 0 || strcmp(szCmd, "cmd-119")== 0 || strcmp(szCmd, "cmd-120")== 0 || strcmp(szCmd, "cmd-121")== 0 || strcmp(szCmd, "cmd-122")== 0 || strcmp(szCmd, "cmd-123")== 0 || strcmp(szCmd, "cmd-124")== 0 || strcmp(szCmd, "cmd-125")== 0 || strcmp(szCmd, "cmd-126")== 0 || strcmp(szCmd, "cmd-127")== 0 || strcmp(szCmd, "cmd-128")== 0 || strcmp(szCmd, "cmd-129")== 0 || strcmp(szCmd, "cmd-130")== 0 || strcmp(szCmd, "cmd-131")== 0 || strcmp(szCmd, "cmd-132")== 0 || strcmp(szCmd, "cmd-133")== 0 || strcmp(szCmd, "cmd-134")== 0 || strcmp(szCmd, "cmd-135")== 0 || strcmp(szCmd, "cmd-136")== 0 || strcmp(szCmd, "cmd-137")== 0 || strcmp(szCmd, "cmd-138")== 0 || strcmp(szCmd, "cmd-139")== 0 || strcmp(szCmd, "cmd-140")== 0 || strcmp(szCmd, "cmd-141")== 0 || strcmp(szCmd, "cmd-142")== 0 ) { #if IS_USE_READMSG_CS EnterCriticalSection( &m_csReadMsg ); #endif DataConversion("BYTE", m_szNxV260_44Msg[nAddr - 1] + nIndex, szRecvMsg, nLen, 0, 0); #if IS_USE_READMSG_CS LeaveCriticalSection(&m_csReadMsg); #endif nRet = 0; } return nRet; } // 发送设置设备参数请求 int ParadigmNxV260::SendSetReuest( char szPath[MAX_PATH], // 程序所在路径 char szIniName[MAX_PATH], // 配置文件名称 int nCommPort, // 串行端口 int nAddr, // 设备地址 char szCmd[MAX_CMD], // 请求命令 char szRecvMsg[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接口 ) { return 0; } void ParadigmNxV260::SetNxV260Q41VarMsg(int nAddr, char szCmd[MAX_CMD], char *pBuff) { if( strcmp(szCmd, "cmd-1") == 0 || strcmp(szCmd, "cmd-2") == 0 || strcmp(szCmd, "cmd-3") == 0 || strcmp(szCmd, "cmd-4") == 0 || strcmp(szCmd, "cmd-6") == 0 || strcmp(szCmd, "cmd-5") == 0 || strcmp(szCmd, "cmd-6") == 0 || strcmp(szCmd, "cmd-7") == 0 || strcmp(szCmd, "cmd-8") == 0 || strcmp(szCmd, "cmd-9") == 0 || strcmp(szCmd, "cmd-10") == 0 || strcmp(szCmd, "cmd-11") == 0 || strcmp(szCmd, "cmd-12") == 0 || strcmp(szCmd, "cmd-13") == 0 || strcmp(szCmd, "cmd-14") == 0 ) { #if IS_USE_READMSG_CS EnterCriticalSection( &m_csReadMsg ); #endif memcpy(m_szNxV260_41Msg[nAddr - 1], pBuff, sizeof(m_szNxV260_41Msg[nAddr - 1])); #if IS_USE_READMSG_CS LeaveCriticalSection(&m_csReadMsg); #endif } } void ParadigmNxV260::SetNxV260QE1VarMsg(int nAddr, char szCmd[MAX_CMD], char *pBuff) { if( strcmp(szCmd, "cmd-14") == 0 || strcmp(szCmd, "cmd-15") == 0 || strcmp(szCmd, "cmd-16") == 0 || strcmp(szCmd, "cmd-17") == 0 || strcmp(szCmd, "cmd-18") == 0 || strcmp(szCmd, "cmd-19") == 0 || strcmp(szCmd, "cmd-20") == 0 || strcmp(szCmd, "cmd-21") == 0 || strcmp(szCmd, "cmd-22") == 0 || strcmp(szCmd, "cmd-23") == 0 || strcmp(szCmd, "cmd-24") == 0 || strcmp(szCmd, "cmd-25") == 0 || strcmp(szCmd, "cmd-26") == 0 || strcmp(szCmd, "cmd-27") == 0 || strcmp(szCmd, "cmd-28") == 0 ) { #if IS_USE_READMSG_CS EnterCriticalSection( &m_csReadMsg ); #endif memcpy(m_szNxV260_E1Msg[nAddr - 1], pBuff, sizeof(m_szNxV260_E1Msg[nAddr - 1])); #if IS_USE_READMSG_CS LeaveCriticalSection(&m_csReadMsg); #endif } } void ParadigmNxV260::SetNxV260QE2VarMsg(int nAddr, char szCmd[MAX_CMD], char *pBuff) { if( strcmp(szCmd, "cmd-29") == 0 || strcmp(szCmd, "cmd-30") == 0 || strcmp(szCmd, "cmd-31") == 0 || strcmp(szCmd, "cmd-32") == 0 || strcmp(szCmd, "cmd-33") == 0 || strcmp(szCmd, "cmd-34") == 0 || strcmp(szCmd, "cmd-35") == 0 || strcmp(szCmd, "cmd-36") == 0 || strcmp(szCmd, "cmd-37") == 0 || strcmp(szCmd, "cmd-38") == 0 || strcmp(szCmd, "cmd-39") == 0 || strcmp(szCmd, "cmd-40") == 0 || strcmp(szCmd, "cmd-41") == 0 || strcmp(szCmd, "cmd-42") == 0 || strcmp(szCmd, "cmd-43") == 0 ) { #if IS_USE_READMSG_CS EnterCriticalSection( &m_csReadMsg ); #endif memcpy(m_szNxV260_E2Msg[nAddr - 1], pBuff, sizeof(m_szNxV260_E2Msg[nAddr - 1])); #if IS_USE_READMSG_CS LeaveCriticalSection(&m_csReadMsg); #endif } } void ParadigmNxV260::SetNxV260QE3VarMsg(int nAddr, char szCmd[MAX_CMD], char *pBuff) { if( strcmp(szCmd, "cmd-44") == 0 || strcmp(szCmd, "cmd-45")== 0 || strcmp(szCmd, "cmd-46")== 0 || strcmp(szCmd, "cmd-47")== 0 || strcmp(szCmd, "cmd-48")== 0 || strcmp(szCmd, "cmd-49")== 0 || strcmp(szCmd, "cmd-50")== 0 || strcmp(szCmd, "cmd-51")== 0 || strcmp(szCmd, "cmd-52")== 0 || strcmp(szCmd, "cmd-53")== 0 || strcmp(szCmd, "cmd-54")== 0 || strcmp(szCmd, "cmd-55")== 0 || strcmp(szCmd, "cmd-56")== 0 || strcmp(szCmd, "cmd-57")== 0 || strcmp(szCmd, "cmd-58")== 0 || strcmp(szCmd, "cmd-59")== 0 || strcmp(szCmd, "cmd-60")== 0 || strcmp(szCmd, "cmd-61")== 0 ) { #if IS_USE_READMSG_CS EnterCriticalSection( &m_csReadMsg ); #endif memcpy(m_szNxV260_E3Msg[nAddr - 1], pBuff, sizeof(m_szNxV260_E3Msg[nAddr - 1])); #if IS_USE_READMSG_CS LeaveCriticalSection(&m_csReadMsg); #endif } } void ParadigmNxV260::SetNxV260Q43VarMsg(int nAddr, char szCmd[MAX_CMD], char *pBuff) { if( strcmp(szCmd, "cmd-62")== 0 || strcmp(szCmd, "cmd-63")== 0 || strcmp(szCmd, "cmd-64")== 0 || strcmp(szCmd, "cmd-65")== 0 || strcmp(szCmd, "cmd-66")== 0 || strcmp(szCmd, "cmd-67")== 0 || strcmp(szCmd, "cmd-68")== 0 || strcmp(szCmd, "cmd-69")== 0 || strcmp(szCmd, "cmd-70")== 0 || strcmp(szCmd, "cmd-71")== 0 || strcmp(szCmd, "cmd-72")== 0 || strcmp(szCmd, "cmd-73")== 0 ) { #if IS_USE_READMSG_CS EnterCriticalSection( &m_csReadMsg ); #endif memcpy(m_szNxV260_43Msg[nAddr - 1], pBuff, sizeof(m_szNxV260_43Msg[nAddr - 1])); #if IS_USE_READMSG_CS LeaveCriticalSection(&m_csReadMsg); #endif } } void ParadigmNxV260::SetNxV260Q44VarMsg(int nAddr, char szCmd[MAX_CMD], char *pBuff) { if( strcmp(szCmd, "cmd-74")== 0 || strcmp(szCmd, "cmd-75")== 0 || strcmp(szCmd, "cmd-76")== 0 || strcmp(szCmd, "cmd-77")== 0 || strcmp(szCmd, "cmd-78")== 0 || strcmp(szCmd, "cmd-79")== 0 || strcmp(szCmd, "cmd-80")== 0 || strcmp(szCmd, "cmd-81")== 0 || strcmp(szCmd, "cmd-82")== 0 || strcmp(szCmd, "cmd-83")== 0 || strcmp(szCmd, "cmd-84")== 0 || strcmp(szCmd, "cmd-85")== 0 || strcmp(szCmd, "cmd-86")== 0 || strcmp(szCmd, "cmd-87")== 0 || strcmp(szCmd, "cmd-88")== 0 || strcmp(szCmd, "cmd-89")== 0 || strcmp(szCmd, "cmd-90")== 0 || strcmp(szCmd, "cmd-91")== 0 || strcmp(szCmd, "cmd-92")== 0 || strcmp(szCmd, "cmd-93")== 0 || strcmp(szCmd, "cmd-94")== 0 || strcmp(szCmd, "cmd-95")== 0 || strcmp(szCmd, "cmd-96")== 0 || strcmp(szCmd, "cmd-97")== 0 || strcmp(szCmd, "cmd-98")== 0 || strcmp(szCmd, "cmd-99")== 0 || strcmp(szCmd, "cmd-100")== 0 || strcmp(szCmd, "cmd-101")== 0 || strcmp(szCmd, "cmd-102")== 0 || strcmp(szCmd, "cmd-103")== 0 || strcmp(szCmd, "cmd-104")== 0 || strcmp(szCmd, "cmd-105")== 0 || strcmp(szCmd, "cmd-106")== 0 || strcmp(szCmd, "cmd-107")== 0 || strcmp(szCmd, "cmd-108")== 0 || strcmp(szCmd, "cmd-109")== 0 || strcmp(szCmd, "cmd-110")== 0 || strcmp(szCmd, "cmd-111")== 0 || strcmp(szCmd, "cmd-112")== 0 || strcmp(szCmd, "cmd-113")== 0 || strcmp(szCmd, "cmd-114")== 0 || strcmp(szCmd, "cmd-115")== 0 || strcmp(szCmd, "cmd-116")== 0 || strcmp(szCmd, "cmd-117")== 0 || strcmp(szCmd, "cmd-118")== 0 || strcmp(szCmd, "cmd-119")== 0 || strcmp(szCmd, "cmd-120")== 0 || strcmp(szCmd, "cmd-121")== 0 || strcmp(szCmd, "cmd-122")== 0 || strcmp(szCmd, "cmd-123")== 0 || strcmp(szCmd, "cmd-124")== 0 || strcmp(szCmd, "cmd-125")== 0 || strcmp(szCmd, "cmd-126")== 0 || strcmp(szCmd, "cmd-127")== 0 || strcmp(szCmd, "cmd-128")== 0 || strcmp(szCmd, "cmd-129")== 0 || strcmp(szCmd, "cmd-130")== 0 || strcmp(szCmd, "cmd-131")== 0 || strcmp(szCmd, "cmd-132")== 0 || strcmp(szCmd, "cmd-133")== 0 || strcmp(szCmd, "cmd-134")== 0 || strcmp(szCmd, "cmd-135")== 0 || strcmp(szCmd, "cmd-136")== 0 || strcmp(szCmd, "cmd-137")== 0 || strcmp(szCmd, "cmd-138")== 0 || strcmp(szCmd, "cmd-139")== 0 || strcmp(szCmd, "cmd-140")== 0 || strcmp(szCmd, "cmd-141")== 0 || strcmp(szCmd, "cmd-142")== 0 ) { #if IS_USE_READMSG_CS EnterCriticalSection( &m_csReadMsg ); #endif memcpy(m_szNxV260_44Msg[nAddr - 1], pBuff, sizeof(m_szNxV260_44Msg[nAddr - 1])); #if IS_USE_READMSG_CS LeaveCriticalSection(&m_csReadMsg); #endif } } UINT ParadigmNxV260::GetCheckSum(char *pBuf, char chDest[5], int len) { WORD iSum = 0;; for(int i=0; i