📄 message.lst
字号:
C51 COMPILER V7.09 MESSAGE 09/16/2008 14:31:34 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE MESSAGE
OBJECT MODULE PLACED IN .\output\message.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main\message.c LARGE BROWSE INCDIR(audio\;eeprom\;extendUART\;flash\;gps\;i
-nter\;key\;mcu\;menu\;usb\;gprs\;main\;1wire\) DEBUG OBJECTEXTEND PRINT(.\output\message.lst) OBJECT(.\output\message.ob
-j)
line level source
1 /*****************************************************
2 *调度消息读写文件
3 ******************************************************/
4 #include "global.h"
5 #include "message.h"
6 #include "24c512.h"
7 #include "string.h"
8
9 #include "struct_def.h"
10 #include "rcv_process.h"
11 #include "trans_process.h"
12 #include "common_function.h"
13 #include "centerinterface.h"
14 #include "commoninterface.h"
15 #include "menuProcess.h"
16 #define MESSAGE_BASE_ADDRESS 0x400
17 #define MESSAGE_MAX_LENGTH 256
18
19
20
21 MESSAGEINFO messageInfo[3];
22 char messageBuffer[MESSAGE_MAX_LENGTH];
23
24
25 /*0x11:该消息未读;0x22:该消息已读;其他:消息无效*/
26 void record_init(char block)
27 {
28 1 unsigned char i;
29 1 unsigned int address;
30 1 unsigned char value[3];
31 1 MESSAGEINFO *msgPtr;
32 1
33 1 if( block==1)
34 1 {
35 2 msgPtr = &messageInfo[0];
36 2 msgPtr->baseAddress = MESSAGE_BASE_ADDRESS;
37 2 }
38 1 else if( block == 2 )
39 1 {
40 2 msgPtr = &messageInfo[1];
41 2 msgPtr->baseAddress = MESSAGE_BASE_ADDRESS + 0x1400;
42 2 }
43 1 else if( block == 3 )
44 1 {
45 2 msgPtr = &messageInfo[2];
46 2 msgPtr->baseAddress = MESSAGE_BASE_ADDRESS + 0x1400 * 2;
47 2 }
48 1 else
49 1 return;
50 1
51 1 /*告警记录初始化*/
52 1 msgPtr->entrys = 0;
53 1 msgPtr->id = 0;
C51 COMPILER V7.09 MESSAGE 09/16/2008 14:31:34 PAGE 2
54 1 msgPtr->noRead = 0;
55 1 msgPtr->current = 0;
56 1
57 1 for(i=0; i<MESSAGE_RECORD_MAX; i++)
58 1 {
59 2 address = i * MESSAGE_MAX_LENGTH + msgPtr->baseAddress;
60 2 c512_config_read(address, value, 2);
61 2 if( (value[1]==0x11) || (value[1]==0x22) )
62 2 {
63 3 msgPtr->entrys ++;
64 3
65 3 if( i==0 )
66 3 {
67 4 msgPtr->id = value[0];
68 4 }
69 3 else
70 3 {
71 4 if( msgPtr->id != value[0] )
72 4 {
73 5 msgPtr->current = i;
74 5 msgPtr->entrys = MESSAGE_RECORD_MAX;
75 5 break;
76 5 }
77 4 }
78 3
79 3 msgPtr->current ++;
80 3 msgPtr->id ++;
81 3 }
82 2 else
83 2 {
84 3 msgPtr->current = i;
85 3 break;
86 3 }
87 2 }
88 1
89 1 for(i=0; i<MESSAGE_RECORD_MAX; i++)
90 1 {
91 2 address = i * MESSAGE_MAX_LENGTH + msgPtr->baseAddress;
92 2 c512_config_read(address, value, 2);
93 2 if( value[1]==0x11 )
94 2 msgPtr->noRead ++;
95 2 }
96 1
97 1 msgPtr->current = msgPtr->current % MESSAGE_RECORD_MAX;
98 1
99 1 }
100
101
102 /*index 1-20*/
103 void message_read(char block, unsigned char index, MESSAGE *ptr)
104 {
105 1 unsigned int address;
106 1 unsigned char tmp;
107 1 MESSAGEINFO *msgPtr;
108 1
109 1 if( block==1)
110 1 {
111 2 msgPtr = &messageInfo[0];
112 2 }
113 1 else if( block == 2 )
114 1 {
115 2 msgPtr = &messageInfo[1];
C51 COMPILER V7.09 MESSAGE 09/16/2008 14:31:34 PAGE 3
116 2 }
117 1 else if( block == 3 )
118 1 {
119 2 msgPtr = &messageInfo[2];
120 2 }
121 1 else
122 1 return;
123 1
124 1
125 1 tmp = index;
126 1 if( (tmp > MESSAGE_RECORD_MAX) || (tmp == 0) )
127 1 {
128 2 ptr->state = 0; /*index值超过最大记录数*/
129 2 return;
130 2 }
131 1
132 1 if( index > msgPtr->current )
133 1 {
134 2 tmp = MESSAGE_RECORD_MAX + msgPtr->current - index;
135 2 }
136 1 else
137 1 {
138 2 tmp = msgPtr->current - index;
139 2 }
140 1
141 1 address = 1+ tmp * MESSAGE_MAX_LENGTH + msgPtr->baseAddress;
142 1 c512_config_read(address, (char *)ptr, sizeof(MESSAGE) );
143 1
144 1 tmp = ptr->state;
145 1 if( tmp == 0x11 )
146 1 {
147 2 ptr->state = 0x1;
148 2 if( (block==2) || (block == 3) )
149 2 {
150 3 make_ack_message( ((char*)ptr)+21 );
151 3 set_message_readFlag(block, index);
152 3 }
153 2 }
154 1 else if( tmp == 0x22 )
155 1 {
156 2 ptr->state = 2;
157 2 }
158 1 else
159 1 {
160 2 ptr->state = 0;
161 2 }
162 1 }
163
164 void set_message_readFlag(char block, unsigned char index)
165 {
166 1 unsigned int address;
167 1 unsigned char tmp;
168 1 MESSAGEINFO *msgPtr;
169 1 unsigned char readFlag;
170 1
171 1 if( block==1)
172 1 {
173 2 msgPtr = &messageInfo[0];
174 2 }
175 1 else if( block == 2 )
176 1 {
177 2 msgPtr = &messageInfo[1];
C51 COMPILER V7.09 MESSAGE 09/16/2008 14:31:34 PAGE 4
178 2 }
179 1 else if( block == 3 )
180 1 {
181 2 msgPtr = &messageInfo[2];
182 2 }
183 1 else
184 1 return;
185 1
186 1 if( (index > MESSAGE_RECORD_MAX) || (index == 0) )
187 1 {
188 2 return;
189 2 }
190 1
191 1 if( index > msgPtr->current )
192 1 {
193 2 tmp = MESSAGE_RECORD_MAX + msgPtr->current - index;
194 2 }
195 1 else
196 1 {
197 2 tmp = msgPtr->current - index;
198 2 }
199 1
200 1 address = 1+ tmp * MESSAGE_MAX_LENGTH + msgPtr->baseAddress;
201 1 c512_config_read(address, &readFlag, 1 );
202 1
203 1 if( readFlag == 0x11 )
204 1 {
205 2 readFlag = 0x22;
206 2 c512_config_write(address, &readFlag, 1 );
207 2
208 2 if( msgPtr->noRead )
209 2 msgPtr->noRead --;
210 2 }
211 1
212 1 }
213
214 void message_convert(char *okPtr, char *inPtr)
215 {
216 1 unsigned char *srcPtr, *destPtr;
217 1 unsigned char isChinese;
218 1
219 1 srcPtr = inPtr;
220 1 destPtr = okPtr;
221 1
222 1 while( *srcPtr )
223 1 {
224 2 if( *srcPtr >= 0x80 )
225 2 isChinese = 1;
226 2 else
227 2 isChinese = 0;
228 2
229 2 *destPtr++ = *srcPtr++;
230 2
231 2 if( *srcPtr>=0x80)
232 2 {
233 3 if( isChinese )
234 3 *destPtr++ = *srcPtr++;
235 3 else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -