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

📄 hsm.c

📁 短信程序
💻 C
📖 第 1 页 / 共 5 页
字号:
时间: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 + -