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