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

📄 api.lst

📁 本程序是一个RS232转网口的。是一个透明传输的模块
💻 LST
字号:
C51 COMPILER V7.06   API                                                                   09/26/2008 13:35:56 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE API
OBJECT MODULE PLACED IN ..\OUT\Api.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\Source\Api.c BROWSE DEBUG OBJECTEXTEND PRINT(..\OUT\Api.lst) OBJECT(..\O
                    -UT\Api.obj)

stmt level    source

   1          /*
   2          *****************************************************************************************************
   3          *
   4          *  File name: api.c
   5          *****************************************************************************************************
   6          */
   7          #include "..\head\includes.h"
   8          
   9          
  10          
  11          
  12          /*
  13          *****************************************************************************************************
  14          *FUNC:  申请一个套接字
  15          *NOTE:  套接字序号,如果返回为ERR_SOCK_FULL,说明所有套接字已被使用
  16          *****************************************************************************************************
  17          */
  18          #if 0
              unsigned char TCPSocket()
              {
                      unsigned char i;
                      
                      for (i=0; i<NO_CONNECTION; i++) {   //扫描所有的套接字,找到第一个空余的
                              if (!conxn[i].bUsed) {
                                      conxn[i].bUsed = TRUE;      //标志该套接字已使用
                                      return i;
                              }
                      }
                      if(NO_CONNECTION == i) {            //无空余的套接字,则返回大于5的序列号
                              return ERR_SOCK_FULL;
                      }
              }
              #endif
  34          
  35          /*
  36          *****************************************************************************************************
  37          *FUNC:  向指定IP、端口连接
  38          *NOTE:  套接字序号,目的IP、目的端口、OnReceive函数、OnClose函数
  39          *****************************************************************************************************
  40          */
  41          void  TCPConnect(unsigned char  sock, union IP_address destip, unsigned int destport,
  42                                                            void ( * recv)(unsigned char xdata *buf ,unsigned int size),
  43                                                            void ( * close)(),
  44                                                            void ( * connect)())
  45          {       
  46   1              conxn[sock].ip.dwords = destip.dwords;          //目的IP
  47   1              conxn[sock].localport = LocalPort + sock;      //本地端口
  48   1              conxn[sock].port = destport;                    //目的端口
  49   1              conxn[sock].socket_type = CLIENT;               //本地类型
  50   1              conxn[sock].state = STATE_SYN_SENT;                 //网络状态变迁状态STATE_SYN_SENT
  51   1      
  52   1              EA = 0;
  53   1              conxn[sock].my_sequence = initial_sequence_nr;  //我的SEQ 
  54   1          conxn[sock].his_sequence = 0;                   //我的ACK
C51 COMPILER V7.06   API                                                                   09/26/2008 13:35:56 PAGE 2   

  55   1              initial_sequence_nr += 64000L;
  56   1              EA = 1;
  57   1              
  58   1              conxn[sock].recv         = recv;                    //回调函数实体化
  59   1              conxn[sock].close        = close;
  60   1              conxn[sock].connect      = connect;
  61   1              tcp_send(&TCPSend,FLG_SYN, 28, sock);           //发请求链接标志
  62   1      }
  63          
  64          
  65          /*
  66          *****************************************************************************************************
  67          *FUNC:  发送数据
  68          *NOTE:  如果发送成功,返回0,否则,返回错误代码
  69                  1:第一次数据先入UNACK缓冲区,但UNACK数据响应后,如果WAITFORSEND有数据则移入到UNACK缓冲区发送
  70          *****************************************************************************************************
  71          */
  72          unsigned char User_TCPSend(unsigned char sock,unsigned char xdata *buf, unsigned int size)
  73          {
  74   1      
  75   1          if (conxn[sock].state != STATE_ESTABLISHED) {     //没链路
  76   2              return ERR_NO_ESTABLISH;        
  77   2              }
  78   1      
  79   1              if (conxn[sock].pUnAcked->bUsed) {                //等待响应被占用
  80   2                      return ERR_BUF_FULL;                          //入WAITFORSEND缓冲区失败返回洪金枝添加
  81   2              }
  82   1      
  83   1              tcp_senddata(&TCPSend,buf,size+20,sock,0);        //加上20字节tcp头部
  84   1              return TRUE;
  85   1      
  86   1      }
  87          
  88          /*
  89          *****************************************************************************************************
  90          *FUNC:  监听某个端口
  91          *NOTE:  入参:端口号,套接字编号
  92          *****************************************************************************************************
  93          */
  94          #if 0
              unsigned char TCPListen(unsigned char sock,unsigned short ucPort,
                                                              void ( * recv)(unsigned char xdata *buf ,unsigned int size),
                                                              void ( * close)(),
                                                              void ( * connect)())
              {
                      if(sock >= NO_CONNECTION)
                              return  NO_CONNECTION;  //套接字编号超过最大编号
                      
                      conxn[sock].ip.dwords = my_ip_address.dwords;
                      conxn[sock].localport = ucPort;
                      conxn[sock].port = 0;   //不知道对方的端口号
                      conxn[sock].socket_type = SERVER;
                      conxn[sock].state = STATE_LISTEN;
                      conxn[sock].my_sequence = initial_sequence_nr;
                      conxn[sock].his_sequence = 0;
                      initial_sequence_nr += 64000L;
                      //回调函数实体化
                      conxn[sock].recv         = recv;
                      conxn[sock].close        = close;
                      conxn[sock].connect      = connect;
              }
              #endif
