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

📄 kw_config.lst

📁 linux下数据下载器的设计与实现
💻 LST
📖 第 1 页 / 共 2 页
字号:
 224   2                      CM_ConfigParameter.RS232_bps = RS232_9600;
 225   2                      *str += 4;
 226   2              }
 227   1              else if(SM_CmpString("4800", *str, 4) == 1)
 228   1              {
 229   2                      CM_ConfigParameter.RS232_bps = RS232_4800;
 230   2                      *str += 4;
 231   2              }
 232   1              else
 233   1              {
 234   2                      return 0;                                                                                                               //BPS错误
 235   2              }
 236   1      
 237   1      
 238   1              SkipSpace(*str);
 239   1              CM_ConfigParameter.RS232_Data = Char2Byte(**str);                                       //读取数据位数
 240   1              if(CM_ConfigParameter.RS232_Data != 8)
C51 COMPILER V7.50   KW_CONFIG                                                             10/12/2007 17:06:01 PAGE 5   

 241   1              {
 242   2                      return 0;
 243   2              }
 244   1              (*str)++;
 245   1      
 246   1              SkipSpace(*str);                                                                                                        //读取校验位
 247   1              CM_ConfigParameter.RS232_CH = (**str);
 248   1              if(CM_ConfigParameter.RS232_CH != 'N')
 249   1              {
 250   2                      return 0;
 251   2              }
 252   1              (*str)++;
 253   1      
 254   1              SkipSpace(*str);                                                                                                        //读取停止位数
 255   1              CM_ConfigParameter.RS232_Stop = Char2Byte(**str);
 256   1              if(CM_ConfigParameter.RS232_Stop != 1)
 257   1              {
 258   2                      return 0;
 259   2              }
 260   1              (*str)++;
 261   1      
 262   1              return 1;
 263   1      }
 264          
 265          /************************************************************************************* 
 266            Function:       CM_ReadFileNameParam
 267            Description:    从配置文件中读取参数到CM_ConfigParameter中
 268            Called By:      
 269            Input:          N/A
 270            Output:         N/A
 271            Return:         1:读取成功,0:失败
 272            Others:         
 273          *************************************************************************************/
 274          bit CM_ReadFileNameParam(BYTE ** str)
 275          {
 276   1              CM_SkipNote(str);
 277   1              CM_ConfigParameter.File_StartLength = Char2Byte(**str);                 //读取文件名前缀长度
 278   1              if(CM_ConfigParameter.File_StartLength < 0 || CM_ConfigParameter.File_StartLength >8)
 279   1              {
 280   2                      return 0;
 281   2              }
 282   1      
 283   1              (*str)++;
 284   1      
 285   1              SkipSpace(*str);                                                                                                        
 286   1              SM_CpyString(CM_ConfigParameter.File_Start,*str,CM_ConfigParameter.File_StartLength);
 287   1              (*str) += CM_ConfigParameter.File_StartLength;
 288   1      
 289   1              SkipSpace(*str);
 290   1              CM_ConfigParameter.File_End = Char2Byte(**str);                                         //读取文件命名方式
 291   1              if(CM_ConfigParameter.File_End != 0 && CM_ConfigParameter.File_End != 1)
 292   1              {
 293   2                      return 0;
 294   2              }
 295   1              (*str)++;
 296   1      
 297   1              SkipSpace(*str);                                                                
 298   1              SM_CpyString(CM_ConfigParameter.File_Ext, *str,3);                                      //读取文件扩展名
 299   1              (*str) += 3;
 300   1              return 1;
 301   1      }
 302          /************************************************************************************* 
C51 COMPILER V7.50   KW_CONFIG                                                             10/12/2007 17:06:01 PAGE 6   

 303            Function:       CM_ReadConfigToParam
 304            Description:    从配置文件中读取参数到CM_ConfigParameter中
 305            Called By:      
 306            Input:          N/A
 307            Output:         N/A
 308            Return:         1:读取成功,0:失败
 309            Others:         
 310          *************************************************************************************/
 311          bit CM_ReadConfigToParam()
 312          {
 313   1              xdata BYTE * tmp;
 314   1              xdata WORD i,clus,current_clus;
 315   1              xdata DWORD fp_start_sector,file_length;
 316   1              Dir_tag *  fp = FM_OpenFileInRoot(CM_CONFIG_FILE_NAME);                         //打开配置文件
 317   1      
 318   1              if(fp == 0)
 319   1              {
 320   2                      CM_LogError(LOG_OPEN_FILE);
 321   2                      return 0;                                                                                                               //文件打开失败
 322   2              }
 323   1              NM_ReadPage(FM_CurrentDirLBA);
 324   1              file_length = (fp->FileLength[0] | fp->FileLength[1]<<8                         //获取文件长度
 325   1                      | fp->FileLength[2]<<16 | fp->FileLength[3]<<24);
 326   1              if(file_length == 0)                                                                                            //文件长度错误
 327   1              {       
 328   2                      FM_WriteFile(DEFAULT_CONFIG,SM_GetStringLength(DEFAULT_CONFIG));
 329   2                      CM_LogError(LOG_OPEN_FILE);
 330   2                      return 0;
 331   2              }
 332   1          ((BYTE*)&current_clus)[1] = fp->StartClus[0];                                               //获取开始簇
 333   1              ((BYTE*)&current_clus)[0] = fp->StartClus[1];
 334   1              
 335   1              fp_start_sector = (current_clus-2) * FM_sectors_clus + FM_ptr_data;     //获取首扇区
 336   1              clus = file_length/(FM_sectors_clus * 512);                                                     //计算总簇数
 337   1      
 338   1              NM_ReadPage(fp_start_sector);                                                                           //读取首扇区
 339   1              tmp = EP6FIFOBUF;                       
 340   1      
 341   1      
 342   1              
 343   1              //读取并检查文件标志[KW_CONFIG]
 344   1              if(CM_CheckFlag(&tmp, CONFIG_FILE_FLAG, CONFIG_FILE_FLAG_LENGTH) == 0)
 345   1              {
 346   2                      CM_LogError(LOG_FILE_FLAG);
 347   2                      return 0;
 348   2              }
 349   1              
 350   1              //读取并检查RS232字段标志
 351   1              if(CM_CheckFlag(&tmp, CONFIG_RS232_FLAG, CONFIG_RS232_FLAG_LENGTH) == 0)
 352   1              {
 353   2                      CM_LogError(LOG_RS232_F);
 354   2                      return 0;                                                                                                               //标志错
 355   2              }
 356   1      
 357   1              if(CM_ReadRS232Param(&tmp) == 0)
 358   1              {
 359   2                      CM_LogError(LOG_RS232_P);
 360   2                      return 0;                                                                                                               //格式错误
 361   2              }
 362   1      
 363   1      
 364   1              //读取并检查文件名字段标志
C51 COMPILER V7.50   KW_CONFIG                                                             10/12/2007 17:06:01 PAGE 7   

 365   1              if(CM_CheckFlag(&tmp, CONFIG_NAME_FLAG, CONFIG_NAME_FLAG_LENGTH) == 0)
 366   1              {
 367   2                      CM_LogError(LOG_FILENAME_F);
 368   2                      return 0;                                                                                                               //标志错
 369   2              }
 370   1      
 371   1      
 372   1              if(CM_ReadFileNameParam(&tmp) == 0)
 373   1              {
 374   2                      CM_LogError(LOG_FILENAME_P);
 375   2                      return 0;                                                                                                               //标志错
 376   2              }
 377   1              CM_SkipNote(&tmp);
 378   1      
 379   1              //读取并检查RTC字段标志
 380   1              if(CM_CheckFlag(&tmp, CONFIG_RTC_FLAG, CONFIG_RTC_FLAG_LENGTH) == 0)
 381   1              {
 382   2                      CM_LogError(LOG_RTC_F);
 383   2                      return 0;                                                                                                               //标志错
 384   2              }
 385   1      
 386   1              SkipSpace(tmp);
 387   1              for(i = 0; i<6; i++)                                                                                                    //读取6个字节作为年月日时分秒
 388   1              {
 389   2                      CM_ConfigParameter.RTC_Time[i] = SM_Char2BCD(tmp);
 390   2                      tmp += 3;
 391   2              }
 392   1      
 393   1              SkipSpace(tmp);                                                                                                         //读取RTC有效标志
 394   1              CM_ConfigParameter.RTC_Valid = Char2Byte(*tmp);
 395   1      
 396   1              if(CM_ConfigParameter.RTC_Valid != 0 && CM_ConfigParameter.RTC_Valid != 1)
 397   1              {
 398   2                      CM_LogError(LOG_RTC_P);
 399   2                      return 0;
 400   2              }
 401   1      
 402   1              if(CM_ConfigParameter.RTC_Valid == 1)
 403   1              {
 404   2                      *tmp = '0';                                                                                                                     //修改标志为无效
 405   2                      NM_WritePages(fp_start_sector);                                                                         //回写数据
 406   2              }
 407   1              return 1;
 408   1      }
 409          
 410          
 411          
 412          /************************************************************************************* 
 413            Function:       CM_SetConfigParameterDefault
 414            Description:    设置配置参数为默认参数
 415            Called By:      
 416            Input:          N/A
 417            Output:         N/A
 418            Return:         void
 419            Others:         仅当CM_ReadConfigToParam函数调用识别时才调用本函数
 420          *************************************************************************************/
 421          void CM_SetConfigParameterDefault()
 422          {
 423   1              CM_ConfigParameter.RS232_bps = RS232_115200;                                            //默认BPS为115200
 424   1              CM_ConfigParameter.RS232_Data = 8;                                                                      //默认数据8位
 425   1              CM_ConfigParameter.RS232_Stop = 1;                                                                      //默认停止位1
 426   1              CM_ConfigParameter.RS232_CH = 'N';                                                                      //默认不校验
C51 COMPILER V7.50   KW_CONFIG                                                             10/12/2007 17:06:01 PAGE 8   

 427   1              CM_ConfigParameter.File_StartLength = 3;                                                        //默认文件前缀3个字符
 428   1              SM_CpyString(CM_ConfigParameter.File_Start,"DAT",                                       //默认文件前缀"DAT"
 429   1                      CM_ConfigParameter.File_StartLength);
 430   1              CM_ConfigParameter.File_End = CONFIG_FILE_SN;                                           //默认命名方式但序号
 431   1              SM_CpyString(CM_ConfigParameter.File_Ext,"TXT",                                         //默认文件扩展名"TXT
 432   1                      CM_ConfigParameter.File_StartLength);
 433   1              CM_ConfigParameter.RTC_Valid = 0;                                                                       //默认RTC参数无效
 434   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2582    ----
   CONSTANT SIZE    =    735    ----
   XDATA SIZE       =     26      18
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      44
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
   EDATA SIZE       =   ----    ----
   HDATA SIZE       =   ----    ----
   XDATA CONST SIZE =   ----    ----
   FAR CONST SIZE   =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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