?? 新建_文本文檔_(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 + -