📄 uart1.c
字号:
u1_command_=0x00;
}
break;
case 0x06: //设置模块的身份地址
if (u1_acc==0x01)
{ u1_receflag=0x07;
u1_count=2;
pu1_command=data_buf;
changeslave_num=0;
idle_time=eeidle_time;
}
else if (u1_acc==0x02)
{ u1_receflag=30;
u1_count=2;
pu1_command=data_buf;
changeslave_num=0;
idle_time=eeidle_time;
}
else
{ u1_command[0]=0xf4;
u1_command[1]=0x03;
u1_command[2]=ee_slave[0];
u1_command[3]=ee_slave[1];
temp_int=IEMI;
u1_command[4]=temp_int>>8;
u1_command[5]=temp_int & 0xff;
u1_sendlen=6;
u1send_command();
}
break;
case 0x07:
*pu1_command=u1_acc;
pu1_command++;
u1_count--;
if (u1_count==0)
{ //cslave[0]=u1_command[0];
//cslave[1]=u1_command[1];
t0_rtflag=1;
u0_sendflag=14;
u1_receflag=0;
u1_command_=0x00;
}
break;
case 0x08: //设置模块连接数据中心的地址
if ((u1_acc==0x01) || (u1_acc==0x02))
{ ip_flag=u1_acc;
u1_receflag=0x09;
u1_count=8;
pu1_command=data_buf;
}
else
{ u1_command[0]=0xf5;
u1_command[1]=0x03;
for (i=2;i<10;i++)
{ u1_command[i]=ip[i-2];
}
for (i=10;i<18;i++)
{ u1_command[i]=ip2[i-10];
}
u1_sendlen=18;
u1send_command();
}
break;
case 0x09:
*pu1_command=u1_acc;
pu1_command++;
u1_count--;
if (u1_count==0)
{ ee_flag=1;
ee_len=8;
u1_receflag=0;
u1_command_=0x00;
if (ip_flag==1)
{ ee_address=IP_ID;
for (i=0;i<8;i++)
{ ip[i]=data_buf[i];
}
convert_ip(ip,ip_number1);
}
else
{ ee_address=IP_ID+8;
for (i=0;i<8;i++)
{ ip2[i]=data_buf[i];
}
convert_ip(ip2,ip_number2);
}
}
break;
case 10: //设置模块的空闲连接时间
if (u1_acc==0x01)
{ u1_receflag=11;
u1_count=2;
pu1_command=data_buf;
}
else
{ u1_command[0]=0xf6;
u1_command[1]=0x03;
u1_command[2]=eeidle_time >> 8;
u1_command[3]=eeidle_time & 0xff;
u1_sendlen=4;
u1send_command();
}
break;
case 11:
*pu1_command=u1_acc;
pu1_command++;
u1_count--;
if (u1_count==0)
{ ee_flag=1;
ee_len=2;
ee_address=DELAY_ID;
u1_receflag=0;
eeidle_time=data_buf[0]*256+data_buf[1];
u1_command_=0x00;
}
break;
case 12: //设置模块的密码组码
if (u1_acc==0x01)
{ u1_receflag=13;
u1_count=4;
pu1_command=data_buf;
}
else
{ u1_command[0]=0xf7;
u1_command[1]=0x03;
u1_command[2]=group[0];
u1_command[3]=group[1];
u1_command[4]=group[2];
u1_command[5]=group[3];
u1_sendlen=6 ;
u1send_command();
}
break;
case 13:
*pu1_command=u1_acc;
pu1_command++;
u1_count--;
if (u1_count==0)
{ ee_flag=1;
ee_len=4;
ee_address=CIPHER_ID;
u1_receflag=0;
u1_command_=0x00;
group[0]=data_buf[0];
group[1]=data_buf[1];
group[2]=data_buf[2];
group[3]=data_buf[3];
}
break;
case 14: //主被动模式选择
if (u1_acc==0x01)
{ u1_receflag=15;
}
else
{ u1_command[0]=0xf8;
u1_command[1]=0x03;
u1_command[2]=zb_mode;
u1_sendlen=3;
u1send_command();
}
break;
case 15:
if (u1_acc==0)
data_buf[0]=0;
else
data_buf[0]=1;
zb_mode=data_buf[0];
ee_flag=1;
ee_len=1;
ee_address=ZB_MODE;
u1_receflag=0;
u1_command_=0x00;
break;
case 16: //格式传输或透明传输
if (u1_acc==0x01)
{ u1_receflag= 17;
}
else
{ u1_command[0]=0xf9;
u1_command[1]=0x03;
u1_command[2]=gt_quomodo;//
u1_sendlen=3;
u1send_command();
}
break;
case 17:
if (u1_acc==0x00)
data_buf[0]=0;
else
data_buf[0]=1;
gt_quomodo=data_buf[0];
ee_flag=1;
ee_len=1;
ee_address=GT_MODE;
u1_receflag=0;
u1_command_=0x00;
break;
case 18: //确定模块是透明模式1或2
if (u1_acc==0x01)
{ u1_receflag=19;
}
else
{ u1_command[0]=0xfb;
u1_command[1]=0x03;
u1_command[2]=lucidity_mode;
u1_sendlen=3;
u1send_command();
}
break;
case 19:
if (u1_acc==0x00)
data_buf[0]=0;
else
data_buf[0]=1;
lucidity_mode=data_buf[0];
ee_flag=1;
ee_len=1;
ee_address=T_MODE;
u1_receflag=0;
u1_command_=0x00;
break;
case 20: //确定模块透明方式下的地址算法
if (u1_acc==0x01)
{ u1_receflag=21;
u1_count=4;
pu1_command=data_buf;
}
else
{ u1_command[0]=0xe1;
u1_command[1]=0x03;
u1_command[2]=t2_para[0];
u1_command[3]=t2_para[1];
u1_command[4]=t2_para[2];
u1_command[5]=t2_para[3];
u1_sendlen=6;
u1send_command();
}
break;
case 21:
*pu1_command=u1_acc;
pu1_command++;
u1_count--;
if (u1_count==0)
{ ee_flag=1;
ee_len=4;
ee_address=T2_PARA;
u1_receflag=0;
t2_para[0]=data_buf[0];
t2_para[1]=data_buf[1];
t2_para[2]=data_buf[2];
t2_para[3]=data_buf[3];
start_address=t2_para[0];
addr_len=t2_para[1];
u1_command_=0x00;
}
break;
case 22: //模块在被动模式下的地址
if (u1_acc==0x01)
{ u1_receflag=23;
u1_count=2;
pu1_command=data_buf;
}
else
{ u1_command[0]=0xe2;
u1_command[1]=0x03;
u1_command[2]=b_address[0];
u1_command[3]=b_address[1];
u1_sendlen=4;
u1send_command();
}
break;
case 23:
*pu1_command=u1_acc;
pu1_command++;
u1_count--;
if (u1_count==0)
{ ee_flag=1;
ee_len=2;
ee_address=ADDRESS_ID;
u1_receflag=0;
b_address[0]=data_buf[0];
b_address[1]=data_buf[1];
u1_command_=0x00;
}
break;
case 24: //模块的端口号
if (u1_acc==0x01)
{ u1_receflag=25;
u1_count=4;
pu1_command=data_buf;
}
else
{ u1_command[0]=0xe3;
u1_command[1]=0x03;
// for (i=0;i<4;i++)
// { u1_command[i+2]=port[i];
// }
u1_command[2]=port[0];
u1_command[3]=port[1];
u1_command[4]=port[2];
u1_command[5]=port[3];
u1_sendlen=6;
u1send_command();
}
break;
case 25:
*pu1_command=u1_acc;
pu1_command++;
u1_count--;
if (u1_count==0)
{ ee_flag=1;
ee_len=4;
ee_address=PORT_ID;
u1_receflag=0;
port[0]=data_buf[0];
port[1]=data_buf[1];
port[2]=data_buf[2];
port[3]=data_buf[3];
u1_command_=0x00;
}
break;
case 26: //设置心跳重启次数
if (u1_acc==0x01)
{ u1_receflag=27;
}
else
{ u1_command[0]=0xe4;
u1_command[1]=0x03;
u1_command[2]=eeheart_reset;
u1_command[3]=heart_reset;
u1_sendlen=4;
u1send_command();
}
break;
case 27:
data_buf[0]=u1_acc;
ee_flag=1;
ee_len=1;
ee_address=Heart_Reset;
eeheart_reset=data_buf[0];
u1_receflag=0;
u1_command_=0x00;
break;
// case 28:
// if (u1_acc==0x01)
// { u1_receflag=29;
// u1_count=2;
// pu1_command=data_buf;
// }
// else
// { u1_command[0]=0xd2;
// u1_command[1]=0x03;
// u1_command[2]=communication_reset>>8;
// u1_command[3]=communication_reset & 0xff;
// u1_sendlen=4;
// u1send_command();
// }
// break;
// case 29: //设置通信延迟重启时间
// *pu1_command=u1_acc;
// pu1_command++;
// u1_count--;
// if (u1_count==0)
// { ee_flag=1;
// ee_len=2;
// ee_address=Commnu_Timeout;
// u1_receflag=0;
// u1_command_=0x00;
// }
// break;
case 30:
*pu1_command=u1_acc;
pu1_command++;
u1_count--;
if (u1_count==0)
{ at[8]=data_buf[2];
at[9]=data_buf[3];
t0_rtflag=1;
u0_sendflag=15;
u1_receflag=0;
u1_command_=0x00;
}
break;
}
}
else //接收上位机要发送的数据
{ if (zb_mode==0) //被动模式
{ if (gt_quomodo!=0)
{ switch (u1_receflag) //被动模式下的格式传输
{ case 0: //receive head
if (u1_acc=='$')
u1_receflag=1;
break;
case 1: //receive "bd" address high
if (u1_acc==b_address[0])
u1_receflag=2;
else
u1_receflag=0;
break;
case 2: //receive "bd" address low
if (u1_acc==b_address[1])
u1_receflag=3;
else
u1_receflag=0;
break;
case 3: //receive command
if (u1_acc=='W')
{ u1_receflag=4;
u1_count=2;
pu1_command=u1_datalen;
}
else if (u1_acc=='R')
u1_receflag=11;
else if (u1_acc=='M')
u1_receflag=13;
else
u1_receflag=100;
break;
case 4:
u1_count--;
*pu1_command=u1_acc;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -