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