⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建_文本文档_(2).txt

📁 24c64 for avr c source code, you can change it for other 24xx other document is for 率值配料下位机程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
                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 + -