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

📄 config.lst

📁 本程序是一个RS232转网口的。是一个透明传输的模块
💻 LST
📖 第 1 页 / 共 3 页
字号:
 366   3                      }
 367   2              }
 368   1              return TRUE;
 369   1      }
 370          
 371          /*
 372          *****************************************************************************************************
 373          *FUNC:
 374          *NOTE: 
 375          ; 
 376          *****************************************************************************************************
 377          */
 378          unsigned char Copy_Config_Data(unsigned char com,unsigned char id,unsigned char length)reentrant
 379          {
 380   1          unsigned char i;
 381   1      
 382   1              //拷贝数据到缓冲,准备存入FALSH
 383   1              if (id < CONFIG_PARSE_NUM) {
 384   2                  for (i=0; i<length; i++) {
 385   3                  ConfigRegPtr[id][i] = *(ComparePtr+i);
 386   3                  }
 387   2              ConfigRegPtr[id][length] = 0;             //结束符
 388   2          } else if (id == ID_PINGIP){
 389   2                  for (i=0; i<length; i++) {
 390   3                  PingIpStr[i] = *(ComparePtr+i);       //PINPIP作为回显用,不作为存入FLASH用
 391   3                  }
 392   2              PingIpStr[length] = 0;                    //结束符                                 
 393   2              } else {
 394   2              return COM_ERROR;
 395   2              }
 396   1      
 397   1              if (com == UART_COM) {                        //串口配置须要回显配置信息
 398   2              if (id == ID_HEARTTIME) {
 399   3                  Uart0Putf(pHeartTime[*ComparePtr-0x31]); //'1' ...
 400   3                      } else if (id == ID_BAUDRATE) {
 401   3                  Uart0Putf(pBaudRate[*ComparePtr-0x31]);  //'1' ...
 402   3                      } else if (id == ID_DHCPMODE) {
 403   3                  Uart0Putf(pDhcpMode[*ComparePtr-0x30]);  //只能,'0'跟'1' 
 404   3                      } else if (id == ID_COMC){                           // 0: NONE 1:OLD   2:EVEN
 405   3                  Uart0Putf(pComcBit[*ComparePtr-0x30]);   //提示信息
 406   3                      } else {
 407   3                          Uart0Putsl(ComparePtr,length);
 408   3                      }
 409   2              
 410   2                      /*
 411   2                      Uart0Putf("\r\n2:\r\n");
 412   2                      if (id == ID_PINGIP) {
 413   2                  Uart0Puts(PingIpStr);
 414   2                      } else {
 415   2                          Uart0Putsl(ConfigRegPtr[id],length);
 416   2                      }*/
 417   2              }
 418   1          return TRUE;
 419   1      } 
 420          
 421          /*
 422          *****************************************************************************************************
 423          *FUNC:  解析IP地址
C51 COMPILER V7.06   CONFIG                                                                09/26/2008 13:36:16 PAGE 8   

 424          *NOTE:  字符串化为10进制数据,返回相应的错错误类型
 425          *****************************************************************************************************
 426          */
 427          typedef struct _IP_STRING_STRUCT_
 428          {
 429              unsigned char bit_num;     //几位
 430                  unsigned char bytes[4];    //'1''9''2' 
 431          }IP_STRING_STRUCT;
 432          IP_STRING_STRUCT xdata ip_string[4];
 433          
 434          
 435          unsigned char Parse_Ip(unsigned char com,unsigned char id, unsigned char xdata *ipbytes) reentrant
 436          {
 437   1              unsigned char length=0;
 438   1              unsigned char dotnum=0;
 439   1      
 440   1              unsigned char i,ch;
 441   1          unsigned char j,k;
 442   1              unsigned int result=0;
 443   1              
 444   1      
 445   1              if (com >= END_CHAR_NUM) {
 446   2              return COM_ERROR;
 447   2              }
 448   1      
 449   1          if ((ComparePtr == NULL) || (*ComparePtr == '\r') 
 450   1                 || (*ComparePtr == '\0') || (*ComparePtr == '&')) {            //ComparePtr指向匹配后的有效数据
 451   2              return VALUE_NULL;
 452   2              }
 453   1      
 454   1              if (Parse_Length(ComparePtr,15,EndChar[com],&length) == FALSE) {  //IP最大度为15位,255.255.255.255
 455   2              return LENGTH_ERROR;
 456   2              }                      
 457   1      
 458   1              if (Parse_Value(ComparePtr,length,PARSE_IP_TYPE,&dotnum) == FALSE) { //判断值是否在0-9之内,如果是IP统计'.
             -'个数
 459   2              return VALUE_ERROR;
 460   2              }
 461   1      
 462   1              if (dotnum != 3) {
 463   2              return VALUE_ERROR;
 464   2              }
 465   1      
 466   1              //以下解析IP为10进制数
 467   1              k=0;
 468   1              j=0;
 469   1          for (i=0; i<4; i++) {
 470   2              ip_string[i].bit_num = 0;                //初始化
 471   2          }
 472   1          for (i=0; i<length; i++) {
 473   2              ch = *(ComparePtr+i);
 474   2                      if (ch != '.') {                 
 475   3                          if (++j < 4) {                       //记下没找到'.'此时的长度如IP:255.  最大为255即3位,超出即出错
 476   4                      ip_string[k].bytes[j-1] = ch;
 477   4                                      if (k == 3) {
 478   5                          ip_string[k].bit_num = j;    //几位数,如IP:192.即3位数
 479   5                                      }
 480   4                              } else {
 481   4                      return VALUE_ERROR;
 482   4                              }
 483   3                      } else {                                 //找到一个合法的如IP:192. 
 484   3                          if (k > 3) {
C51 COMPILER V7.06   CONFIG                                                                09/26/2008 13:36:16 PAGE 9   

 485   4                      return VALUE_ERROR;
 486   4                              }
 487   3                  ip_string[k++].bit_num = j;          //几位数,如IP:192.即3位数
 488   3                              if (j == 0) {
 489   4                      return VALUE_ERROR;              //这种情况,可以判断出连续..或,第一个是.的情况
 490   4                              }
 491   3                              j = 0;
 492   3                      }
 493   2              }
 494   1              if (ip_string[3].bit_num == 0) {             //第四字节没有'.'做为结束符判断
 495   2                  return VALUE_ERROR; 
 496   2              }
 497   1      
 498   1              for (i=0; i<4; i++) {
 499   2              result = DecToHex(ip_string[i].bytes,ip_string[i].bit_num);
 500   2                  if (result > 255) {
 501   3                  return VALUE_ERROR;
 502   3                      } 
 503   2              }
 504   1      
 505   1              if (com == READ_COM) {                       //第一次从FLASH读出时要转换为HEX  
 506   2                  for (i=0; i<4; i++) {
 507   3                  result = DecToHex(ip_string[i].bytes,ip_string[i].bit_num);
 508   3                          ipbytes[i] = result;
 509   3                  }
 510   2                      return TRUE;                             //第一次从FLASH读出时无须再拷贝 
 511   2          } else if (id == ID_PINGIP){                 //PING IP须要解析
 512   2                  for (i=0; i<4; i++) {
 513   3                  result = DecToHex(ip_string[i].bytes,ip_string[i].bit_num);
 514   3                          ipbytes[i] = result;
 515   3                  }
 516   2              }
 517   1              return (Copy_Config_Data(com,id,length));
 518   1      }
 519          
 520          
 521          /*
 522          *****************************************************************************************************
 523          *FUNC:  解析PORT
 524          *NOTE:  字符串化为10进制数据,返回相应的错错误类型
 525                  portbytes[0]=*((unsigned char*)&temp);
 526                  portbytes[1]= *(((unsigned char*)&temp)+1);
 527          
 528                  *****1:第一次从FLASH读出时要转换为HEX
 529                       2:后面通过串口修改及HTTP修改须复位重起才有效
 530          *****************************************************************************************************
 531          */
 532          unsigned char Parse_Port(unsigned char com,unsigned char id, unsigned char xdata *portbytes)reentrant
 533          {
 534   1              unsigned char length=0;
 535   1              unsigned char dotnum=0;
 536   1              static unsigned long xdata temp;
 537   1      
 538   1              if (com >= END_CHAR_NUM) {
 539   2              return COM_ERROR;
 540   2              }
 541   1      
 542   1          if ((ComparePtr == NULL) || (*ComparePtr == '\r') 
 543   1                 || (*ComparePtr == '\0') || (*ComparePtr == '&')) {               //ComparePtr指向匹配后的有效数据
 544   2              return VALUE_NULL;
 545   2              }
 546   1      
C51 COMPILER V7.06   CONFIG                                                                09/26/2008 13:36:16 PAGE 10  

 547   1              if (Parse_Length(ComparePtr,5,EndChar[com],&length) == FALSE) {       //端口最大度为5位,1-65535
 548   2              return LENGTH_ERROR;
 549   2              }                               
 550   1      
 551   1              if (Parse_Value(ComparePtr,length,PARSE_OTHER_TYPE,&dotnum) == FALSE) { //判断值是否在0-9之内,如果是IP统

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -