void DLT645_Query::MakeQuery(void *nDeviceAddress, unsigned int nNumber_DI, int nFunction) { BYTE Send[300] = {0}; BYTE *pCur=Send; // *pCur++=0xfe; //前导字符 // *pCur++=0xfe; // *pCur++=0xfe; // *pCur++=0xfe; *pCur++ = 0x68; memcpy(pCur,nDeviceAddress,6); //地址域 pCur += 6; *pCur++ = 0x68; *pCur++ = 0x01; *pCur++ = nFunction; // unsigned int *p = nNumber_DI; memcpy(pCur,&nNumber_DI,2); for(int i=0;i<2;i++) //要加33h处理 { *pCur++ += 0x33; //=>*pCur+=0x33;pCur++; } BYTE value = (BYTE)MakeSum(Send,pCur-Send); *pCur++ = value; *pCur++ = 0x16; SetData(Send,pCur-Send); }
BOOL CCmdHandler::DealCmdKeyboard(const char *cmd, WORD wLen) { do { const BYTE cmd_chk = static_cast<BYTE>(cmd[wLen - 1]); const BYTE compute_chk = MakeSum(cmd, wLen); if (cmd_chk != compute_chk) break; static const BYTE _EB = 0xeb; static const BYTE _AE = 0xae; if (_EB != static_cast<BYTE>(cmd[0]) || _AE != static_cast<BYTE>(cmd[1])) break; BYTE hundred = static_cast<BYTE>(cmd[5]); BYTE decade = static_cast<BYTE>(cmd[6]); BYTE single = static_cast<BYTE>(cmd[7]); int idArea = -1; static const BYTE _INVALID_KEYBOARD_ADDR = 0xfa; //if (_INVALID_KEYBOARD_ADDR != static_cast<BYTE>(cmd[2])) { // m_ucKeyboardAddr = static_cast<BYTE>(cmd[2]); //}MY_SERIAL_NDX if (hundred == 0xff || decade == 0xff || single == 0xff) { idArea = -1; } else { idArea = (hundred & 0x0f) * 100 + (decade & 0x0f) * 10 + (single & 0x0f); } return TRUE; } while (0); return FALSE; }
BOOL CCmdHandler::DealCmdComputer(const char* cmd, WORD wLen) { do { const BYTE cmd_chk = static_cast<BYTE>(cmd[wLen - 1]); const BYTE compute_chk = MakeSum(cmd, wLen); if (cmd_chk != compute_chk) { CLog::WriteLog(_T("CCmdHandler::DealCmdComputer cheksum invalid**************************************\n")); //break; //ASSERT(0); } static const BYTE _EB = 0xeb; static const BYTE _B0 = 0xb1; if (_EB != static_cast<BYTE>(cmd[0]) || _B0 != static_cast<BYTE>(cmd[1])) { CLog::WriteLog(_T("CCmdHandler::DealCmdComputer bigclass litclass invalid\n")); break; } return TRUE; } while (0); return FALSE; }