#include "StdAfx.h" #include "CommProcess.h" #include ".\cms.h" CCMS::CCMS( 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 ) ); //创建或打开一个命名的或无名的事件对象; for( int i = 0; i < MAX_ADDR; i++ ) { memset(m_sz_01Msg[i], 0, sizeof(m_sz_01Msg[i])); //memset(m_sz_02Msg[i], 0, sizeof(m_sz_02Msg[i])); //memset(m_sz_03Msg[i], 0, sizeof(m_sz_03Msg[i])); //memset(m_sz_04Msg[i], 0, sizeof(m_sz_04Msg[i])); //memset(m_sz_06Msg[i], 0, sizeof(m_sz_06Msg[i])); m_devOnline[i] = TRUE; m_dwOnlineTick[i] = 0; } } CCMS::~CCMS() { #if IS_USE_READMSG_CS DeleteCriticalSection( &m_csReadMsg ); #endif MTVERIFY( CloseHandle( m_hSemComm ) ); CloseComm(); } BOOL CCMS::CMSOpenComm(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 CCMS::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接口 ) { int nIndex = 0, nLen = 0; char IniSendCMD[MAX_CMD] = {0}; char szType[TYPE_LENGTH] = {0}; char szScreen[MAX_CMD] = {0}; int StartBit = 0; int EndBit = 0; GetCMSIniInfo(szPath, szIniName, szCmd, IniSendCMD, szType, nIndex, nLen, StartBit, EndBit); CCommProcess *pComm = FindComm(nCommPort); if( pComm == NULL ) return -1; int nRet = -1; if( (strlen(m_sz_01Msg[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-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 || 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 || 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 || 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 || 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-60") == 0 || strcmp(szCmd, "cmd-61") == 0 || strcmp(szCmd, "cmd-62") == 0 || strcmp(szCmd, "cmd-63") == 0 || strcmp(szCmd, "cmd-64") == 0 )) || strcmp(szCmd, "cmd-1") == 0 || strcmp(szCmd, "cmd-16") == 0 || strcmp(szCmd, "cmd-42") == 0 ) { nRet = GetDeviceParam(nAddr, pComm, IniSendCMD, 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 = GetCMS_01VarMsg(nAddr, szCmd, szMsg, nIndex, nLen, szType, StartBit, EndBit); //LOG4C((LOG_NOTICE,"nRet = %d,cmd = %s,值 = %s",nRet,szCmd,szMsg)); return nRet; } int CCMS::GetCMS_01VarMsg( int nAddr, char szCmd[MAX_CMD], char szMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH], int startBit, int endBit ) { 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-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 || 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 || 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 || 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 || 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-60") == 0 || strcmp(szCmd, "cmd-61") == 0 || strcmp(szCmd, "cmd-62") == 0 || strcmp(szCmd, "cmd-63") == 0 || strcmp(szCmd, "cmd-64") == 0) { #if IS_USE_READMSG_CS EnterCriticalSection( &m_csReadMsg ); #endif DataProcess(szType, m_sz_01Msg[nAddr - 1] + nIndex, szMsg, nLen, startBit, endBit); #if IS_USE_READMSG_CS LeaveCriticalSection(&m_csReadMsg); #endif nRet = 0; } return nRet; } int CCMS::GetDeviceParam( int nAddr, CCommProcess *pComm, char IniSendCMD[MAX_CMD], char szCmd[MAX_CMD], char szMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH]) { int nRet = -1; nRet = RequestReadStatus(nAddr, szCmd, pComm, IniSendCMD); if( nRet != 0 ) { return nRet; } nRet = ResponseReadStatus(nAddr, pComm, szCmd, szMsg, nIndex, nLen, szType); return nRet; } void CCMS::SetCMS_01VarMsg( int nAddr, char szCmd[MAX_CMD], char *pBuffer) { 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-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 || 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 || 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 || 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 || 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-60") == 0 || strcmp(szCmd, "cmd-61") == 0 || strcmp(szCmd, "cmd-62") == 0 || strcmp(szCmd, "cmd-63") == 0 || strcmp(szCmd, "cmd-64") == 0) { #if IS_USE_READMSG_CS EnterCriticalSection( &m_csReadMsg ); #endif memcpy(m_sz_01Msg[nAddr - 1], pBuffer + 6, sizeof(m_sz_01Msg[nAddr - 1])); #if IS_USE_READMSG_CS LeaveCriticalSection(&m_csReadMsg); #endif } } int CCMS::GetCMSIniInfo( char szPath[MAX_PATH], char szIniName[MAX_PATH], char szCmd[MAX_CMD], char IniSendCMD[MAX_CMD], char szType[TYPE_LENGTH], int &nIndex, int &nLen, int &StaBit, int &EndBit ) { char szFile[MAX_PATH + 1] = ""; char szSendCmd[3] = {0}; memset(szType, 0, TYPE_LENGTH); wsprintf(szFile, "%s\\config\\%s", szPath, szIniName); GetPrivateProfileString(szCmd, "SendCmd", "", szSendCmd, MAX_CMD, szFile); IniSendCMD[0] = atoi(szSendCmd); int s = atoi(szSendCmd); GetPrivateProfileString(szCmd, "Type", "", szType, TYPE_LENGTH, szFile); nIndex = GetPrivateProfileInt(szCmd, "Index", 0, szFile); nLen = GetPrivateProfileInt(szCmd, "Len", 0, szFile); StaBit = GetPrivateProfileInt(szCmd,"Sbit",0,szFile); EndBit = GetPrivateProfileInt(szCmd,"Ebit",0,szFile); return 0; } int CCMS::RequestReadStatus( int nAddr, char szCmd[MAX_CMD], CCommProcess *pComm, char IniSendCMD[MAX_CMD] ) { int nRet = -1; #if DEBUG_CMS int iLen = sizeof(RequstCMD); char tmp[2] = {0}; RequstCMD RequestPara; ZeroMemory(&RequestPara,iLen); RequestPara.Start[0] = 0xEA; RequestPara.Start[1] = 0x02; RequestPara.Start[2] = 0x02; RequestPara.Start[3] = 0xEA; RequestPara.nAddr = nAddr; RequestPara.CMS = GetCMSbyCMD(IniSendCMD[0]); tmp[0] = nAddr; tmp[1] = RequestPara.CMS; RequestPara.Check = GetEndCheck(tmp,2); //结束符 RequestPara.End = 0x16; //LOG4C_HEX_DUMP((LOG_NOTICE, (char *)&RequestPara, sizeof(RequestPara))); if( WaitForSingleObject( m_hSemComm, 0 ) == WAIT_OBJECT_0 ) // 有信号才写串口 { ResetEvent( m_hSemComm ); int nResult = pComm->Write((BYTE *)&RequestPara, iLen); if( nResult == iLen ) { } else { SetEvent( m_hSemComm ); return EER_CODE_CMS_COM_WRITE_DATA; } } else { return ERR_CODE_CMS_COM_BUSY; } #endif return 0; } int CCMS::ResponseReadStatus( int nAddr, CCommProcess *pComm, char szCmd[MAX_CMD], char szMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH] ) { #if DEBUG_CMS int nRecvLen = 0; char *pBuffer = new char[270]; memset(pBuffer, 0, 270); nRecvLen = pComm->Read((BYTE *)pBuffer,270); if( nRecvLen <= 0) { SetEvent( m_hSemComm ); if( pBuffer != NULL) { delete[] pBuffer; pBuffer = NULL; } return ERR_CODE_CMS_COM_READ_NO_DATA; } SetCMS_01VarMsg(nAddr, szCmd, pBuffer); m_dwOnlineTick[nAddr - 1] = GetTickCount(); SetEvent( m_hSemComm ); if( pBuffer != NULL) { delete[] pBuffer; pBuffer = NULL; } #else SimulationCommData(nAddr); #endif return 0; } int CCMS::GetheadCheck(char *buf) { int len = static_cast(strlen(buf)),iSum = 0; for (int i = 0; i < len; i++) { iSum += buf[i]; } return iSum; } int CCMS::GetCMSbyCMD(unsigned char CMD,BOOL b) { char CMS = 0; // CMS 前1位,后6位bit结合; if (b) // 请求; { CMS = 0x80 + CMD; } else // 返回; { CMS = CMD; } return CMS; } int CCMS::GetEndCheck(char *buf,int len) { int iSum = 0; for (int i = 0; i < len; i++) { iSum += buf[i]; } // 再求低8位; iSum = iSum & 0x00FF; return iSum; } void CCMS:: DataProcess(char *szType, char *szMsg, char *szConvMsg, int len, int StaBit, int EndBit) { if ( strcmp(szType, "HEX1") == 0) { char sztmp1[3] = {0}; char sztmp2[3] = {0}; char sztmp[5] = {0}; BYTE tmp[2] ={0}; tmp[0] = szMsg[1]; tmp[1] = szMsg[0]; itoa(tmp[0],sztmp1,16); itoa(tmp[1],sztmp2,16); sprintf(sztmp,"%s%s",sztmp1,sztmp2); CString str; str.Format("%s",sztmp); if (str.GetLength() == 3) { str.Format("%d%s",0,sztmp); } else if (str.GetLength() == 2) { str.Format("%d%d%s",0,0,sztmp); } memcpy(sztmp,str.GetBuffer(),4); str.ReleaseBuffer(); int iSum = AsciiToBYTE(sztmp[0])*4096 + AsciiToBYTE(sztmp[1])*256 + AsciiToBYTE(sztmp[2])*16 + AsciiToBYTE(sztmp[3]) ; sprintf(szConvMsg,"%d",iSum); } else if( strcmp(szType, "HEX2") == 0) { char sztmp1[3] = {0}; char sztmp2[3] = {0}; char sztmp[5] = {0}; BYTE tmp[2] ={0}; tmp[0] = szMsg[1]; tmp[1] = szMsg[0]; itoa(tmp[0],sztmp1,16); itoa(tmp[1],sztmp2,16); sprintf(sztmp,"%s%s",sztmp1,sztmp2); CString str; str.Format("%s",sztmp); if (str.GetLength() == 3) { str.Format("%d%s",0,sztmp); } else if (str.GetLength() == 2) { str.Format("%d%d%s",0,0,sztmp); } memcpy(sztmp,str.GetBuffer(),4); str.ReleaseBuffer(); int iSum = AsciiToBYTE(sztmp[0])*4096 + AsciiToBYTE(sztmp[1])*256 + AsciiToBYTE(sztmp[2])*16 + AsciiToBYTE(sztmp[3]) ; iSum = iSum & 0x0FFF; if (tmp[0] >> 7) { sprintf(szConvMsg,"-%d",iSum); return; } sprintf(szConvMsg,"%d",iSum); } else if( strcmp(szType, "HEX3") == 0) { sprintf(szConvMsg,"%d",szMsg[0]); } else if ( strcmp(szType, "HEX4") == 0 ) { //BYTE tmp = 0x04; BitDataProcess((BYTE)szMsg[0],szConvMsg,StaBit,EndBit); //BitDataProcess(tmp,szConvMsg,StaBit,EndBit); } } void CCMS::BitDataProcess(const BYTE bySour, char *szRecv,int &StaBit,int &EndBit) { int ByteBit = 0; int sum = bySour; #if 0 switch(StaBit) { case 7: ByteBit = sum & 0x01; break; case 6: ByteBit = (sum & 0x02) / 0x02 ; break; case 5: ByteBit = (sum & 0x04) / 0x04 ; break; case 4: ByteBit = (sum & 0x08) / 0x08 ; break; case 3: ByteBit = (sum & 0x10) / 0x10 ; break; case 2: ByteBit = (sum & 0x20) / 0x20 ; break; case 1: ByteBit = (sum & 0x40) / 0x40 ; break; case 0: ByteBit = (sum & 0x80) / 0x80; break; } #else switch(StaBit) { case 0: ByteBit = sum & 0x01; break; case 1: ByteBit = (sum & 0x02) / 0x02 ; break; case 2: ByteBit = (sum & 0x04) / 0x04 ; break; case 3: ByteBit = (sum & 0x08) / 0x08 ; break; case 4: ByteBit = (sum & 0x10) / 0x10 ; break; case 5: ByteBit = (sum & 0x20) / 0x20 ; break; case 6: ByteBit = (sum & 0x40) / 0x40 ; break; case 7: ByteBit = (sum & 0x80) / 0x80; break; } #endif sprintf(szRecv,"%d",ByteBit); } void CCMS::SimulationCommData(int nAddr) { //char sztemp[1024] = {0}; //sztemp[0] = 0xEA; //sztemp[1] = 0x03; //sztemp[2] = 0x03; //sztemp[3] = 0xEA; //sztemp[4] = 0x01; //sztemp[5] = 0x01; //sztemp[6] = 0xDB; //sztemp[7] = 0x00; //sztemp[8] = 0xDA; //sztemp[9] = 0x00; //sztemp[10] = 0xDE; //sztemp[11] = 0x00; //sztemp[12] = 0xDE; //sztemp[13] = 0x00; //sztemp[14] = 0xDE; //sztemp[15] = 0x00; //sztemp[16] = 0xDE; //sztemp[17] = 0x00; //sztemp[18] = 0xDC; //sztemp[19] = 0x00; //sztemp[20] = 0xDC; //sztemp[21] = 0x00; //sztemp[22] = 0xDF; //sztemp[23] = 0x00; //sztemp[24] = 0x11; //sztemp[25] = 0x00; //sztemp[26] = 0x0A; //sztemp[27] = 0x00; //sztemp[28] = 0x14; //sztemp[29] = 0x00; //sztemp[30] = 0xBE; //sztemp[31] = 0x0E; //sztemp[32] = 0xAC; //sztemp[33] = 0x08; //sztemp[34] = 0x58; //sztemp[35] = 0x11; //sztemp[36] = 0xA8; //sztemp[37] = 0x01; //sztemp[38] = 0xA7; //sztemp[39] = 0x01; //sztemp[40] = 0x10; //sztemp[41] = 0x00;//0x00 //sztemp[42] = 0x04; //sztemp[43] = 0x00; //sztemp[44] = 0xF4; //sztemp[45] = 0x01; //sztemp[46] = 0x05; //sztemp[47] = 0x0A; //sztemp[48] = 0xA4; //sztemp[49] = 0x00; //sztemp[50] = 0x00; //sztemp[51] = 0x00; //sztemp[52] = 0x00; //sztemp[53] = 0x00; //sztemp[54] = 0x00; //sztemp[55] = 0x00; //sztemp[56] = 0x01; //sztemp[57] = 0x48; //sztemp[58] = 0x16; //memcpy(m_sz_01Msg[nAddr - 1], sztemp + 6, sizeof(m_sz_01Msg[nAddr - 1])); }