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

📄 config.lst

📁 本程序是一个RS232转网口的。是一个透明传输的模块
💻 LST
📖 第 1 页 / 共 3 页
字号:
 180          {
 181   1          unsigned char i;
 182   1              unsigned char writeflag=0;
 183   1      
 184   1              ReadFlash(ConfigReg.bytes,FLASH_DATA_NUM);               //读出各字符串信息
 185   1      
 186   1              if (ConfigReg.reg.FirstRun != FIRST_RUN_VALUE) {         //是不是第一次
 187   2                  ConfigReg.reg.FirstRun = FIRST_RUN_VALUE;            //是第一次   
 188   2              ParameterInit(0);                                    //参数初始化            
 189   2                      writeflag=10;
 190   2              }
 191   1      
 192   1              for (i=0; i<READ_PARSE_NUM; i++) {           //解析须要解析的几个参数IP,MAC,PORT
 193   2              ComparePtr = ConfigRegPtr[i];
 194   2                      if (ConfigTable[i].exec_func) {
 195   3                              (*(ConfigTable[i].exec_func))(READ_COM);   
 196   3                      }
 197   2              }
 198   1      
 199   1              // 将IP,MAC,PORT,各信息化为HEX或十进制数  但波特率及心跳包间隔时间,ID不被转换,因为这几个只用到字符串型   
             - 
 200   1          if ((ConfigReg.reg.BautRateStr[0] < '1') || (ConfigReg.reg.BautRateStr[0] > '7')) {
 201   2              ConfigReg.reg.BautRateStr[0] = '4';   //1:1200  2:2400 3:4800 4:9600 5:19200,6:38400,7:57600  默认
             -9600
 202   2                      ConfigReg.reg.BautRateStr[1] = 0;
 203   2                      writeflag=10;
 204   2              } 
 205   1      
 206   1          if ((ConfigReg.reg.HeartTimeStr[0] < '1') || (ConfigReg.reg.HeartTimeStr[0] > '9')) {
 207   2              ConfigReg.reg.HeartTimeStr[0] = '2';  //1:1MIN  2:2MIN 3:3MIN 4:4MIN 5:MIN  默认2MIN
 208   2                      ConfigReg.reg.HeartTimeStr[1] = 0;
 209   2                      writeflag=10;
 210   2              }
 211   1          if ((ConfigReg.reg.WPCOMC[0] != '0') && (ConfigReg.reg.WPCOMC[0] != '1')
 212   1                                                   && (ConfigReg.reg.WPCOMC[0] != '2')) {
 213   2              ConfigReg.reg.WPCOMC[0] = '0';       // 0: NONE 1:OLD   2:EVEN
 214   2                      ConfigReg.reg.WPCOMC[1] = 0;
 215   2                      writeflag=10;
 216   2              }
 217   1      
 218   1              ComcBit = ConfigReg.reg.WPCOMC[0];
 219   1      
 220   1              if (ConfigReg.reg.DhcpModeStr[0] != '0') { //说明DHCP自动指派是开启状态
 221   2              DHCPMode = 1;
 222   2              } else {
 223   2              DHCPMode = 0;                          //DHCP关闭状态不需要做DHCP请求bBound为已连成功
 224   2                      bBound   = TRUE;
 225   2              }
 226   1      
 227   1              HeartTimeOutBak = vHeartTime[ConfigReg.reg.HeartTimeStr[0]-0x31]-3; //减去3S误差        
 228   1      
 229   1              for (i=0; i<ID_MAX_LEN; i++) {
 230   2                  ModelIdBak[i] = ConfigReg.reg.ModelIdStr[i];       //取模块ID,保证设置参数后只有重起后数据才有效
 231   2              }
 232   1              ModelIdBak[ID_MAX_LEN] = 0;    
 233   1              
 234   1              if (writeflag > 0) {
 235   2             WriteFlash(ConfigReg.bytes,FLASH_DATA_NUM);         //有非法数据及第一次配置须重写入到FALSH 
 236   2              }
 237   1      }
 238          
