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;
}