📄 end_hao.c
字号:
#define unchar unsigned char
#define unint unsigned int
#define start_addr 0x6
unchar xdata page[10]={0x00};
//#define PAGE1ADDR 7000
//#define PAGE4ADDR 8000
///////////////////////////////////////////////
unchar code PAGE1ADDR[ ]=
{0x01,0x03,0x01,0x03,0x06,0x09,
0x00,0x01,0x02,0xBD,0X03,0X21,0X03,0X21, //一级队 20-25
0X03,0X2B,0X05,0XE7,0X06,0X4B,0X06,0X4B,
0X06,0X55,0X09,0X11,0X09,0X75,0X09,0X75,
0X09,0X7F,0X0A,0XE1,0X0B,0X14,0X0C,0X76, //二级队 26-31
0X0C,0XA9,0X0E,0X0B,0X0E,0X3E,0X0F,0X0A0,
0X0F,0XD3,0X11,0X35,0X11,0X68,0X12,0XCA,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //32-37
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0X12,0XFD,0X13,0XE9,0X14,0X0B,0X14,0XF7, //三级队 38-46
0X15,0X19,0X16,0X05,0X16,0X27,0X17,0X13,
0X17,0X35,0X18,0X21,0X18,0X43,0X19,0X2F,
0X19,0X51,0X1A,0X3D,0X1A,0X5F,0X1B,0X4B,
0X1B,0X6D,0X1C,0X59,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //32-37
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //32-37
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //32-37
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //32-37
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //32-37
0x00,0x00,0x00,0x00,
0X1C,0X7B,0X1C,0XF1, //四级队 74-79
0X1D,0X02,0X1D,0X78,0X1D,0X89,0X1D,0XFF,
0X1E,0X10,0X1E,0X86,0X1E,0X97,0X1F,0X0D,
0X1F,0X1E,0X1F,0X94,0X1F,0XA5,0X1F,0XA5,
0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,
0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,
0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,
0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,
0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5};
unchar code PAGE11ADDR[ ]=
{0x01,0x03,0x01,0x03,0x06,0x09,
0x02,0x00,0x30,0x00,0X03,0X01,0X03,0X21, //20
0X04,0X2B,0X05,0XE7,0X06,0X4B,0X06,0X4B, //21
0X06,0X55,0X09,0X11,0X09,0X75,0X09,0X75,
0X09,0X7F,0X0A,0XE1,0X0B,0X14,0X0C,0X76,
0X0C,0XA9,0X0E,0X0B,0X0E,0X3E,0X0F,0X0A0,
0X0F,0XD3,0X11,0X35,0X11,0X68,0X12,0XCA,
0X12,0XFD,0X13,0XE9,0X14,0X0B,0X14,0XF7,
0X15,0X19,0X16,0X05,0X16,0X27,0X17,0X13,
0X17,0X35,0X18,0X21,0X18,0X43,0X19,0X2F,
0X19,0X51,0X1A,0X3D,0X1A,0X5F,0X1B,0X4B,
0X1B,0X6D,0X1C,0X59,0X1C,0X7B,0X1C,0XF1,
0X1D,0X02,0X1D,0X78,0X1D,0X89,0X1D,0XFF,
0X1E,0X10,0X1E,0X86,0X1E,0X97,0X1F,0X0D,
0X1F,0X1E,0X1F,0X94,0X1F,0XA5,0X1F,0XA5,
0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,
0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,
0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,
0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,
0X1F,0XA5,0X1F,0XA5,0X1F,0XA5,0X1F,0XA5};
unchar code PAGE4ADDR[6]={
0x04,0x03,0x01,0x80,0x00,0xc8
};
///////////////////////////////////////////////////////////////
unchar stack_hao_id(unchar xdata *input_data,unchar xdata *output_data,unchar cps1343);
unchar stack_id_hao(unchar xdata *input_data,unchar xdata *output_data,unchar cps1343);
unchar id_to_hao(unint id_number);
unchar hao_to_id(unchar dui_hao,unint hu_hao);
void main(void)
{
unchar xdata ok;
unchar xdata indata[20];
unchar xdata outdata[20];
while(1){
indata[0] = '2';
indata[1] = '0';
indata[2] = '2';
indata[3] = '2'; //////////////
indata[4] = '2';
indata[5] = '2';
indata[6] = '0';
indata[7] = '2';
indata[8] = '\n';
indata[9] = '\n';
// ok=stack_id_hao(indata,outdata,0x01);//from id to hao
// while(1);
ok=stack_hao_id(indata,outdata,0x02);//from hao to id
while(1);
}
}
unchar id_to_hao(unint id_number)
{
unchar xdata dui_hao,counter,ok=0x00;//define team number
unint xdata hu_hao, dui_head,dui_end;
unint code *addr;
unchar code *p;
//read l,m,s from flash
p=(unchar *)PAGE1ADDR;
//begin address
addr=(unint *)(PAGE1ADDR+start_addr);
for(counter=0;counter<60;counter++) //
{ //
dui_head=*addr;
dui_end=*(addr+2);
if(id_number>=dui_head&&id_number<dui_end)
{ ///
dui_hao=counter+20;
if(id_number>=*(addr+1))
{
hu_hao=id_number-*(addr+1)+900;
}
else
hu_hao=id_number-dui_head+200;
ok=0x01;
break;
}///
addr=addr+2;
}//
if (ok==0x01)
{
page[0]=dui_hao/10+0x30;
page[1]=dui_hao%10+0x30;
page[2]=hu_hao/100+0x30;
page[3]=(hu_hao%100)/10+0x30;
page[4]=hu_hao%10+0x30;
page[5]=0x0a;
}
return(ok);
}
unchar id_to_hao1343(unint id_number)
{
unchar xdata dui_hao,counter,ok=0x00;//define team number
unint xdata hu_hao;
unint code *addr;
unchar code *p;
//read l,m,s from flash
p=(unchar *)PAGE11ADDR;
//begin address
addr=(unint *)(PAGE1ADDR+start_addr);
for(counter=0;counter<60;counter++) //
{ //
if(id_number>=*addr&&id_number<=*(addr+1))
{ ///
dui_hao=counter+20;
hu_hao=id_number-*addr+200;
ok=0x01;
break;
}///
addr=addr+2;
if(id_number>=*addr&&id_number<=*(addr+1))
{ ///
dui_hao=counter+20;
hu_hao=id_number-*addr+900;
ok=0x01;
break;
}///
}//
if (ok==0x01)
{
page[0]=dui_hao/10+0x30;
page[1]=dui_hao%10+0x30;
page[2]=hu_hao/100+0x30;
page[3]=(hu_hao%100)/10+0x30;
page[4]=hu_hao%10+0x30;
page[5]=0x0a;
}
return(ok);
}
//从队号、个呼(组呼)到ID的转换
unchar hao_to_id(unchar dui_hao,unint hu_hao)
{
unchar xdata ok=0x00,counter;//define team number
unint xdata dui_head,dui_end,id_number;
unint code *addr;
unchar code *p;
//read l,m,s from flash
p=(unchar *)PAGE1ADDR;
if(dui_hao>=20&&dui_hao<80)
{ //
addr=(unint *)(PAGE1ADDR+start_addr);
addr+=(dui_hao-20)*2;
dui_head=*addr;
dui_end=*(addr+2);
if(hu_hao>=900)
id_number=hu_hao-900+*(addr+1);
else
id_number=hu_hao-200+dui_head;
if(id_number>=dui_head&&id_number<dui_end)
ok=0x01;
else
ok=0x00;
}
if(ok==0x01)
{
counter=0;
page[counter]=id_number/1000+0x30;
counter++;
page[counter]=(id_number%1000)/100+0x30;
counter++;
page[counter]=(id_number%100)/10+0x30;
counter++;
page[counter]=id_number%10+0x30;
counter++;
page[counter]=0x0a;
}
return(ok);
}
//从队号、个呼(组呼)到ID的转换
unchar hao_to_id1343(unchar dui_hao,unint hu_hao)
{
unchar xdata ok=0x00,counter;//define team number
unint xdata id_number;
unint code *addr;
unchar code *p;
//read l,m,s from flash
p=(unchar *)PAGE1ADDR;
if(dui_hao>=20&&dui_hao<=80)
{ //
addr=(unint *)(PAGE1ADDR+start_addr);
addr+=(dui_hao-20)*4;
if(hu_hao>=900)
{id_number=hu_hao-900+*(addr+2);
if(id_number>=*(addr+2)&&id_number<=*(addr+3))
ok=0x01;
else
ok=0x00;
}
else if(hu_hao>=200)
{id_number=hu_hao-200+*addr;
if(id_number>=*addr&&id_number<=*(addr+1))
ok=0x01;
else
ok=0x00;
}
}
if(ok==0x01)
{
counter=0;
page[counter]=id_number/1000+0x30;
counter++;
page[counter]=(id_number%1000)/100+0x30;
counter++;
page[counter]=(id_number%100)/10+0x30;
counter++;
page[counter]=id_number%10+0x30;
counter++;
page[counter]=0x0a;
}
return(ok);
}
//栈队转换
unchar stack_hao_id(unchar xdata *input_data,unchar xdata *output_data,unchar cps1343)
{
unchar xdata dui_hao,counter,ok=0x00;
unchar xdata qu_hao,self_qu_hao,self_dui_hao,self_ne_hao;
unint xdata hu_hao,id_number=0x00;
unchar xdata *p;
unchar code *page4;
page4=(unchar *)PAGE4ADDR;
self_qu_hao= (*(page4+3))&0x7f;
self_dui_hao=(*(page4+4)>>2)+20;
self_ne_hao=(*(page4+4)&0x03)*255+*(page4+5);
counter=0x00;
for(p=input_data;*p!=0x0a;p++) //is id hao
{
if(*p<0x30||*p>0x39)
return(0x00);
counter++;
}
switch(counter)
{
case 3:
{
qu_hao=*(page4+3)&0x7f;
dui_hao=self_dui_hao;
hu_hao=(*(input_data+0)-0x30)*100+(*(input_data+1)-0x30)*10+(*(input_data+2)-0x30);
if(cps1343==0x01)
ok=hao_to_id(dui_hao,hu_hao);
else if (cps1343==0x02)
ok=hao_to_id1343(dui_hao,hu_hao);
break;
}
case 5:
{
qu_hao=*(page4+3)&0x7f;
dui_hao=(*(input_data+0)-0x30)*10+(*(input_data+1)-0x30);
hu_hao=(*(input_data+2)-0x30)*100+(*(input_data+3)-0x30)*10+(*(input_data+4)-0x30);
if(cps1343==0x01)
ok=hao_to_id(dui_hao,hu_hao);
else if(cps1343==0x02)
ok=hao_to_id1343(dui_hao,hu_hao);
break;
}
case 8:
{
qu_hao=(*input_data-0x30)*100+(*(input_data+1)-0x30)*10+(*(input_data+2)-0x30)-200;
if(!(qu_hao>=0x00&&qu_hao<=127))
return(0x00);
dui_hao= dui_hao=(*(input_data+3)-0x30)*10+(*(input_data+4)-0x30);
hu_hao=(*(input_data+5)-0x30)*100+(*(input_data+6)-0x30)*10+(*(input_data+7)-0x30);
if(cps1343==0x01)
ok=hao_to_id(dui_hao,hu_hao);
else if(cps1343==0x02)
ok=hao_to_id1343(dui_hao,hu_hao);
break;
}
default:return(0x00);break;
}
if(ok==0x01)
{
if(qu_hao!=self_qu_hao)
{
for(counter=0;counter<3;counter++)
output_data[counter]=input_data[counter]; //区号
output_data[0]-=0x02;
//////////////////////////////////////////////////////////
for(counter=0;counter<5;counter++)
output_data[counter+3]=page[counter];
return(0x03);
}
else
{
for(counter=0;counter<5;counter++)
output_data[counter]=page[counter];
return(0x02);
}
}
return(0x00);
}
unchar stack_id_hao(unchar xdata *input_data,unchar xdata *output_data,unchar cps1343)
{
unchar xdata qu_hao,counter,ok=0x00;
unchar xdata self_qu_hao,self_dui_hao,self_ne_hao;
unint xdata id_number=0x00;
unchar xdata *p;
unchar code *page4;
page4=(unchar *)PAGE4ADDR;
self_qu_hao=(*(page4+3))&0x7f;
self_dui_hao=(*(page4+4)>>2)+20;
self_ne_hao=(*(page4+4)&0x03)*255+*(page4+5);
counter=0x00;
for(p=input_data;*p!=0x0a;p++) //is id hao
{
if(*p<0x30||*p>0x39)
return(0x00);
counter++;
}
switch(counter)
{
case 4: //only input id number
{
qu_hao=self_qu_hao;
id_number=(*input_data-0x30)*1000+(*(input_data+1)-0x30)*100+(*(input_data+2)-0x30)*10+(*(input_data+3)-0x30);
if(cps1343==0x01)
ok=id_to_hao(id_number);
else if(cps1343==0x02)
ok=id_to_hao1343(id_number);
break;
}
case 8: //input area number id number exp:0 000 0002
{
qu_hao=(*(input_data+0)-0x30)*100+(*(input_data+1)-0x30)*10+(*(input_data+2)-0x30);
if (!(qu_hao>=0&&qu_hao<=127))
return(0x00);
id_number=(*(input_data+4)-0x30)*1000+(*(input_data+5)-0x30)*100+(*(input_data+6)-0x30)*10+(*(input_data+7)-0x30);
if(cps1343==0x01)
ok=id_to_hao(id_number);
else if(cps1343==0x02)
ok=id_to_hao1343(id_number);
break;
}
default:return(0x00);break;
}
if(ok==0x01)
{
if(qu_hao!=self_qu_hao) //diffrent area
{
for(counter=0;counter<3;counter++)
output_data[counter]=input_data[counter]; //区号
output_data[0]+=0x02;
for(counter=0;counter<6;counter++)
output_data[counter+3]=page[counter];
return(0x01);
}
if(self_dui_hao!=(page[0]-0x30)*10+page[1]-0x30) //diffrent team
{
for(counter=0;counter<6;counter++)
output_data[counter]=page[counter];
return(0x01);
}
else
{
for(counter=0;counter<4;counter++) //the same team only display ge hao or zu hao
output_data[counter]=page[counter+2];
return(0x01);
}
}
return(0x00);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -