⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 busmodem.lst

📁 抄水表手持POS代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -