📄 message.lst
字号:
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 + -