;
for(by = 0; by < byLen; by++)
bySum += pbyBuf[by];
return 0 – bySum;
}
// 接收到键盘消息回调函数
void onKeyPressed(BYTE byValue, BYTE byState)
{
BYTE by[4];
if(byState == 0)
{
switch(byValue)
{
case 0x01:
gbitLampState = ~g bitLampState; // 灯状态取反
TriggerLamp(gbitLampState); // 执行控制
by[0] = 0xff; // 构造数据包
by[1] = 0x12;
by[2] = (BYTE)gbitLampState;
by[3] = CalcCheckSum(by, 3); // 求校验和
SendPackage(by, 4); // 发送数据包
break;
// 处理其它扫描码
default:
break;
}
}
// 接收到数据包回调函数
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); // 发送成功执行通知
break;
default: // 不知道的命令
by[2] = 0;
by[3] = CalcCheckSum(by, 3);
SendPackage(by, 4); // 发送没有成功执行通知
break;
}
}