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

📄 串口通讯.h

📁 rs422串口编程
💻 H
📖 第 1 页 / 共 3 页
字号:
            if(tail[0]=='*'&&tail[2]=='\r'&&tail[3]=='\n'){
               test_code=rec_data[0];
               for(j=0;j<27;j=j+1){             //计算校验码
                   test_code=test_code^rec_data[j+1];
               }
               for(j=0;j<4;j=j+1){
                  test_code=test_code^head[j+1];
               }
            }
            if(test_code==tail[1]){             //校验码无误,数据接收
              for(j=0;j<28;j=j+1){
                rec_att.tra_data[j]=rec_data[j];
              }
               //////////////////数据格式转换//////////////////////
               rec_att.ins_data.sinstime=long_int_swap(rec_att.ins_data.sinstime);
               rec_att.ins_data.attitude1=float_swap(rec_att.ins_data.attitude1);
               rec_att.ins_data.attitude2=float_swap(rec_att.ins_data.attitude2);
               rec_att.ins_data.attitude3=float_swap(rec_att.ins_data.attitude3);
               rec_att.ins_data.rate1=float_swap(rec_att.ins_data.rate1);
               rec_att.ins_data.rate2=float_swap(rec_att.ins_data.rate2);
               rec_att.ins_data.rate3=float_swap(rec_att.ins_data.rate3);
              sys_flag=2;
              return(2);
            }
       }
       /////////////////////
       if(strcmp(head,"$NTWO")==0){           //二维系统判断数据头
            for(j=0;j<40;j=j+1){
                 rec_data[j]=s_read();
            }
            tail[0]=s_read();
            tail[1]=s_read();
            tail[2]=s_read();
            tail[3]=s_read();
            if(tail[0]=='*'&&tail[2]=='\r'&&tail[3]=='\n'){
               test_code=rec_data[0];
               for(j=0;j<39;j=j+1){             //计算校验码
                   test_code=test_code^rec_data[j+1];
               }
               for(j=0;j<4;j=j+1){
                  test_code=test_code^head[j+1];
               }
            }
            if(test_code==tail[1]){             //校验码无误,数据接收
              for(j=0;j<39;j=j+1){
                rec_two.tra_data[j]=rec_data[j];
              }
                 //////////////////数据格式转换//////////////////////
               rec_two.ins_data.sinstime=long_int_swap(rec_two.ins_data.sinstime);
               rec_two.ins_data.attitude1=float_swap(rec_two.ins_data.attitude1);
               rec_two.ins_data.attitude2=float_swap(rec_two.ins_data.attitude2);
               rec_two.ins_data.attitude3=float_swap(rec_two.ins_data.attitude3);
               rec_two.ins_data.rate1=float_swap(rec_two.ins_data.rate1);
               rec_two.ins_data.rate2=float_swap(rec_two.ins_data.rate2);
               rec_two.ins_data.pos_integer1=float_swap(rec_two.ins_data.pos_integer1);
               rec_two.ins_data.pos_integer2=float_swap(rec_two.ins_data.pos_integer2);
               rec_two.ins_data.pos_decimal1=float_swap(rec_two.ins_data.pos_decimal1);
               rec_two.ins_data.pos_decimal2=float_swap(rec_two.ins_data.pos_decimal2);
              sys_flag=3;
              return(3);
            }
       }
       ////////////////////////
       if(strcmp(head,"$RIMU")==0){           //IMU原始数据判断数据头
            for(j=0;j<32;j=j+1){
                 rec_data[j]=s_read();
            }
            tail[0]=s_read();
            tail[1]=s_read();
            tail[2]=s_read();
            tail[3]=s_read();
            if(tail[0]=='*'&&tail[2]=='\r'&&tail[3]=='\n'){
               test_code=rec_data[0];
               for(j=0;j<31;j=j+1){             //计算校验码
                   test_code=test_code^rec_data[j+1];
               }
               for(j=0;j<4;j=j+1){
                  test_code=test_code^head[j+1];
               }
            }
            if(test_code==tail[1]){             //校验码无误,数据接收
              for(j=0;j<32;j=j+1){
                rec_imu.tra_data[j]=rec_data[j];
              }
               //////////////////数据格式转换//////////////////////
               rec_imu.ins_data.sinstime=long_int_swap(rec_imu.ins_data.sinstime);
               rec_imu.ins_data.gyro1=float_swap(rec_imu.ins_data.gyro1);
               rec_imu.ins_data.gyro2=float_swap(rec_imu.ins_data.gyro2);
               rec_imu.ins_data.gyro3=float_swap(rec_imu.ins_data.gyro3);
               rec_imu.ins_data.accel1=float_swap(rec_imu.ins_data.accel1);
               rec_imu.ins_data.accel2=float_swap(rec_imu.ins_data.accel2);
               rec_imu.ins_data.accel3=float_swap(rec_imu.ins_data.accel3);
               rec_imu.ins_data.temp=float_swap(rec_imu.ins_data.temp);
              return(4);
            }
       }
       //////////////////
       if(strcmp(head,"$RGPS")==0){           //GPS原始数据判断数据头
            for(j=0;j<48;j=j+1){
                 rec_data[j]=s_read();
            }
            tail[0]=s_read();
            tail[1]=s_read();
            tail[2]=s_read();
            tail[3]=s_read();
            if(tail[0]=='*'&&tail[2]=='\r'&&tail[3]=='\n'){
               test_code=rec_data[0];
               for(j=0;j<47;j=j+1){             //计算校验码
                   test_code=test_code^rec_data[j+1];
               }
               for(j=0;j<4;j=j+1){
                  test_code=test_code^head[j+1];
               }
            }
            if(test_code==tail[1]){             //校验码无误,数据接收
              for(j=0;j<48;j=j+1){
                rec_gps.tra_data[j]=rec_data[j];
              }
              //////////////////数据格式转换//////////////////////
               rec_gps.ins_data.sinstime=long_int_swap(rec_gps.ins_data.sinstime);
               rec_gps.ins_data.attitude1=float_swap(rec_gps.ins_data.attitude1);
               rec_gps.ins_data.rate1=float_swap(rec_gps.ins_data.rate1);
               rec_gps.ins_data.rate2=float_swap(rec_gps.ins_data.rate2);
               rec_gps.ins_data.rate3=float_swap(rec_gps.ins_data.rate3);
               rec_gps.ins_data.pos_integer1=float_swap(rec_gps.ins_data.pos_integer1);
               rec_gps.ins_data.pos_integer2=float_swap(rec_gps.ins_data.pos_integer2);
               rec_gps.ins_data.pos_integer3=float_swap(rec_gps.ins_data.pos_integer3);
               rec_gps.ins_data.pos_decimal1=float_swap(rec_gps.ins_data.pos_decimal1);
               rec_gps.ins_data.pos_decimal2=float_swap(rec_gps.ins_data.pos_decimal2);
               rec_gps.ins_data.pos_decimal3=float_swap(rec_gps.ins_data.pos_decimal3);
               rec_gps.ins_data.sat_pdop=int_swap(rec_gps.ins_data.sat_pdop);
              return(5);
            }
       }
       ////////////////
       if(strcmp(head,"$RHMR")==0){           //磁罗盘原始数据判断数据头
            for(j=0;j<21;j=j+1){
                 rec_data[j]=s_read();
            }
            tail[0]=s_read();
            tail[1]=s_read();
            tail[2]=s_read();
            tail[3]=s_read();
            if(tail[0]=='*'&&tail[2]=='\r'&&tail[3]=='\n'){
               test_code=rec_data[0];
               for(j=0;j<20;j=j+1){             //计算校验码
                   test_code=test_code^rec_data[j+1];
               }
               for(j=0;j<4;j=j+1){
                  test_code=test_code^head[j+1];
               }
            }
            if(test_code==tail[1]){             //校验码无误,数据接收
              for(j=0;j<21;j=j+1){
                rec_hmr.tra_data[j]=rec_data[j];
              }
               //////////////////数据格式转换//////////////////////
               rec_hmr.ins_data.sinstime=long_int_swap(rec_hmr.ins_data.sinstime);
               rec_hmr.ins_data.attitude1=float_swap(rec_hmr.ins_data.attitude1);
               rec_hmr.ins_data.mag1=float_swap(rec_hmr.ins_data.mag1);
               rec_hmr.ins_data.mag2=float_swap(rec_hmr.ins_data.mag2);
               rec_hmr.ins_data.mag3=float_swap(rec_hmr.ins_data.mag3);
              return(6);
            }
       }
       /////////////
       if(strcmp(head,"$NAVD")==0){           //205所控显器判断数据头
            for(j=0;j<56;j=j+1){
                 rec_data[j]=s_read();
            }
            tail[0]=s_read();
            tail[1]=s_read();
            tail[2]=s_read();
            tail[3]=s_read();
            if(tail[0]=='*'&&tail[2]=='\r'&&tail[3]=='\n'){
               test_code=rec_data[0];
               for(j=0;j<55;j=j+1){             //计算校验码
                   test_code=test_code^rec_data[j+1];
               }
               for(j=0;j<4;j=j+1){
                  test_code=test_code^head[j+1];
               }
            }
            if(test_code==tail[1]){             //校验码无误,数据接收
               for(j=0;j<56;j=j+1){
                 rec_205.tra_data[j]=rec_data[j];
               }
               //////////////////数据格式转换//////////////////////
               rec_205.ins_data.sinstime=long_int_swap(rec_205.ins_data.sinstime);
               rec_205.ins_data.attitude1=float_swap(rec_205.ins_data.attitude1);
               rec_205.ins_data.attitude2=float_swap(rec_205.ins_data.attitude2);
               rec_205.ins_data.attitude3=float_swap(rec_205.ins_data.attitude3);
               rec_205.ins_data.ang_rate1=float_swap(rec_205.ins_data.ang_rate1);
               rec_205.ins_data.ang_rate2=float_swap(rec_205.ins_data.ang_rate2);
               rec_205.ins_data.ang_rate3=float_swap(rec_205.ins_data.ang_rate3);
               rec_205.ins_data.pos_integer1=float_swap(rec_205.ins_data.pos_integer1);
               rec_205.ins_data.pos_integer2=float_swap(rec_205.ins_data.pos_integer2);
               rec_205.ins_data.pos_integer3=float_swap(rec_205.ins_data.pos_integer3);
               rec_205.ins_data.pos_decimal1=float_swap(rec_205.ins_data.pos_decimal1);
               rec_205.ins_data.pos_decimal2=float_swap(rec_205.ins_data.pos_decimal2);
               rec_205.ins_data.pos_decimal3=float_swap(rec_205.ins_data.pos_decimal3);
               rec_205.ins_data.sat_pdop=int_swap(rec_205.ins_data.sat_pdop);
               sys_flag=4;
               return(7);
            }
       }
       ///////////////////////////
       return(0);
}
//串口数据发送函数
void send_data(void)
/* send_data : 发送初始化的导航参数                */
/*                                              */
/*            Input  :                          */
/*                     无                       */
/*            Return : 无                       */
{
unsigned char ii;
unsigned char head[6],tail[3];
       head[0]='$';
       head[1]='I';
       head[2]='N';
       head[3]='T';
       head[4]='T';
       head[5]='\0';
       tail[0]='\r';
       tail[1]='\n';
       tail[2]='\0';
       s_writes(head);
       for(ii=0;ii<29;ii=ii+1){
            s_write(send_init_data.char_data[ii]);
       }
       s_writes(tail);
       return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -