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

📄 message.lst

📁 通过车载终端采集GPS数据
💻 LST
📖 第 1 页 / 共 2 页
字号:
 236   3                  {
 237   4                      *destPtr++ = 0x20;
 238   4                  }
 239   3              }
C51 COMPILER V7.09   MESSAGE                                                               09/16/2008 14:31:34 PAGE 5   

 240   2              else if( isChinese==0 )
 241   2              {
 242   3                  *destPtr++ = *srcPtr++;
 243   3              }
 244   2      
 245   2          }
 246   1          *destPtr = 0;
 247   1      
 248   1      }
 249          
 250          /*陈剑填加,需要返回生成的消息内容的长度*/
 251          unsigned char message_convert_tolength(char *okPtr, char *inPtr)
 252          {
 253   1          unsigned char *srcPtr, *destPtr;
 254   1          unsigned char isChinese;
 255   1          unsigned char nRet;
 256   1      
 257   1          nRet = 0;
 258   1          srcPtr = inPtr;
 259   1          destPtr = okPtr;
 260   1          
 261   1          while( *srcPtr )
 262   1          {
 263   2              if( *srcPtr >= 0x80 )
 264   2                  isChinese = 1;
 265   2              else 
 266   2                  isChinese = 0;
 267   2      
 268   2              *destPtr++ = *srcPtr++;
 269   2              nRet++;
 270   2              
 271   2              if( *srcPtr>=0x80)
 272   2              {
 273   3                  if( isChinese )
 274   3                      *destPtr++ = *srcPtr++;
 275   3                  else
 276   3                  {
 277   4                      *destPtr++ = 0x20;
 278   4                  }
 279   3              }
 280   2              else if( isChinese==0 )
 281   2              {
 282   3                  *destPtr++ = *srcPtr++;
 283   3              }
 284   2              nRet++;
 285   2          }
 286   1          *destPtr = 0;
 287   1          nRet++;
 288   1          return nRet;
 289   1      }
 290          
 291          
 292          /*block   1:调度   2告警    3运营计划*/
 293          void message_write(char block, char *ptr, unsigned char length, long msgNo)
 294          {
 295   1          unsigned int address;
 296   1          char *tmpPtr;
 297   1          MESSAGEINFO *msgPtr;
 298   1      
 299   1          if( block==1)
 300   1          {
 301   2              msgPtr = &messageInfo[0];
C51 COMPILER V7.09   MESSAGE                                                               09/16/2008 14:31:34 PAGE 6   

 302   2          }
 303   1          else if( block == 2 )
 304   1         {
 305   2              msgPtr = &messageInfo[1];
 306   2          }
 307   1          else if( block == 3 )
 308   1         {
 309   2              msgPtr = &messageInfo[2];
 310   2          }
 311   1          else
 312   1              return;
 313   1      
 314   1          if( length >= 210 )
 315   1              return;
 316   1      
 317   1          msgPtr->noRead ++;
 318   1          msgPtr->entrys ++;
 319   1          if( msgPtr->noRead > MESSAGE_RECORD_MAX )
 320   1              msgPtr->noRead = MESSAGE_RECORD_MAX;
 321   1          if( msgPtr->entrys > MESSAGE_RECORD_MAX )
 322   1              msgPtr->entrys = MESSAGE_RECORD_MAX;
 323   1      
 324   1      
 325   1          tmpPtr = messageBuffer;
 326   1      
 327   1          *tmpPtr++ = msgPtr->id++;
 328   1          *tmpPtr++ = 0x11;
 329   1          get_term_data( tmpPtr );
 330   1          tmpPtr += 3;
 331   1          get_term_time( tmpPtr);
 332   1          tmpPtr += 3;
 333   1          *tmpPtr = 0;
 334   1          tmpPtr += 14;
 335   1      
 336   1          memcpy(tmpPtr, &msgNo, 4);
 337   1          tmpPtr += 4;
 338   1      
 339   1          *(ptr+length) = 0;
 340   1          message_convert(tmpPtr, (char*)ptr);
 341   1      
 342   1          /*写入告警记录*/
 343   1          address = msgPtr->current * MESSAGE_MAX_LENGTH + msgPtr->baseAddress;
 344   1          c512_config_write(address, messageBuffer, 128);
 345   1          delayMs(10);
 346   1          c512_config_write(address+128, messageBuffer+128, 128);
 347   1      
 348   1          msgPtr->current = (msgPtr->current + 1) % MESSAGE_RECORD_MAX;
 349   1      
 350   1      }
 351          
 352          /*获取消息处理队列的状态*/
 353          /*flag : 取值为*/ 
 354          void get_message_state(char block, char *value, unsigned char flag)
 355          {
 356   1          MESSAGEINFO *msgPtr;
 357   1      
 358   1          if( block==1)
 359   1         {
 360   2              msgPtr = &messageInfo[0];
 361   2          }
 362   1          else if( block == 2 )
 363   1         {
C51 COMPILER V7.09   MESSAGE                                                               09/16/2008 14:31:34 PAGE 7   

 364   2              msgPtr = &messageInfo[1];
 365   2          }
 366   1          else if( block == 3 )
 367   1         {
 368   2              msgPtr = &messageInfo[2];
 369   2          }
 370   1          else
 371   1              return;
 372   1      
 373   1          if (MSG_TOTALNUM == flag)
 374   1              *value = msgPtr->entrys;
 375   1          else
 376   1              *value = msgPtr->noRead;
 377   1      }
 378          
 379          static unsigned char pollingIndex;
 380          void message_polling(void)
 381          {
 382   1          static unsigned char timeCount;
 383   1          unsigned char tmp;
 384   1          unsigned char i, index;
 385   1          unsigned int address;
 386   1          
 387   1          timeCount ++;
 388   1          if( timeCount < 5)
 389   1              return;
 390   1      
 391   1          if( messageInfo[0].noRead == 0 )
 392   1              return;
 393   1      
 394   1          index = messageInfo[0].current;
 395   1          for(i=0; i<MESSAGE_RECORD_MAX; i++)
 396   1          {
 397   2              index = index % MESSAGE_RECORD_MAX;
 398   2              address = 1+ index * MESSAGE_MAX_LENGTH + messageInfo[0].baseAddress;
 399   2              c512_config_read(address, &tmp, 1 );
 400   2      
 401   2              if( tmp == 0x11 )
 402   2              {
 403   3                  c512_config_read(address, &messageBuffer, sizeof(MESSAGE) );
 404   3                  messageBuffer[0] = 1;
 405   3                  //此处需要调用弹出菜单
 406   3                  get_dispatchMsgMenuPopUp();
 407   3                  pollingIndex = index;
 408   3                  break;
 409   3              }
 410   2      
 411   2              index ++;
 412   2          }
 413   1      }
 414          
 415          
 416          char message_pollingIndex(void)
 417          {
 418   1          unsigned char rc;
 419   1      
 420   1          rc = MESSAGE_RECORD_MAX + messageInfo[0].current - pollingIndex;
 421   1          if( rc > 20 )
 422   1              rc = rc - 20;
 423   1      
 424   1          return(rc);
 425   1      }
C51 COMPILER V7.09   MESSAGE                                                               09/16/2008 14:31:34 PAGE 8   

 426          
 427          void getPollingMsg(Byte* pMsg)
 428          {
 429   1          MESSAGE* pSrcMsg;
 430   1          Byte i, addrValue;
 431   1          SET_WORKSTATUS* pStatus = (SET_WORKSTATUS*)pMsg;
 432   1          
 433   1          pSrcMsg = (MESSAGE*)messageBuffer;
 434   1          memcpy(pStatus->id , pSrcMsg->id, 4);
 435   1          //将日期输入到缓存
 436   1          addrValue = 0;
 437   1          for (i=0; i<3; i++)
 438   1          {
 439   2              bcd_to_ascii((pStatus->content)+addrValue, pSrcMsg->date[i]);
 440   2              addrValue += 2;
 441   2              if (i != 2)
 442   2                  pStatus->content[addrValue] = '-';
 443   2              else
 444   2                  pStatus->content[addrValue] = ' ';
 445   2              addrValue++;
 446   2          }
 447   1          for (i=0; i<2; i++)
 448   1          {
 449   2              bcd_to_ascii((pStatus->content)+addrValue, pSrcMsg->time[i]);
 450   2              addrValue += 2;
 451   2              if (i == 0)
 452   2                  pStatus->content[addrValue] = ':'; 
 453   2              else
 454   2                  pStatus->content[addrValue] = ' ';
 455   2              addrValue++;
 456   2          }
 457   1          pStatus->content[addrValue] = ' ';
 458   1          addrValue++;
 459   1          pStatus->len = addrValue;
 460   1          memcpy((pStatus->content)+addrValue, pSrcMsg->memo, strlen(pSrcMsg->memo));
 461   1          
 462   1          pStatus->len += strlen(pSrcMsg->memo);
 463   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2856    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =    276      87
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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