C51 COMPILER V7.06   API                                                                   09/26/2008 13:35:56 PAGE 3   

 117          /*
 118          *****************************************************************************************************
 119          *FUNC:  用户主动关闭套接字,并释放资源
 120          *NOTE:  入参:套接字编号
 121          *****************************************************************************************************
 122          */
 123          #if 0
              void  TCPClose(unsigned char sock)
              {
                      conxn[sock].ip.dwords = 0;
                      conxn[sock].localport = 0;
                      conxn[sock].port = 0;
                      conxn[sock].socket_type = 0;
                      conxn[sock].state = STATE_CLOSED;       
              
                      EA = 0;
                      conxn[sock].my_sequence = 0;
                  conxn[sock].his_sequence = 0;
                      EA = 1;
                      //将未被ACK空间和待发送数据包缓冲区设置为未被占用
                      conxn[sock].pUnAcked ->bUsed = FALSE;
                      conxn[sock].bUsed = FALSE;
              
                      //调用OnClose回调函数
                      (* conxn[sock].close)();
              }
              #endif
 144          
 145          /*
 146          *****************************************************************************************************
 147          *              应用层
 148          *****************************************************************************************************
 149          */
 150          
 151          
 152          /*
 153          *****************************************************************************************************
 154          *FUNC:  收到TCP数据后用户处理,收到数据后回调函数,由用户自己添加相应功能
 155          *NOTE:  入参:数据缓冲区首地址,数据包长度
 156                  //User_TCPSend(IndexOfClient,buf,size); //Uart0Putsl(buf,size);
 157          *****************************************************************************************************
 158          */
 159          void OnReceive(unsigned char xdata *buf,unsigned int size) reentrant
 160          {
 161   1          TimerSec[T_SEND_HEART] = HeartTimeOutBak; //心跳包时间初始化
 162   1              SendHeartFlag = FALSE;                    //清已发心跳包
 163   1              FramePush2(buf,size);    
 164   1      }
 165          
 166          
 167          /*
 168          *****************************************************************************************************
 169          *FUNC: 连接成功后回调函数,由用户根据自己需要表些
 170          *NOTE:  入参:套接字编号
 171          //发送注册包//WP+ID+SIM+MIP
 172          *****************************************************************************************************
 173          */
 174          void LoginMsg(void)
 175          {
 176   1          unsigned char xdata RegBody[50];
 177   1              unsigned char xdata sim[]="13003804577";
 178   1              unsigned char length=0;
C51 COMPILER V7.06   API                                                                   09/26/2008 13:35:56 PAGE 4   

 179   1      
 180   1              //HintMsg(7,ConfigReg.reg.LocalIpStr);   //移动IP这里指本地IP
 181   1              //sprintf(RegBody,"WP%s%s%s\0",ModelIdBak,sim,ConfigReg.reg.LocalIpStr); 
 182   1              IpToStr(my_ip_address);                  //用现在的本地IP,可能是手动分配,也可能是自动指派              
 183   1          HintMsg(7,IpString);                     //移动IP这里指本地IP
 184   1          sprintf(RegBody,"WP%s%s%s\0",ModelIdBak,sim,IpString);
 185   1          length = strlen(RegBody);
 186   1              User_TCPSend(IndexOfClient,RegBody,length);     
 187   1      
 188   1              HintMsg(8,NULL);                        //提示连接成功
 189   1      
 190   1      }
 191          
 192          
 193          void OnConnect() reentrant
 194          {
 195   1      //unsigned char xdata testeven[15];
 196   1          LED(CONNECT_LED,OFF);
 197   1              bConnect      = TRUE;
 198   1              SendHeartFlag = FALSE;                      //清已发心跳包 
 199   1          ConnectNum    = RECONNECT_NUM;              //重连次数填初值        
 200   1              TimerSec[T_SEND_HEART] = HeartTimeOutBak;   //心跳包时间初始化
 201   1          OnLineTime = 0;                             //连续在线时间清0,以便函统计
 202   1              SentHeartTime = 0;
 203   1      #ifdef  PROTOCOL_2004   
                  LoginMsg2004(); 
              #else 
 206   1              LoginMsg();                                     //发送注册包
 207   1      #endif 
 208   1       
 209   1      #if 0   
                  //68 99 99 99 99 99 99 68 01 02 44 E9 96 16
                  testeven[0] = 0x68;
                  testeven[1] = 0x99;
                  testeven[2] = 0x99;
                  testeven[3] = 0x99;
                      testeven[4] = 0x99;
                  testeven[5] = 0x99;
                  testeven[6] = 0x99;
              
                  testeven[7] = 0x68;
                  testeven[8] = 0x01;
                      testeven[9] = 0x02;
                      testeven[10] = 0x44;
                      testeven[11] = 0xe9;
                      testeven[12] = 0x96;
                      testeven[13] = 0x16;
              
                  Uart0Putsl(testeven,14); 
              #endif  
 229   1      }
 230          
 231          /*
 232          *****************************************************************************************************
 233          *FUNC: 套接字关闭后回调函数
 234          *NOTE:  入参:套接字编号
 235          *****************************************************************************************************
 236          */
 237          void OnClose() reentrant
 238          {
 239   1          LED(CONNECT_LED,ON);
 240   1              bConnect      = FALSE;
C51 COMPILER V7.06   API                                                                   09/26/2008 13:35:56 PAGE 5   

 241   1              SendHeartFlag = FALSE;           //清已发心跳包
 242   1              OnLineTime = 0;
 243   1              SentHeartTime = 0;
 244   1      }
 245          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    657    ----
   CONSTANT SIZE    =     22    ----
   XDATA SIZE       =   ----      62
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      18
   IDATA SIZE       =   ----    ----
   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 + -