C51 COMPILER V7.06   CONFIG                                                                09/26/2008 13:36:16 PAGE 5   

 239          
 240          /*
 241          *****************************************************************************************************
 242          *FUNC:  参数出厂值
 243          *NOTE:  
 244          *****************************************************************************************************
 245          */
 246          #define  DEFAULT_PIN_SEC   5000   //常低电平5秒恢复出厂值,IP为手动分配模式
 247          void DefaultPin(void)
 248          {
 249   1          static unsigned int xdata count=0;                      //如果该脚为低电平,10mS累加一次
 250   1      
 251   1          if (DEFAULT_PIN == 0) {
 252   2              if ((++count % 10) == 0) {                          //运行灯闪烁频繁
 253   3                  RUN_LED =~RUN_LED;
 254   3                      }
 255   2                      if (count  >= (DEFAULT_PIN_SEC/10)) {
 256   3                          LED(CONNECT_LED,ON);
 257   3                          HintMsg(14,NULL);                               //提示恢复出厂值 
 258   3                  ParameterInit(20);                              //参数初始化   
 259   3                  ConfigReg.reg.FirstRun = FIRST_RUN_VALUE;       //下次上电按这次的出厂值运行
 260   3                      McuRst(SAVE_EXIT);
 261   3                      }
 262   2              } else {
 263   2              count = 0;
 264   2              }
 265   1      }
 266          
 267          /*
 268          *****************************************************************************************************
 269          *                   根据ACKCODE取出相应的ACK提示信息      配置ACK类形
 270          *****************************************************************************************************
 271          */
 272          #define CONFIG_ACK_NUM  9
 273          
 274          char code *code ConfigAckMsg[CONFIG_ACK_NUM]=
 275          {
 276              "值为空不修改\0" ,
 277                  "成功\0"          ,
 278              "值错误,失败\0"   ,
 279                  "长度错误,失败\0" ,
 280                  "提交失败\0"      ,
 281                  "用户名错误\0"    ,
 282                  "密码错误\0"      ,
 283                  "该参数不可修改\0",
 284              "配置来源错误\0"  
 285          };
 286          
 287          
 288          void OutAckMsg(unsigned char ack, unsigned char code *name,unsigned char com)
 289          {
 290   1          unsigned char xdata pack[100];
 291   1          unsigned char length=0;
 292   1          unsigned char *ptr;
 293   1      
 294   1          if (ack > (CONFIG_ACK_NUM-1)) {
 295   2             ack = CONFIG_ACK_NUM-1;
 296   2              }
 297   1      
 298   1              if (com == UART_COM) {                   //串口回显提示
 299   2                  Uart0Putf("\r\n");
 300   2              Uart0Putf(name);
C51 COMPILER V7.06   CONFIG                                                                09/26/2008 13:36:16 PAGE 6   

 301   2                  Uart0Putf(ConfigAckMsg[ack]);
 302   2                      Uart0Putf("\r\n");
 303   2              } else if (com == REMOTE_COM) {          //远程回显提示
 304   2                      ptr = name ;
 305   2                      while (*ptr) {
 306   3                  pack[length++] = *ptr++;
 307   3                      }
 308   2                      ptr = ConfigAckMsg[ack] ;
 309   2                      while (*ptr) {
 310   3                  pack[length++] = *ptr++;
 311   3                      }
 312   2              FramePush(pack,length);
 313   2              }
 314   1      }
 315          
 316          /*
 317          *****************************************************************************************************
 318          *FUNC: 
 319          *NOTE:   
 320          *****************************************************************************************************
 321          */
 322          bit Parse_Length(unsigned char xdata *buf,unsigned char max_length,unsigned char endchar,unsigned char *le
             -n)
 323          {
 324   1          unsigned char i;
 325   1      
 326   1          for (i=0; i<(max_length+1); i++) {
 327   2              if (*(buf+i) == endchar){
 328   3                          *len = i;                    //返回长度
 329   3                  return TRUE;
 330   3                      }
 331   2              }
 332   1              return FALSE;
 333   1      }
 334          
 335          /*
 336          *****************************************************************************************************
 337          *FUNC:
 338          *NOTE:  
 339          *****************************************************************************************************
 340          */
 341          #define PARSE_OTHER_TYPE   0
 342          #define PARSE_IP_TYPE      1
 343          #define PARSE_MAC_TYPE     5
 344          
 345          
 346          bit Parse_Value(unsigned char xdata *buf,unsigned char length,unsigned char parse_type,unsigned char *dot)
 347          {
 348   1          unsigned char i;
 349   1      
 350   1              for (i=0; i<length; i++) {
 351   2                  if (parse_type == PARSE_IP_TYPE) {             //ip可以有个'.'
 352   3                  if (((*(buf+i) < '0') || (*(buf+i) > '9')) && (*(buf+i) != '.')) {
 353   4                      return FALSE;
 354   4                              } else if (*(buf+i) == '.') {
 355   4                      *dot+=1;                              //统计'.'个数,IP大于3个'.'说明值错误
 356   4                              }
 357   3                      } else if (parse_type == PARSE_MAC_TYPE) {    //可以有A-F,a-f,0-9
 358   3                              if ( (*(buf+i) < '0') || ((*(buf+i) > '9') && (*(buf+i) < 'A')) || 
 359   3                                   (*(buf+i) > 'f') || ((*(buf+i) > 'F') && (*(buf+i) < 'a')) ) {
 360   4                      return FALSE;
 361   4                          }
C51 COMPILER V7.06   CONFIG                                                                09/26/2008 13:36:16 PAGE 7   

 362   3                      } else {
 363   3                  if ((*(buf+i) < '0') || (*(buf+i) > '9')) {
 364   4                      return FALSE;
 365   4                              }

⌨️ 快捷键说明

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