;
for(by = 0; by < byLen; by++)
bySum += pbyBuf[by];
return 0 – bySum;
}
// 接收到鍵盤消息回調(diào)函數(shù)
void onKeyPressed(BYTE byValue, BYTE byState)
{
BYTE by[4];
if(byState == 0)
{
switch(byValue)
{
case 0x01:
gbitLampState = ~g bitLampState; // 燈狀態(tài)取反
TriggerLamp(gbitLampState); // 執(zhí)行控制
by[0] = 0xff; // 構(gòu)造數(shù)據(jù)包
by[1] = 0x12;
by[2] = (BYTE)gbitLampState;
by[3] = CalcCheckSum(by, 3); // 求校驗和
SendPackage(by, 4); // 發(fā)送數(shù)據(jù)包
break;
// 處理其它掃描碼
default:
break;
}
}
// 接收到數(shù)據(jù)包回調(diào)函數(shù)
void OnRecePackage(BYTE* pbyBuf, BYTE byBufLen)
{
BYTE by[4];
by[0] = 0xff;
by[1] = 0x11;
if(byBufLen != 4 || pbyBuf[3] != CalcCheckSum(pbyBuf, 3))
{
by[2] = 0;
by[3] = CalcCheckSum(by, 3);
SendPackage(by, 4); // 處理長度或校驗和不正確
}
switch(pbyBuf[1])
{
case 0x10:
gbitLampState = (BIT)pbyBuf[2];
TriggerLamp(gbitLampState);
by[2] = 1;
by[3] = CalcCheckSum(by, 3);
SendPackage(by, 4); // 發(fā)送成功執(zhí)行通知
break;
default: // 不知道的命令
by[2] = 0;
by[3] = CalcCheckSum(by, 3);
SendPackage(by, 4); // 發(fā)送沒有成功執(zhí)行通知
break;
}
}