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

📄 busmodem.lst

📁 抄水表手持POS代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V6.23a  BUSMODEM                                                              08/30/2004 18:06:36 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE BUSMODEM
OBJECT MODULE PLACED IN BusModem.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE BusModem.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          // This modul has the following functin:
   2          // fuctionno=0: for protocol                                    :NULL
   3          // fuctionno=2: Link...(devno,StationNo)                        :devno[LL],devno[HH],StationNo[LL],StationNo[HH]
   4          // fuctionno=4: Login  (user name,password,OpSnr)       
   5          //                                                  :user name[10],password[10],OpSnr[4],SecurityStr[16]        
   6          // fuctionno=6: logout (down net)                                       :NULL
   7          // fuctionno=8: CheckTime send LocalTm,rec SeverTm)     :loctm[6],svrtm[6](tm_format:YYMMDDhhmmss)
   8          // fuctionno=10: Transfer Data ()                                       :data[...]
   9          // fuctionno=12: Transfer End ()                                        :
  10          
  11          #include "_POS.h"
  12          
  13          
  14          #define MODEM_CP_LINK           02
  15          #define MODEM_CP_LOGIN          04
  16          #define MODEM_CP_LOGOUT         06
  17          #define MODEM_CP_CHECKTIME  0X08
  18          #define MODEM_CP_TDSTART        10        //packageno;;length_L;length_H;Sum_L;Sum_H;;
  19          #define MODEM_CP_TDDATA         12        //data...
  20          #define MODEM_CP_TDEND          14        //packageno;;length_L;length_H;Sum_L;Sum_H;;
  21          
  22          #define CRC_POLYNOM     0x1021
  23          #define CRC_PRESET      0xFFFF
  24          #define CRC_CHKBYTES    2
  25          
  26          #define MI_CRC_ZERO             0
  27          #define MI_CRC_NOTZERO  1
  28          
  29          
  30          char ModemLink(char *dialnum,int devno,int StationNo);
  31          char ModemLogin(char username[10],char password[10],char opsnr[4]);
  32          char ModemTime();
  33          char ModemTx(unsigned char *txbuf, int length,unsigned int sno ,unsigned char funno,int waittm);  //length
             -<240
  34          char ModemTx5(unsigned char *txbuf, int length,unsigned int sno ,unsigned char funno,int waittm);  //lengt
             -h<240
  35          int  ModemRx(unsigned char *rbuf, int length,int dl);//return =0:NOK,  1~256 OK'
  36          char ModemOnline();
  37          void ModemOffline();
  38          char ModemSend(uchar *tm,int length);
  39          
  40          
  41          unsigned char  ModemInit();
  42          unsigned char  modemdial(unsigned char*num);
  43          void modemanswer();
  44          int modem_retcode(int handle,char *buf,int len);
  45          int modem_rec(int dltm,int recnum,uchar *buf);
  46          //int Calc_crc(uchar mode, uchar len, uchar *in, uchar *out);
  47          
  48          
  49          unsigned char modemhd;
  50          
  51          #define ESC    0x1b
  52          
  53          #define EM              -150
C51 COMPILER V6.23a  BUSMODEM                                                              08/30/2004 18:06:36 PAGE 2   

  54          
  55          //ret code state
  56          #define Leading_CR              0
  57          #define Leading_LF              1
  58          #define Message                 2
  59          #define Trailing_CR             3
  60          #define Trailing_LF             4
  61          
  62          //return code
  63          #define RE_NONE             0
  64          #define RE_OK                   1
  65          #define RE_CONNECT              2
  66          #define RE_RING                 3
  67          #define RE_NOCARRIER    4
  68          #define RE_ERROR                5
  69          #define RE_NODIALTONE   6
  70          #define RE_BUSY                 7
  71          #define RE_NOANSWER             8
  72          #define RE_CARRIER              9
  73          #define RE_DATA         10
  74          #define RE_FAX          11
  75          #define RE_UNKNOWN              12
  76          #define RE_TIMEOUT              13
  77          
  78          #define MODEM_CP_REQDATA                15                              //request data
  79          #define MODEM_CP_RDSTART                16
  80          #define MODEM_CP_RDSTDATA       18
  81          #define MODEM_CP_RDEND          1a
  82          
  83          #define MODEM_OK                1
  84          #define MODEM_NOK               0
  85          
  86          
  87          //modem command state
  88          #define Idle        0
  89          #define Dialing     1
  90          #define Answer      2
  91          #define Hangup      3
  92          #define Online      4
  93          
  94          #define PACKETSIZE  110
  95          extern unsigned char devid;
  96          
  97          
  98          char xdata  RetInfo[11][12] = {//
  99                  "OK",
 100                  "CONNECT",
 101                  "RING",
 102                  "NO CARRIER",
 103                  "ERROR",
 104                  "NO DIALTONE",
 105                  "BUSY",
 106                  "NO ANSWER",
 107                  "CARRIER",
 108                  "DATA",
 109                  "FAX"
 110          };
 111          
 112          unsigned int mspb=2;
 113          
 114          
 115          
C51 COMPILER V6.23a  BUSMODEM                                                              08/30/2004 18:06:36 PAGE 3   

 116          //-------------------------------------------------------------------------------------------------
 117          int modem_read(char dev_id,uint len,uchar *buf)
 118          {
 119   1       int last_r;
 120   1       while(1)
 121   1       {
 122   2        last_r=_pRecBuf;
 123   2        if(last_r==R232MEMMAX){ memcpy(buf,_R232Buf,len);_pRecBuf=0;return last_r;}
 124   2        _delay_1ms(200); 
 125   2        if(last_r==_pRecBuf)
 126   2        {
 127   3         /*if(last_r>sizeof(buf))memcpy(buf,_R232Buf,sizeof(buf));
 128   3              else */memcpy(buf,_R232Buf,last_r);
 129   3              _pRecBuf=0;return last_r;
 130   3        }
 131   2       }
 132   1      }
*** WARNING C280 IN LINE 117 OF BUSMODEM.C: 'dev_id': unreferenced local variable
 133          
 134          int modem_write(char dev_id,uint len,uchar *buf)
 135          {
 136   1      _os232(buf,len);
 137   1      }
*** WARNING C280 IN LINE 134 OF BUSMODEM.C: 'dev_id': unreferenced local variable
 138          
 139          unsigned char  modemdial(unsigned char *num)
 140          {
 141   1      uchar xdata phone[20]="            ";
 142   1      uchar xdata cmd[40]="ATDT";
 143   1      uchar xdata buf[40];
 144   1      int i,len,ret;
 145   1      
 146   1          if(strlen(num)<2)
 147   1          {
 148   2           _Clr(); _Display(0,1, "请输入电话号码:",15);
 149   2           if(_GetStr(0,2,phone,16)==0) return MODEM_NOK;
 150   2           strcat(cmd, phone);
 151   2           strcat(cmd, "\r");
 152   2               }
 153   1               else
 154   1               { strcat(cmd, num);   strcat(cmd, "\r");       }
 155   1          len = strlen(cmd);
 156   1      //      _display(LCD1,3,0,"请稍等.....");
 157   1          _os232(cmd, len );
 158   1          _delay_1ms(3000);_delay_1ms(3000);_delay_1ms(3000);
 159   1          ret = modem_read(modemhd,len,(uchar *)buf);
 160   1          if( ret<0 || ret!=len || strncmp(cmd, buf, len)!=0 )
 161   1          {
 162   2                      return MODEM_NOK;
 163   2          }
 164   1          for(i=0;i<8;i++) {
 165   2              ret = modem_retcode(modemhd, buf, 40);
 166   2              if(ret==RE_NONE) {_delay_1ms(1500*mspb);continue;} 
 167   2              else if( ret==RE_CONNECT || ret==RE_CARRIER) {return MODEM_OK;}
 168   2              
 169   2          }
 170   1              return MODEM_NOK;
 171   1      }
 172          
 173          int modem_retcode(int modemhd, char *buf, int len)
 174          {
 175   1      int i, ret;
C51 COMPILER V6.23a  BUSMODEM                                                              08/30/2004 18:06:36 PAGE 4   

 176   1      uchar xdata *p; 
 177   1          p = (uchar *)buf;
 178   1          for(i=0;i<len;i++) 
 179   1               {
 180   2              ret =  modem_read((uchar)modemhd, 1, p);
 181   2              if(ret<0) return ret;
 182   2              else if(ret==0) {
 183   3                  _delay_1ms(mspb);
 184   3                  ret = modem_read((uchar)modemhd, 1, p);
 185   3                  if(ret<0) return ret;
 186   3                  else if(ret==0) return 0;
 187   3              }
 188   2                              for(i=0;i<11;i++) {
 189   3                                  if(strncmp(buf+2, RetInfo[i], strlen(RetInfo[i]))==0)
 190   3                                       {return (i+1);  }
 191   3                          }
 192   2                      
 193   2              }
 194   1         return (-4);
 195   1      }
 196          
 197          
 198          
 199          
 200          
 201          
 202          
 203          /*void modem_test()
 204          {
 205            unsigned char retchar,rbuf[300],ss[6000];  
 206            unsigned char  menu_head[15]="请选择测试项目";
 207            unsigned char  menu0[18]="Modem Link(8001)";
 208            unsigned char  menu1[18]="ModemTime ";
 209            unsigned char  menu2[18]="ChkModemOnline   ";
 210          //  unsigned char  menu3[18]="ModemTx      ";
 211            unsigned char  menu3[18]="ModemRx";
 212            unsigned char  menu4[18]="modemOffline";
 213            unsigned char  menu5[18]="modemLogin     ";
 214            unsigned char  menu6[18]="modemLogout    ";
 215            unsigned char  menu7[18]="ModemTime       ";
 216            unsigned char  menu8[18]="TxPacket     ";
 217            unsigned char  menu9[18]="TxBegin-x-End ";
 218          //  unsigned char  menu6[18]="ModemOnline  ";
 219            unsigned char  *  menu[12]={menu0,menu1,menu2,menu3,menu4,menu5,menu6,menu7,menu8,menu9,0,0},tmp[0x20]; 
 220            int ret,i;
 221            
 222            page_clear(LCD1);
 223            while (1) {

⌨️ 快捷键说明

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