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

📄 posbusmodem.lst

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