📄 串口通讯.h
字号:
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 + -