📄 busmodem.lst
字号:
224 retchar=select_menu(menu_head,menu,10,0,0);
225 if ( retchar == 0x1b ) return;
226 switch (retchar) {
227 case 0:
228 //file_test();
229 if(ModemLink("",129,989)==MODEM_NOK)
230 {
231 str_display(LCD1,0,0,"link fail");
232 delay(1000);
233 if(ModemLink("",129,989)==MODEM_NOK);
234 }
235 delay(500);
236 if(ModemOnline()==MODEM_OK) str_display(LCD1,1,0,"Online.. ");
237 else {//ModemOffline();
C51 COMPILER V6.23a BUSMODEM 08/30/2004 18:06:36 PAGE 5
238 str_display(LCD1,0,0,"联结不成功... ");
239 }
240 get_key();
241 break;
242 case 1:
243 page_clear(LCD1);
244 ModemLogin("duzhaohui\0","ok duzh\0","1234");
245 break;
246 case 2:
247 page_clear(LCD1);
248 if(ModemOnline()==MODEM_OK) str_display(LCD1,0,0,"Online ");
249 else str_display(LCD1,0,0,"Downline ");
250 get_key();
251 break;
252 case 3:
253 page_clear(LCD1);
254 ret=ModemRx(rbuf, 100,9000);
255 if(ret>0) {sprintf(tmp,"Rec:%05dbtypes.",ret);str_display(LCD1,1,0,tmp);break;}
256 else str_display(LCD1,1,0,"Nothing rec.");
257 get_key();
258 /* if (ModemTx("asdasdf", 7,11 ,0x99,1300)==MODEM_OK)
259 {
260 str_display(LCD1,0,0,"SendOk1; ");
261 if (ModemTx("asdfasdf2w332423!#@@$e4", 240,11 ,0x99,2500)==MODEM_OK) {str_display(LCD1,1,0,"SendOk2;
- "); get_key();break;}
262 else {str_display(LCD1,1,0,"SendNOk2; "); get_key();break;}
263 }
264 else {str_display(LCD1,0,0,"SendFalse ");get_key();}*/
265 /* break;
266 case 4:
267 page_clear(LCD1);
268 ModemOffline();
269 break;
270 case 5:
271 page_clear(LCD1);
272 ModemLogin("duzhaohui\0","ok duzh\0","1234");
273 break;
274 case 6:
275 page_clear(LCD1);
276 if (ModemTx(NULL, 0,11 ,MODEM_CP_LOGOUT,2500)==MODEM_OK) str_display(LCD1,1,0,"TDLOGOUT Ok1;
-"); else str_display(LCD1,1,0,"TDLOGOUT fail; ");
277 break;
278 case 7:
279 page_clear(LCD1);
280 ModemTime();
281 break;
282 case 8:
283 page_clear(LCD1);
284 for(i=0;i<6000;i++) {if ((i&1)==1) ss[i]=i;else ss[i]=i>>8;}
285 if (ModemSend(ss,6000)==MODEM_OK) str_display(LCD1,1,0,"TxPacket OK; ");
286 else str_display(LCD1,1,0,"TxPacket fail; ");
287 get_key();
288 break;
289 case 9:
290 page_clear(LCD1);
291 if (ModemTx5(NULL, 0,11 ,MODEM_CP_TDSTART,500)==MODEM_OK) str_display(LCD1,1,0,"TDSTART Ok1;
-"); else str_display(LCD1,1,0,"TDSTART fail; ");
292 if (ModemTx5("ASDKL;FJALK;SDFJ89QWURIEPOIDF", 238,12 ,MODEM_CP_TDDATA,500)==MODEM_OK) str_displa
-y(LCD1,1,0,"TDDATA Ok1; "); else str_display(LCD1,1,0,"TDDATA fail; ");
293 if (ModemTx5(NULL, 0,11 ,MODEM_CP_TDEND,500)==MODEM_OK) str_display(LCD1,1,0,"TDSTEND Ok1; "
-); else str_display(LCD1,1,0,"TDSTEND Fail; ");
294 get_key();
C51 COMPILER V6.23a BUSMODEM 08/30/2004 18:06:36 PAGE 6
295 break;
296 default:
297 break;
298 }
299 }
300 }
301 */
302
303
304 char ModemSend(uchar *txbuf,int length)
305 {
306 1 int pdiv,pmod,i,sno=0,chksum=0;
307 1 uchar xdata tmp[9];
308 1 pdiv=length/PACKETSIZE;
309 1 pmod=length%PACKETSIZE;
310 1 //packageno;;length_L;length_H;Sum_L;Sum_H;
311 1 tmp[0]=pdiv+1;
312 1 tmp[1]=(uchar)length;tmp[2]=(uchar)(length>>8);
313 1 for(i=0;i<length;i++) chksum=chksum+tmp[i];
314 1 tmp[3]=(char)chksum;tmp[4]=(char)(chksum>>8);
315 1 if (ModemTx5(tmp, 5,0xfffe ,MODEM_CP_TDSTART,1500)==MODEM_NOK) return MODEM_NOK;
316 1 for(i=0;i<pdiv;i++)
317 1 if (ModemTx5(txbuf+(i*PACKETSIZE), PACKETSIZE,i,MODEM_CP_TDDATA,500)==MODEM_NOK) return MODEM_NOK;
318 1 if (ModemTx5(txbuf+(i*PACKETSIZE), pmod,i,MODEM_CP_TDDATA,1500)==MODEM_NOK) return MODEM_NOK;
319 1
320 1 if (ModemTx5(tmp, 5,0xfffe ,MODEM_CP_TDEND,1500)==MODEM_NOK) return MODEM_NOK;
321 1 return MODEM_OK;
322 1 }
323
324 char ModemLink(char *dialnum,int devno,int StationNo)
325 {
326 1 uchar xdata tmp[100]="拨号:\0 ";
327 1 _Clr();
328 1 //str_display(LCD1,2,0,"MODEM初始化... ");
329 1 if (strlen(dialnum)>2) {strcat(tmp, dialnum);strcat(tmp, "...\0");_Display(0,0,tmp,strlen(tmp));}
330 1 _delay_1ms(800);
331 1 if(modemdial(dialnum)==MODEM_OK) {modem_read(modemhd,1,tmp);}
332 1 else {return MODEM_NOK;}
333 1 tmp[0]=(uchar)devno; tmp[1]=(uchar)(devno>>8);
334 1 tmp[2]=(uchar)StationNo; tmp[3]=(uchar)(StationNo>>8);
335 1 if (ModemTx(tmp, 4,rand()*rand() ,MODEM_CP_LINK,2500)==MODEM_OK) {
336 2 return MODEM_OK;
337 2 }
338 1 else if (ModemTx(tmp, 4,rand()*rand() ,MODEM_CP_LINK,2500)==MODEM_OK) {
339 2 return MODEM_OK;
340 2 }
341 1 else ;
342 1 return MODEM_NOK;
343 1 }
344
345 char ModemLogin(char username[10],char password[10],char opsnr[4])
346 {
347 1 uchar xdata tmp[100],i;
348 1 srand(255);
349 1 for(i=0;i<10;i++) {tmp[i]=username[i];tmp[10+i]=password[i];}
350 1 for(i=0;i<4;i++) tmp[20+i]=opsnr[i];
351 1 for(i=0;i<16;i++) {tmp[24+i]=rand();tmp[40+i]=tmp[24+i];}
352 1 if (ModemTx(tmp, 56,11 ,MODEM_CP_LOGIN,2500)==MODEM_OK)
353 1 {
354 2 // _Display(0,1,"登陆成功 ",16); //get_key();
355 2 return MODEM_OK;
356 2 }
C51 COMPILER V6.23a BUSMODEM 08/30/2004 18:06:36 PAGE 7
357 1 else if (ModemTx(tmp, 56,11 ,MODEM_CP_LOGIN,2500)==MODEM_OK)
358 1 {
359 2 // _Display(0,1,"登陆成功 ",16); //get_key();
360 2 return MODEM_OK;
361 2 }
362 1 //else str_display(LCD1,1,0,"登陆失败 "); //get_key();
363 1 return MODEM_NOK;
364 1 }
365 /*
366 char ModemCheckTime(unsigned char *rbuf)
367 {
368 unsigned int sum=0;
369 uchar xdata buf[32],crc16[2];//,tmp[16];
370 int ret,i;
371 buf[0]=0xa9; buf[1]=0x6e;
372 buf[2]=0; buf[3]=0;
373 buf[4]=0; buf[5]=0;
374 buf[6]=MODEM_CP_CHECKTIME; buf[7]=MODEM_CP_CHECKTIME^0xff;
375 for(i=0;i<8;i++) sum=sum+(unsigned int)buf[i];
376 buf[8] =(unsigned char) sum;
377 buf[9] =(unsigned char)(sum>>8);
378 _Calc_crc(CRC16, 10, buf, buf+8+2);
379 _delay_1ms(2);ret=modem_write(modemhd,12,buf);
380 if ( ret <= 0 ) {return MODEM_NOK; }
381
382 i=modem_rec(1500,26,rbuf);
383
384 if(i!=26) {return MODEM_NOK;}
385 if ((rbuf[0]!=0xa9) || (rbuf[1]!=0x6e) ) return MODEM_NOK;
386 if ((rbuf[2]!=0x00) || (rbuf[3]!=0x00) || (rbuf[4]!=14) || (rbuf[5]!=0x00) || (rbuf[6]!=MODEM_CP_CHECKTI
-ME) ) return MODEM_NOK;
387 sum=0;
388 for(i=0;i<22;i++) sum=sum+(int)rbuf[i];
389 if(rbuf[22]!=(unsigned char)(sum) ) return MODEM_NOK;
390 if(rbuf[23]!=(unsigned char)(sum>>8) ) return MODEM_NOK;
391 _ Calc_crc(CRC16, 24,rbuf,crc16);
392 if(rbuf[24] !=crc16[0] ) return MODEM_NOK;
393 if(rbuf[25] !=crc16[1] ) return MODEM_NOK;
394 return MODEM_OK;
395 }
396 /*
397 unsigned char ModemInit()
398 {
399 int ret,len,i;
400 char buf[40];
401 uchar hd1;
402 beep(2,1);
403 hd1 = modem_open("MODEM1");
404 if ( hd1 == 0 )
405 {
406 modem_close(modemhd);
407 delay(1000);
408 hd1 = modem_open("MODEM1");
409 if ( hd1 == 0 ) {return MODEM_NOK;}
410 }
411 beep(1,1);
412 modemhd=hd1;
413 strcpy(buf,"ATE1H0\r");
414 len = strlen(buf);
415 ret = modem_write(modemhd, len, buf );
416 if ( ret <= 0 ) { modem_close(modemhd); return MODEM_NOK; }
417 for(i=0;i<4;i++) {
C51 COMPILER V6.23a BUSMODEM 08/30/2004 18:06:36 PAGE 8
418 ret = modem_retcode(modemhd, buf, 40);
419 if(ret==RE_NONE) { delay (1000); continue; }
420 else if(ret==RE_OK) {return MODEM_OK; }
421 }
422 return MODEM_NOK;
423 }
424 */
425
426 /*
427 void ModemOffline()
428 {
429 modem_close(modemhd);
430 }
431
432 char ModemOnline()
433 {
434 if (ModemTx(NULL, 0,0 ,0,1300)==MODEM_OK) return MODEM_OK;
435 delay(1000);
436 if (ModemTx(NULL, 0,0 ,0,1300)==MODEM_OK) return MODEM_OK;
437 return MODEM_NOK;
438 }
439 */
440 char ModemTx5(unsigned char *txbuf, int length,unsigned int sno ,unsigned char funno,int waittm)
441 {
442 1 if(ModemTx(txbuf, length,sno ,funno,waittm)==MODEM_OK) return MODEM_OK; _delay_1ms(100);
443 1 if(ModemTx(txbuf, length,sno ,funno,waittm)==MODEM_OK) return MODEM_OK; _delay_1ms(200);
444 1 if(ModemTx(txbuf, length,sno ,funno,waittm)==MODEM_OK) return MODEM_OK; _delay_1ms(200);
445 1 if(ModemTx(txbuf, length,sno ,funno,waittm)==MODEM_OK) return MODEM_OK; _delay_1ms(500);
446 1 if(ModemTx(txbuf, length,sno ,funno,waittm)==MODEM_OK) return MODEM_OK;
447 1 return MODEM_NOK;
448 1 }
449 /*
450 int ModemReq(unsigned char *rbuf, int length, unsigned char funno, int dl)
451 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -