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

📄 appsjk.lst

📁 抄水表手持POS代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
 466           { if(read_ATMEL24C64(0x10,JCK_INF ,tmp4)!=OK) {fp=1;goto gobreak;} }
 467          if(ValidJCKINF(tmp4)!=OK){fp=1;goto gobreak;}
 468          for(j=0;j<5;j++) tmp1[j]=0xee;          //读卡号
 469                   memcpy(tmp1+5,tmp4+8,3);
 470                   z=0;
 471                   memcpy(buffer+z*8,tmp1,8);
 472                   z++;
 473                   display ( 1, "                ");
 474                   CZJH=tmp1[5]+(unsigned long)tmp1[6]*256+(unsigned long)tmp1[7]*0x10000l; //显示卡号
 475                           sprintf(str,"司机编号:%02lu",CZJH);
C51 COMPILER V6.23a  APPSJK                                                                09/03/2004 16:11:25 PAGE 9   

 476                   display ( 1, str);
 477                   memcpy(buffer+z*8,tmp4,8);
 478                   z++;
 479                   money=0;
 480                   mon=0;
 481          if (many_card==0){display ( 3, "卡上金额:0");goto gobreak2;}
 482          display(3,"100%    ");
 483          cs=0;
 484          for(x=0;x<many_card;x++)         //读流水账
 485          {
 486           if (read_ATMEL24C64(0x8,JCK_DATA+x*8 ,tmp1)!=OK) {fp=1;goto gobreak;}
 487           if (ValidFlow(tmp1)!=OK){if(_CheckCardIn()!=OK){fp=1;goto gobreak;}}//校验
 488           else
 489              {
 490                if (tmp1[0]==0xA0)                //车载机号
 491                {
 492                  _Display ( 0,1, "                ",16);
 493                  CZJH=tmp1[1]+tmp1[2]*256;
 494                  sprintf(str,"车载机号:%02lu     ",CZJH);
 495                          _Display(0,1,str,16);
 496                  memcpy(buffer+z*8,tmp1,8);
 497                  z++;
 498                 }
 499                else if (tmp1[0]==0xA1)                //时间
 500                {
 501                  memcpy(buffer+z*8,tmp1,8);
 502                  z++;
 503                 }
 504                else if (tmp1[0]==0xA2)                //单价
 505                {
 506                  if((tmp1[1]<101)&&(tmp1[1]>4))price=tmp1[1];
 507                  memcpy(buffer+z*8,tmp1,8);
 508                  z++;
 509                 }
 510                else if (tmp1[0]==0x0)//((tmp1[0]==0x0)&&(memcmp(tmp1,tmp5,strlen(tmp5))!=0))
 511                {
 512                  fp1=0;
 513                  for(y=0;y<z;y++)
 514                  {
 515                    if(memcmp(buffer+y*8,tmp1,8)==0)
 516                    {_Display(0,2,"卡上有重复数据    ",16);fp1=1,y=z;}
 517                  }
 518                  if(fp1!=1)
 519                   {
 520                    money=money+price;mon=money/10.0;
 521                    memcpy(buffer+z*8,tmp1,8);
 522                    z++;
 523                    }
 524                  }
 525                 else
 526                 {
 527                   memcpy(buffer+z*8,tmp1,8);
 528                   z++;
 529                                  cs++;
 530                  }
 531                   if(z>99)
 532                   {
 533                    WriteLen(len+z);
 534               out=z*8;
 535               beginadd=len*8;
 536               i=WriteLSZ(buffer,beginadd,out);//in:开始地址 out:数据长度
 537                    len=len+z;
C51 COMPILER V6.23a  APPSJK                                                                09/03/2004 16:11:25 PAGE 10  

 538                    z=0;
 539                   }
 540          //       _PORT_Init ();
 541          //    sprintf(str,"卡上金额:%1.1f      ",mon);
 542          //       _Display(0,2,str,16);
 543          //       sprintf(str,"总次数:%02d      ",cs);
 544          //       _Display(0,3,str,16);//TTTTTTTT
 545                  xx=x;
 546                            yy=many_card;
 547                            zz=99l-((xx*100l)/yy);
 548                                                          sprintf(str,"%02lu%%    ",zz);
 549                            display ( 3,str); 
 550            }
 551          }
 552          display ( 3, "00%    ");
 553          if (z!=0)
 554          {
 555               WriteLen(len+z);
 556               out=z*8;
 557               beginadd=len*8;
 558               i=WriteLSZ(buffer,beginadd,out);
 559                    len=len+z;
 560          }
 561          gobreak:
 562          if (fp==1)
 563                   {_Clr();display ( 2, "读卡出错      ");BELL(60,4);display ( 3, "请按确认键重读");
 564                    key=_getkeyb();
 565                    if (key==KEY_ENTER) goto gostart; else {_AT24C64_PowerOff();return;}
 566                   }
 567                   if (fp==0)
 568                   {
 569                    tmp4[0]=0;    tmp4[1]=0;       tmp4[4]=0;        tmp4[5]=0;      tmp4[2]=0xff; tmp4[3]=0xff;
 570                                   _Calc_crc(CRC16,0x6,tmp4,tmp4+6);
 571                                   wit=write_ATMEL24C64(0x8,JCK_FAT ,tmp4);
 572                                   i=0;
 573                                   if(wit !=OK)
 574                    {
 575                     for(i=0;i<10;i++){wit=write_ATMEL24C64(0x8,JCK_FAT ,tmp4); if (wit==OK) break;}
 576                     }
 577                                   if(write_ATMEL24C64(0x8,JCK_FATK,tmp4)!=OK)
 578                    {
 579                     for(i=0;i<10;i++){wit=write_ATMEL24C64(0x8,JCK_FATK ,tmp4); if (wit==OK) break;}
 580                     }
 581                                   for(i=0;i<0x20;i++) tmp4[i]=0xff;write_ATMEL24C64(0x20,JCK_LASTINF,tmp4);
 582                   }
 583                                  _FlashRead(HMDPAGE,0,8,tmp3);
 584                   ret1=ValidLenData(tmp3);
 585                                  if(ret1!=OK)goto gobreak2;
 586                                  read_ATMEL24C64(0x8,JCK_FATHMD,tmp1);
 587                   len1=(uint)tmp1[2]+(uint)tmp1[3]*0x100;
 588                   len2=(uint)tmp3[2]+(uint)tmp3[3]*0x100;
 589                   if(len1>=len2) goto gobreak2;
 590                                  display ( 4, "正在下传黑名单  ");
 591          //                      sprintf(str,"版本号=%d       ");
 592          //                      display(1,"版本号=%d       ",len2);
 593                                  write_ATMEL24C64(0x8,JCK_FATHMD,tmp3);
 594                                  write_ATMEL24C64(0x8,JCK_FATHMDK,tmp3);
 595                    for (i=0;i<5;i++)
 596                    {
 597                     _FlashRead(HMDPAGE,i*16+8,16,tmp3);
 598                     write_ATMEL24C64(16,JCK_HMDDATA+16*i,tmp3);
 599                     write_ATMEL24C64(16,JCK_HMDDATAK+16*i,tmp3);
C51 COMPILER V6.23a  APPSJK                                                                09/03/2004 16:11:25 PAGE 11  

 600          //           display(2,"%x/%x/%x/%x    ",(uint)tmp3[0],(uint)tmp3[1],(uint)tmp3[2],(uint)tmp3[3]);
 601          //           display(3,"%x/%x/%x/%x    ",(uint)tmp3[4],(uint)tmp3[5],(uint)tmp3[6],(uint)tmp3[7]);
 602                     
 603          //           display(2,"%x/%x/%x/%x    ",(uint)tmp3[8],(uint)tmp3[9],(uint)tmp3[10],(uint)tmp3[11]);
 604          //           display(3,"%x/%x/%x/%x    ",(uint)tmp3[12],(uint)tmp3[13],(uint)tmp3[14],(uint)tmp3[15]);
 605                    }
 606          gobreak2:
 607          _Display (0, 3, "录入完成        ",16);
 608          _getkeyb();
 609          _AT24C64_PowerOff();
 610          return;
 611          }
 612          
 613          uchar Test_CheckBuf(int len,uchar *buf)   
 614          {
 615          uchar crc[2];
 616          int last_r;
 617          last_r=len; 
 618          
 619          if(last_r>0)
 620          {
 621            if((last_r<7)||(last_r==0xff))  //if  receve_bytes < 7 means communiaction is fail protocal
 622                  { return CC_ERROR;}
 623            else
 624                  {
 625                     if((buf[0]!=0xA0)||(buf[1]!=0x93)||(buf[3]!=(last_r-6))) return CC_NO;
 626                     _Calc_crc(CRC16,buf[3]+2,&buf[2],crc);
 627                     if((buf[last_r-2]!=crc[0])||(buf[last_r-1]!=crc[1])) return CC_ERROR;
 628                     switch(buf[4])
 629                           {
 630                           case CC_RFLOW: // Read FLOW.
 631                                   if (last_r!=7) return CC_ERROR;
 632                                   return CC_RFLOW;
 633                           }
 634                           return CC_ERROR;
 635                  }
 636            }
 637          }
 638          void text_upload()
 639          {
 640          uchar page;
 641          ulong i,len1;
 642          long len;
 643          //int len2;
 644          uint  beg_addr,j,x;
 645          uchar xdata tmp1[0x20],buffer[36],crc[2],key,uret,str[30];
 646          
 647          _pRecBuf=0;i=0;x=0;_Clr();
 648          do {
 649                  _Display(0,1,"正在连接主机    ",16);
 650                  _Display(0,2,"按取消键退出    ",16);
 651                            key=_GetKey(111);
 652                            if(key==KeyB_No)return;
 653                  len=_Read232(16,tmp1,500);
 654                            uret=Test_CheckBuf(len,tmp1);
 655                  }while ( uret != CC_RFLOW );
 656              _Clr();
 657          len=ReadLen();
 658          len=100;
 659          if(len<0){_Display(0,1,"   内存错误        ",16); _GetChar(); return;}
 660          if(len==0) {     
 661                      _S232Buf[CC_ADDRINF]=CC_RFLOW;
C51 COMPILER V6.23a  APPSJK                                                                09/03/2004 16:11:25 PAGE 12  

 662                      _ComS232(1);
 663                                _Display(0,1,"POS机内无数据   ",16);_GetChar();return; }
 664          else 
 665          {
 666          _Display(0,1,"正在上传              ", 16);
 667          len1=len % 2;
 668          if(len1==0)len=len/2;
 669          else len=len/2+1;
 670                _oo232(0xa0);_oo232(0x93);
 671                buffer[0]=0;buffer[1]=0;buffer[2]=CC_RFLOW;
 672                buffer[3]=(uchar)(len*32l%0x100l);
 673                buffer[4]=(uchar)(len*32l/0x100l);
 674                buffer[5]=(uchar)(len*32l/0x10000l);
 675                _os232(buffer,6);
 676                          _Calc_crc(CRC16,6,buffer,crc);
 677           for (i=0;i<len;i++)
 678           {
 679            for(j=0;j<32;j++){page=(i*32+j)/64000+LSZPAGE;beg_addr=(i*32+j)%64000;buffer[j]=_FlashByteRead(page ,beg
             -_addr );}
 680            _os232(buffer,32);
 681            re_crc(crc,buffer,32, crc);
 682            x=(i*100)/len;
 683            sprintf(str,"%02d%%       ",x);
 684            _Display(8,1,str,16);
 685           }
 686           _os232(crc,2);
 687           _Display(0,1,"正在上传100%    ",16);
 688           _Clr(); _Display (0, 1, "上传完成        ",16); _GetChar();
 689          }
 690          }
 691          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1671    ----
   CONSTANT SIZE    =    450    ----
   XDATA SIZE       =      4     130
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1      23
   IDATA SIZE       =      1    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -