📄 新建_文本文档_(2).txt
字号:
SendBuff[12]=00;
SendBuff[13]=00;
SendBuff[14]=00;
SendBuff[15]=00;
SendBuff[16]=00;
SendBuff[17]=00;
SendBuff[18]=00;
SendBuff[19]=00;
SendBuff[20]=00;
CRC_Assign(&SendBuff[2],19,&SendBuff[21],&SendBuff[22]);//CRC校验
sendComm();
}
break;
//-----------------------------------------------------------------------------
//功 能:发送配比数据
//上位机:AA 09 LEN LEN XX1 XX1 XX1 XX2 XX2 XX2 XX2 XX3 XX3 XX3 XX4 XX4 XX4 XX5 XX5 XX5 XX6 XX6 XX6 XX7 XX7 XX7 XX8 XX8 操作码......... CRC1 CRC2
// |总长度||--数据1--| ...........................................................................|---操作序列--|
//描 述:总长度= 2+2+24+N+2;
//下位机: 5个字节
// 正确:BB 09 00 00 00
// 需要注册:BB 09 CC 级别 00
// CRC错误: BB 09 FF 00 00
//-----------------------------------------------------------------------------
case 0x09:
DataBuff[0]=0x09;
DataBuff[1]=getuchar();
DataBuff[2]=getuchar();
DataLen=BytesToInt(DataBuff[1],DataBuff[2]);
for(i=0;i<DataLen-4;i++)
{
Temp=getuchar();
DataBuff[i+3]=Temp;//数据
}
//处理命令
if (CRC_Check(&DataBuff[0],DataLen-3,DataBuff[DataLen-3],DataBuff[DataLen-2]))//CRC校验
{
//模拟按键
Temp=CheckPassword();
if(Temp==0xFF)
{
if(UseCount<1000)
UseCount=UseCount+1;
//sound();
sendkeys(&DataBuff[27],DataLen-30,0);
// nosound();
SendBuff[0]=0x05;//发送长度
SendBuff[1]=0xBB;
SendBuff[2]=0x09;
SendBuff[3]=0x00;
SendBuff[4]=0x00;
SendBuff[5]=0x00;
sendComm();
NeedSaveFlag=0x09;
display_percent();
}
else
{
SendBuff[0]=0x05;//发送长度
SendBuff[1]=0xBB;
SendBuff[2]=0x09;
SendBuff[3]=0xCC;
SendBuff[4]=PasswordStat;
SendBuff[5]=0x00;
sendComm();
}
}
else
{
SendBuff[0]=0x05;//发送长度
SendBuff[1]=0xBB;
SendBuff[2]=0x09;
SendBuff[3]=0xFF;
SendBuff[4]=0x00;
SendBuff[5]=0x00;
sendComm();
}
break;
//-----------------------------------------------------------------------------
//功 能:解一级密码
//上位机:AA 0A XX XX XX XX XX XX CRC1 CRC2
// |6个字节的密码 |
//下位机: 5个字节
// 正确:BB 0A 00 00 00
// 密码错误: BB 0A EE 00 00
// CRC错误: BB 0A FF 00 00
//-----------------------------------------------------------------------------
case 0x0A:
for(i=0;i<8;i++)
{
Temp=getuchar();
RecvBuff[i+1]=Temp;//数据
}
//处理命令
if (CRC_Check(&RecvBuff[0],7,RecvBuff[7],RecvBuff[8]))//CRC校验
{
delay_s(2);
ReadPassword();//读取密码
// 读取密码
// 解一级密码
if(RecvBuff[1]==Password1[0]&&RecvBuff[2]==Password1[1]&&RecvBuff[3]==Password1[2]&&RecvBuff[4]==Password1[3]&&RecvBuff[5]==Password1[4]&&RecvBuff[6]==Password1[5])
{
SendBuff[0]=0x05;//发送长度
SendBuff[1]=0xBB;
SendBuff[2]=0x0A;
SendBuff[3]=0x00;
SendBuff[4]=0x00;
SendBuff[5]=0x00;
sendComm();
//保存密码状态
if(PasswordStat==1)
{
PasswordStat=2;
NeedSaveFlag=0x0A;
}
}
else
{
SendBuff[0]=0x05;//发送长度
SendBuff[1]=0xBB;
SendBuff[2]=0x0A;
SendBuff[3]=0xEE;
SendBuff[4]=0x00;
SendBuff[5]=0x00;
sendComm();
}
}
else
{
SendBuff[0]=0x05;//发送长度
SendBuff[1]=0xBB;
SendBuff[2]=0x0A;
SendBuff[3]=0xFF;
SendBuff[4]=0x00;
SendBuff[5]=0x00;
sendComm();
}
break;
//-----------------------------------------------------------------------------
//功 能:解二级密码
//上位机:AA 0B XX XX XX XX XX XX CRC1 CRC2
// |6个字节的密码 |
//下位机: 5个字节
// 正确:BB 0B 00 00 00
// 密码错误: BB 0B EE 00 00
// CRC错误: BB 0B FF 00 00
//-----------------------------------------------------------------------------
case 0x0B:
for(i=0;i<8;i++)
{
Temp=getuchar();
RecvBuff[i+1]=Temp;//数据
}
//处理命令
if (CRC_Check(&RecvBuff[0],7,RecvBuff[7],RecvBuff[8]))//CRC校验
{
delay_s(2);
ReadPassword();//读取密码
//解二级密码
if(RecvBuff[1]==Password2[0]&&RecvBuff[2]==Password2[1]&&RecvBuff[3]==Password2[2]&&RecvBuff[4]==Password2[3]&&RecvBuff[5]==Password2[4]&&RecvBuff[6]==Password2[5])
{
SendBuff[0]=0x05;//发送长度
SendBuff[1]=0xBB;
SendBuff[2]=0x0B;
SendBuff[3]=0x00;
SendBuff[4]=0x00;
SendBuff[5]=0x00;
sendComm();
//保存密码状态
if(PasswordStat==2)
{
PasswordStat=3;
NeedSaveFlag=0x0B;
}
}
else
{
SendBuff[0]=0x05;//发送长度
SendBuff[1]=0xBB;
SendBuff[2]=0x0B;
SendBuff[3]=0xEE;
SendBuff[4]=0x00;
SendBuff[5]=0x00;
sendComm();
}
}
else
{
SendBuff[0]=0x05;//发送长度
SendBuff[1]=0xBB;
SendBuff[2]=0x0B;
SendBuff[3]=0xFF;
SendBuff[4]=0x00;
SendBuff[5]=0x00;
sendComm();
}
break;
//-----------------------------------------------------------------------------
//功 能:解三级密码
//上位机:AA 0C XX XX XX XX XX XX CRC1 CRC2
// |6个字节的密码 |
//下位机: 5个字节
// 正确:BB 0C 00 00 00
// 密码错误: BB 0C EE 00 00
// CRC错误: BB 0C FF 00 00
//-----------------------------------------------------------------------------
case 0x0C:
for(i=0;i<8;i++)
{
Temp=getuchar();
RecvBuff[i+1]=Temp;//数据
}
//处理命令
if (CRC_Check(&RecvBuff[0],7,RecvBuff[7],RecvBuff[8]))//CRC校验
{
delay_s(2);
ReadPassword();//读取密码
//解三级密码程序处理
if(RecvBuff[1]==Password3[0]&&RecvBuff[2]==Password3[1]&&RecvBuff[3]==Password3[2]&&RecvBuff[4]==Password3[3]&&RecvBuff[5]==Password3[4]&&RecvBuff[6]==Password3[5])
{
SendBuff[0]=0x05;//发送长度
SendBuff[1]=0xBB;
SendBuff[2]=0x0C;
SendBuff[3]=0x00;
SendBuff[4]=0x00;
SendBuff[5]=0x00;
sendComm();
//保存密码状态
PasswordStat=100;
NeedSaveFlag=0x0C;
}
else
{
SendBuff[0]=0x05;//发送长度
SendBuff[1]=0xBB;
SendBuff[2]=0x0C;
SendBuff[3]=0xEE;
SendBuff[4]=0x00;
SendBuff[5]=0x00;
sendComm();
}
}
else
{
SendBuff[0]=0x05;//发送长度
SendBuff[1]=0xBB;
SendBuff[2]=0x0C;
SendBuff[3]=0xFF;
SendBuff[4]=0x00;
SendBuff[5]=0x00;
sendComm();
}
break;
//-----------------------------------------------------------------------------
//功 能:读当前配比
//上位机:AA 0D 00 00
//下位机: 26个字节
// 正确:BB 0D 00 XX1 XX1 XX1 XX2 XX2 XX2 XX3 XX3 XX3 XX4 XX4 XX4 XX5 XX5 XX5 XX6 XX6 XX6 XX7 XX7 XX7 XX8 XX8 CRC1 CRC2
// |配比数据1|.....
// CRC错误: BB 0D FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 CRC1 CRC2
//-----------------------------------------------------------------------------
case 0x0D:
for(i=0;i<2;i++)
{
Temp=getuchar();
RecvBuff[i+1]=Temp;//数据
}
//处理命令
if(RecvBuff[0]==0x0D&&RecvBuff[1] ==0x00&&RecvBuff[2]==0x00)
{
SendBuff[0]=0x29;//发送长度=3+3*8+2
SendBuff[1]=0xBB;
SendBuff[2]=0x0D;
SendBuff[3]=0x00;
SendBuff[4]=DataBuff[3];
SendBuff[5]=DataBuff[4];
SendBuff[6]=DataBuff[5];
SendBuff[7]=DataBuff[6];
SendBuff[8]=DataBuff[7];
SendBuff[9]=DataBuff[8];
SendBuff[10]=DataBuff[9];
SendBuff[11]=DataBuff[10];
SendBuff[12]=DataBuff[11];
SendBuff[13]=DataBuff[12];
SendBuff[14]=DataBuff[13];
SendBuff[15]=DataBuff[14];
SendBuff[16]=DataBuff[15];
SendBuff[17]=DataBuff[16];
SendBuff[18]=DataBuff[17];
SendBuff[19]=DataBuff[18];
SendBuff[20]=DataBuff[19];
SendBuff[21]=DataBuff[20];
SendBuff[22]=DataBuff[21];
SendBuff[23]=DataBuff[22];
SendBuff[24]=DataBuff[23];
SendBuff[25]=DataBuff[24];
SendBuff[26]=DataBuff[25];
SendBuff[27]=DataBuff[26];
CRC_Assign(&SendBuff[2],26,&SendBuff[28],&SendBuff[29]);//CRC校验
sendComm();
}
else
{
SendBuff[0]=0x29;//发送长度
SendBuff[1]=0xBB;
SendBuff[2]=0x0D;
SendBuff[3]=0xFF;
SendBuff[4]=00;
SendBuff[5]=00;
SendBuff[6]=00;
SendBuff[7]=00;
SendBuff[8]=00;
SendBuff[9]=00;
SendBuff[10]=00;
SendBuff[11]=00;
SendBuff[12]=00;
SendBuff[13]=00;
SendBuff[14]=00;
SendBuff[15]=00;
SendBuff[16]=00;
SendBuff[17]=00;
SendBuff[18]=00;
SendBuff[19]=00;
SendBuff[20]=00;
SendBuff[21]=00;
SendBuff[22]=00;
SendBuff[23]=00;
SendBuff[24]=00;
SendBuff[25]=00;
SendBuff[26]=00;
SendBuff[27]=00;
CRC_Assign(&SendBuff[2],26,&SendBuff[28],&SendBuff[29]);//CRC校验
sendComm();
}
break;
//-----------------------------------------------------------------------------
//功 能:读报警上下限
//上位机:AA 0E 组号 CRC1 CRC2
//下位机: 10个字节
// 正确:BB 0E 00 XX XX XX XX XX CRC1 CRC2
// |组| |上限| |下限|
// CRC错误: BB 0E FF 00 00 00 00 00 CRC1 CRC2
//-----------------------------------------------------------------------------
case 0x0E:
for(i=0;i<3;i++)
{
Temp=getuchar();
RecvBuff[i+1]=Temp;//数据
}
if (CRC_Check(&RecvBuff[0],2,RecvBuff[2],RecvBuff[3]))//CRC校验
{
SendBuff[0]=0x10;//发送长度
SendBuff[1]=0xBB;
SendBuff[2]=0x0E;
SendBuff[3]=0x00;
SendBuff[4]=RecvBuff[1];//序号
IntToBytes_Assign(&ADUp[RecvBuff[1]-1],&SendBuff[5],&SendBuff[6]);//上限
IntToBytes_Assign(&ADDown[RecvBuff[1]-1],&SendBuff[7],&SendBuff[8]);//下限
CRC_Assign(&SendBuff[2],7,&SendBuff[9],&SendBuff[10]);//CRC校验
sendComm();
}
else
{
SendBuff[0]=0x10;//发送长度
SendBuff[1]=0xBB;
SendBuff[2]=0x0E;
SendBuff[3]=0xFF;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -