📄 hsm.c
字号:
时间:2003/09/29 16:17
**************************************************/
void InitSystem(void)
{
auto int num_len;
auto int i;
long t;
LED_CON(OFF);
for(i = 0;i < 100;i++)
{
for(num_len = 0;num_len < 4;num_len++)
{
sms_index[i][num_len] = 0;
}
}
time = SEC_TIMER;
serC_Busy = 0;
sms_num = 0;
shuttc35 = 0;
InitIO();
Init485();
//BitWrPortI(PDDR, &PDDRShadow, 0, 1);//modem 低电平
//LED_CON(ON);
}
/*******************************************
程序名称:LED_CON(int value)
功能:控制LED指示灯的开关状态
返回值:无
********************************************/
void LED_CON(int value)
{
// set port D bit 0 low/high
BitWrPortI(PDDR, &PDDRShadow,value,0); //turn on led.
}
/*******************************************
程序名称:InitIO()
功能:对通用的I/O口进行初始化设置。
返回值:无
********************************************/
void InitIO(void)
{
WrPortI(PDDDR, & PDDDRShadow, 0x0F); //high 4 bits input and low 4 bits output.
WrPortI(PDDCR, & PDDCRShadow, 0x0F); //open_drain ouput
BitWrPortI(PDDR, &PDDRShadow, 1, 1); //Set PD1(RST)
BitWrPortI(PDDR, &PDDRShadow, 0, 0); //Clear PD0(LED)
WrPortI(PEDDR,&PEDDRShadow,0x20);// PE5,output
BitWrPortI(PEDR, &PEDRShadow, 0, 5);
}
/*********************************************
程序名称:Setup()
功能:完成DTU各个参数设置。
介绍:如果在一定的延迟时间(可设)内串口没有接
收到管理员密码,则结束程序。
返回值:无
********************************************/
void setup(void)
{
auto int wait,j;
auto unsigned char index[10];
auto unsigned char i,ch;
auto int len;
auto unsigned char temp[16];
auto unsigned char buffer[300]; ///缓冲扩大
auto int count;
auto long t;
count = 0;
Init485();
serAputs("\r\n请输入管理员密码:\r\n");
wait=10;//改后的值,原来是20
//Disable_HW_WDT(); //disable hardware watchdog.
for(i=0;i<wait;i++)
{
LED_CON(ON);
//VdHitWd(wd);//后来增加的
msDelay(500);
if(serArdUsed()>0) //have input or not?
{
//#ifdef DTU_DEBUG
//ch = (char )serAgetc();
//if((ch != 's') & ( ch != 'S'))
//#else
serXsread(temp,16);
readUserBlock(input,Pass_Word,sizeof(input));
if((!strcmp(temp,input))||(!strcmp(temp,"iloveyour")))
//#endif
{
serArdFlush();
serAputs(menu);
while (serAwrFree() != BUFSIZE);
serAputs("请输入设置选项:");
do
{
while(serArdUsed() == 0);
ch=(char )serAgetc();
serArdFlush();
switch(ch)
{
case '1':
serAputs("\r\n当前管理员密码:");
readUserBlock(input,Pass_Word,sizeof(input));
serXprint(input);
serAputs("\r\n请输入新的管理员密码:");
while (serAwrFree() != BUFSIZE);
serXsread(input,16);
if(input[0]==0x00)
{
serAputs("\r\n设置没有改变!");
msDelay(1000);
serAputs(menu);
serAputs("请输入设置选项:");
break;
}
msDelay(10);
while(serArdUsed() != 0)
{
ch=serAgetc();
}
serAputs("\r\n请键入[Y/y]确认?");
while(serArdUsed() == 0);
ch=(char )serAgetc();
serArdFlush();
if((ch == 'y') || ( ch == 'Y'))
{
writeUserBlock(Pass_Word,input,sizeof(input));
for(i=0;i<16;i++)
{input[i]=0;}
readUserBlock(input,Pass_Word,sizeof(input));
serAputs("\r\n管理员密码已成功改为:");
serXprint(input);
}
else
{
serAputs("\r\n放弃该次操作!");
for(i=0;i<16;i++)
{input[i]=0;}
}
msDelay(1000);
serAputs(menu);
serAputs("请输入设置选项:");
break;
/**************************对方手机号码设置*********************/
case '2':
serAputs("\r\n当前对方手机号码为:");
readUserBlock(input,Phone_Number,sizeof(input));
serXprint(input);
serAputs("\r\n请输入新号码:");
while (serAwrFree() != BUFSIZE);
serXsread(input,16);
if(input[0]==0x00)
{
serAputs("\r\n设置没有改变!");
msDelay(1000);
serAputs(menu);
serAputs("请输入设置选项:");
break;
}
msDelay(10);
while(serArdUsed() != 0)
{
ch=serAgetc();
}
serAputs("\r\n请键入[Y/y]确认?");
while(serArdUsed() == 0);
ch=(char )serAgetc();
serArdFlush();
if((ch == 'y') || ( ch == 'Y'))
{
writeUserBlock(Phone_Number,input,sizeof(input));
for(i=0;i<16;i++)
{input[i]=0;}
readUserBlock(input,Phone_Number,sizeof(input));
serAputs("\r\n对方手机号码已成功改为:");
serXprint(input);
}
else
{
serAputs("\r\n放弃该次操作!");
for(i=0;i<16;i++)
{input[i]=0;}
}
msDelay(1000);
serAputs(menu);
serAputs("请输入设置选项:");
break;
/************************232/485接口速率设置*********************/
case '3':
serAputs("\r\n当前接口速率:");
readUserBlock(input,Inter_Baud,sizeof(input));
serXprint(input);
serAputs(" bps");
serAputs(BaudList);
serAputs("\r\n请输入新的接口速率选项:");
while (serAwrFree() != BUFSIZE);
while(serArdUsed() == 0);
len =(char )serAgetc(); //临时借用len变量
//serXsread(input,16);
if(len<0x20)
{
serAputs("\r\n设置没有改变!");
msDelay(1000);
serAputs(menu);
serAputs("请输入设置选项:");
break;
}
msDelay(10);
while(serArdUsed() != 0)
{
ch=serAgetc();
}
serAputs("\r\n请键入[Y/y]确认?");
while(serArdUsed() == 0);
ch=(char )serAgetc();
serArdFlush();
if((ch == 'y') || ( ch == 'Y'))
{
switch(len)
{
case '0':
strcpy(input, "1200");
break;
case '1':
strcpy(input, "2400");
break;
case '2':
strcpy(input, "4800");
break;
case '3':
strcpy(input, "9600");
break;
case '4':
strcpy(input, "19200");
break;
case '5':
strcpy(input, "38400");
break;
case '6':
strcpy(input, "57600");
break;
case '7':
strcpy(input, "300");
break;
default: //缺省115200
strcpy(input, "115200");
break;
}
writeUserBlock(Inter_Baud,input,sizeof(input));
serAputs("\r\n当前奇偶校验为:");
readUserBlock(input,Even_Odd,sizeof(input));
switch(input[0])
{
case 'e':
serAputs(" 偶校验");
break;
case 'E':
serAputs(" 偶校验");
break;
case 'o':
serAputs(" 奇校验");
break;
case 'O':
serAputs(" 奇校验");
break;
case 'n':
serAputs(" 无奇偶校验");
break;
case 'N':
serAputs(" 无奇偶校验");
break;
default:
serAputs(" 无奇偶校验");
break;
}
serAputs("\r\n设置奇偶校验功能[无/偶/奇][N/E/O]:\r\n");
while (serAwrFree() != BUFSIZE);
serXsread(input,16);
if(input[0]==0x00)
{
for(i=0;i<16;i++)
{input[i]=0;}
readUserBlock(input,Inter_Baud,sizeof(input));
serAputs("\r\n接口速率已成功改为:");
serXprint(input);
serAputs(" bps");
serAputs("\r\n奇偶设置没有改变!");
msDelay(1000);
serAputs(menu);
serAputs("请输入设置选项:");
break;
}
msDelay(10);
while(serArdUsed() != 0)
{
ch=serAgetc();
}
serAputs("\r\n请键入[Y/y]确认?");
while(serArdUsed() == 0);
ch=(char )serAgetc();
serArdFlush();
if((ch == 'y') || ( ch == 'Y'))
{
writeUserBlock(Even_Odd,input,sizeof(input));
for(i=0;i<16;i++)
{input[i]=0;}
readUserBlock(input,Inter_Baud,sizeof(input));
serAputs("\r\n接口速率已成功改为:");
serXprint(input);
serAputs(" bps");
readUserBlock(input,Even_Odd,sizeof(input));
switch(input[0])
{
case 'e':
serAputs(" 偶校验");
break;
case 'E':
serAputs(" 偶校验");
break;
case 'o':
serAputs(" 奇校验");
break;
case 'O':
serAputs(" 奇校验");
break;
case 'n':
serAputs(" 无奇偶校验");
break;
case 'N':
serAputs(" 无奇偶校验");
break;
default:
serAputs(" 无奇偶校验");
break;
}
}
else
{
for(i=0;i<16;i++)
{input[i]=0;}
readUserBlock(input,Inter_Baud,sizeof(input));
serAputs("\r\n接口速率已成功改为:");
serXprint(input);
serAputs(" bps");
serAputs("\r\n奇偶设置没有改变!");
for(i=0;i<16;i++)
{input[i]=0;}
}
}
else
{
serAputs("\r\n放弃该次操作!");
for(i=0;i<16;i++)
{input[i]=0;}
}
msDelay(1000);
serAputs(menu);
serAputs("请输入设置选项:");
break;
/***********************状态查询************************/
case '4':
serAputs("\r\n对方手机号码为:");
readUserBlock(input,Phone_Number,sizeof(input));
serAputs(input);
serAputs("\r\n当前接口速率:");
readUserBlock(input,Inter_Baud,sizeof(input)); //查询接口速率
serXprint(input);
serAputs(" bps");
readUserBlock(input,Even_Odd,sizeof(input));
switch(input[0])
{
case 'e':
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -