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

📄 main.lst

📁 这是TCP/IP协议组播的实现代码
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.07   MAIN                                                                  04/11/2006 11:07:35 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAIN.C LARGE OMF2 ROM(D16M) REGFILE(.\trm.ORC) BROWSE MODDP2 MODDA VARBANKI
                    -NG DEBUG

stmt level    source

   1          
   2          /********************** 此程序为IP视频会议终端C400程序 ************************/
   3          
   4          /*************************** main.c 为系统主程序 ******************************/
   5          
   6          /**************************** designed by wangxq    ***************************/
   7          
   8          /****************************      2006-02-23       ***************************/
   9          
  10          #include <stdio.h>               
  11          #include <string.h>              
  12          #include "user.h"
  13          #include "rom400_init.h"
  14          #include "rom400_task.h"
  15          #include "rom400_sock.h"
  16          
  17          #ifdef USE_KMEM_LIB
  18          #include "rom400_kmem.h"
  19          #endif
  20          #ifdef USE_XNETSTACK_LIB
  21          #include "rom400_xnetstack.h"
  22          #endif
  23          
  24          void main()
  25          {
  26   1              unsigned int i;
  27   1              #ifdef USE_XNETSTACK_LIB
  28   1              xnetstack_install();
  29   1              #endif
  30   1      
  31   1              #ifdef USE_KMEM_LIB
  32   1                  kmem_install(ROM400_KMEM_MODEL_SMALLEST + 2);
  33   1              #endif
  34   1      
  35   1      
  36   1              init_rom(RAM_START, RAM_END);
  37   1              //系统存储器的初始化,为ROMINIT.LIB的函数,完成对外接的存储器定标和分配地址  
  38   1          
  39   1              clear_param_buffers();
  40   1      
  41   1              
  42   1              #ifdef USE_XNETSTACK_LIB
  43   1              printf("DS80C400 Enhanced Network Library Version %d\r\n", xnetstack_version());
  44   1              #endif
  45   1      
  46   1              #ifdef USE_KMEM_LIB
  47   1              printf("DS80C400 KMEM Library Version             %d\r\n", kmem_version());
  48   1              #endif
  49   1      
  50   1          puts("Timing test...please wait.\r\n");
  51   1          printf("Reload : %x\r\n", task_gettickreload());
  52   1      
  53   1              init();//自己定义的函数,初始化自己定义的变量
  54   1      
C51 COMPILER V7.07   MAIN                                                                  04/11/2006 11:07:35 PAGE 2   

  55   1              puts("Wait IpAddress And Other Information");
  56   1      
  57   1              
  58   1              /*********************** 获取网络参数 ***********************/
  59   1      
  60   1              temp = 0;
  61   1              while(temp == 0)
  62   1              {
  63   2                      temp = (*dual_ip) & 0x01;
  64   2      
  65   2                      for(i = 0;i < 3;i++)
  66   2                      {
  67   3                              verify[i] = *(dual_ip + i + 65);        
  68   3                      }
  69   2      
  70   2                      if((temp == 0x01) && (verify[0] == 0xaa) &&
  71   2                      (verify[1] == 0xbb) && (verify[2] == 0xcc))
  72   2                      {
  73   3                              temp = 1;       
  74   3                      }
  75   2                      else
  76   2                      {
  77   3                              temp = 0;
  78   3                      }
  79   2              }
  80   1      
  81   1              for(i = 0;i < 4;i++)
  82   1              {
  83   2                      static_ip[i] = *(dual_ip + 1 + i);//获取自己的IP
  84   2                      *(send_addr_command + i + 1) = static_ip[i];
  85   2              }
  86   1              for(i = 0;i < 4;i++)
  87   1              {
  88   2                      yan_ma[i] = *(dual_ip + 5 + i);//获取子网掩码
  89   2              }
  90   1              for(i = 0;i < 4;i++)
  91   1              {
  92   2                      gate_ip[i] = *(dual_ip + 9 + i);//获取网关
  93   2              }
  94   1      
  95   1              REV_VIDEO_PORT = (*(dual_ip + 14)) & 0xff;//获取视频接收端口号
  96   1              REV_VIDEO_PORT = REV_VIDEO_PORT + (((*(dual_ip + 13)) & 0xff) << 8);
  97   1              printf("REV_VIDEO_PORT : %u \r\n", REV_VIDEO_PORT);
  98   1      
  99   1              SEND_VIDEO_PORT = (*(dual_ip + 16)) & 0xff;//获取视频发送端口号
 100   1              SEND_VIDEO_PORT = SEND_VIDEO_PORT + (((*(dual_ip + 15)) & 0xff) << 8);
 101   1              printf("SEND_VIDEO_PORT : %u \r\n", SEND_VIDEO_PORT);
 102   1      
 103   1              REV_COMMAND_PORT = (*(dual_ip + 18)) & 0xff;//获取命令字接收端口号
 104   1              REV_COMMAND_PORT = REV_COMMAND_PORT + (((*(dual_ip + 17)) & 0xff) << 8);
 105   1              printf("REV_COMMAND_PORT : %u \r\n", REV_COMMAND_PORT);
 106   1      
 107   1              SEND_COMMAND_PORT = (*(dual_ip + 20)) & 0xff;//获取命令字发送端口号
 108   1              SEND_COMMAND_PORT = SEND_COMMAND_PORT + (((*(dual_ip + 19)) & 0xff) << 8);
 109   1              printf("SEND_COMMAND_PORT : %u \r\n", SEND_COMMAND_PORT);
 110   1      
 111   1              REV_G711_PORT = (*(dual_ip + 22)) & 0xff;//获取音频接收端口号
 112   1              REV_G711_PORT = REV_G711_PORT + (((*(dual_ip + 21)) & 0xff) << 8);
 113   1              printf("REV_G711_PORT : %u \r\n", REV_G711_PORT);
 114   1      
 115   1              SEND_G711_PORT = (*(dual_ip + 24)) & 0xff;//获取音频发送端口号
 116   1              SEND_G711_PORT = SEND_G711_PORT + (((*(dual_ip + 23)) & 0xff) << 8);
C51 COMPILER V7.07   MAIN                                                                  04/11/2006 11:07:35 PAGE 3   

 117   1              printf("SEND_G711_PORT : %u \r\n", SEND_G711_PORT);
 118   1      
 119   1              for(i = 0;i < 4;i++)
 120   1              {
 121   2                      send_para[0][i] = *(dual_ip + 25 + i);//获取第一发送地址
 122   2              }
 123   1              printf("First send IP : %bu %bu %bu %bu\r\n", send_para[0][0], send_para[0][1],send_para[0][2], send_para
             -[0][3]);
 124   1      
 125   1              for(i = 0;i < 4;i++)
 126   1              {
 127   2                      rev_para_video[0][i] = *(dual_ip + 29 + i);//获取第一视频接收地址
 128   2              }
 129   1              printf("First receive video IP : %bu %bu %bu %bu\r\n", rev_para_video[0][0], rev_para_video[0][1],rev_par
             -a_video[0][2], rev_para_video[0][3]);
 130   1      
 131   1              for(i = 0;i < 4;i++)
 132   1              {
 133   2                      rev_para_audio[0][i] = *(dual_ip + 33 + i);//获取第一音频接收地址
 134   2              }
 135   1              printf("First receive audio IP : %bu %bu %bu %bu\r\n", rev_para_audio[0][0], rev_para_audio[0][1],rev_par
             -a_audio[0][2], rev_para_audio[0][3]);
 136   1      
 137   1              for(i = 0;i < 4;i++)
 138   1              {
 139   2                      send_para[1][i] = *(dual_ip + 37 + i);//获取第二发送地址
 140   2              }
 141   1              printf("Second send IP : %bu %bu %bu %bu\r\n", send_para[1][0], send_para[1][1],send_para[1][2], send_par
             -a[1][3]);
 142   1              
 143   1              for(i = 0;i < 4;i++)
 144   1              {
 145   2                      rev_para_video[1][i] = *(dual_ip + 41 + i);//获取第二视频接收地址
 146   2              }
 147   1              printf("Second receive video IP : %bu %bu %bu %bu\r\n", rev_para_video[1][0], rev_para_video[1][1],rev_pa
             -ra_video[1][2], rev_para_video[1][3]);
 148   1      
 149   1              for(i = 0;i < 4;i++)
 150   1              {
 151   2                      rev_para_audio[1][i] = *(dual_ip + 45 + i);//获取第二音频接收地址
 152   2              }
 153   1              printf("Second receive audio IP : %bu %bu %bu %bu\r\n", rev_para_audio[1][0], rev_para_audio[1][1],rev_pa
             -ra_audio[1][2], rev_para_audio[1][3]);
 154   1      
 155   1              for(i = 0;i < 4;i++)
 156   1              {
 157   2                      send_para[2][i] = *(dual_ip + 49 + i);//获取第三发送地址
 158   2              }
 159   1              printf("Third send IP : %bu %bu %bu %bu\r\n", send_para[2][0], send_para[2][1],send_para[2][2], send_para
             -[2][3]);        
 160   1      
 161   1              for(i = 0;i < 4;i++)
 162   1              {
 163   2                      rev_para_video[2][i] = *(dual_ip + 53 + i);//获取第三视频接收地址
 164   2              }
 165   1              printf("Third receive video IP : %bu %bu %bu %bu\r\n", rev_para_video[2][0], rev_para_video[2][1],rev_par
             -a_video[2][2], rev_para_video[2][3]);
 166   1      
 167   1              for(i = 0;i < 4;i++)
 168   1              {
 169   2                      rev_para_audio[2][i] = *(dual_ip + 57 + i);//获取第三视频接收地址
 170   2              }
C51 COMPILER V7.07   MAIN                                                                  04/11/2006 11:07:35 PAGE 4   

 171   1              printf("Third receive audio IP : %bu %bu %bu %bu\r\n", rev_para_audio[2][0], rev_para_audio[2][1],rev_par
             -a_audio[2][2], rev_para_audio[2][3]);
 172   1      
 173   1              for(i = 0;i < 4;i++)
 174   1              {
 175   2                      send_para[3][i] = *(dual_ip + 61 + i);//获取第四发送地址
 176   2              }
 177   1              printf("Four send IP : %bu %bu %bu %bu\r\n", send_para[3][0], send_para[3][1],send_para[3][2], send_para[
             -3][3]);        
 178   1      
 179   1              *dual_ip = 0;
 180   1              for(i = 0;i < 3;i++)
 181   1              {
 182   2                      *(dual_ip + i + 65) = 0;        
 183   2              }
 184   1               
 185   1              /*********************** 获取网络参数 ***********************/
 186   1              
 187   1              task_settickreload(RELOAD_73_728);//装载任务调度定时器的初值
 188   1      
 189   1          puts("About to wait 20...");
 190   1      
 191   1          printf("Reload : %x\r\n", task_gettickreload()); 
 192   1      
 193   1              do_static();//设置本地IP地址属性(包括IP、网关等)
 194   1      
 195   1          network_config();//读取并打印设置参数
 196   1      
 197   1      
 198   1              /********************** 创建发送连接 *************************/ 
 199   1      
 200   1              video_sendhandle = socket(0, SOCKET_TYPE_DATAGRAM, 0);//创建UDP视频发送连接
 201   1      
 202   1      
 203   1              g711_sendhandle = socket(0, SOCKET_TYPE_DATAGRAM, 0);//创建UDP音频发送连接
 204   1      
 205   1              /*****************创建UDP命令字发送连接***********************/
 206   1      
 207   1              memset(&send_udp_command, 0, sizeof(struct sockaddr));
 208   1          send_udp_command.sin_addr[12] = send_para[3][0];
 209   1          send_udp_command.sin_addr[13] = send_para[3][1];
 210   1          send_udp_command.sin_addr[14] = send_para[3][2];
 211   1          send_udp_command.sin_addr[15] = send_para[3][3];
 212   1      
 213   1          send_udp_command.sin_port = SEND_COMMAND_PORT;
 214   1      
 215   1              command_sendhandle = socket(0, SOCKET_TYPE_DATAGRAM, 0);//创建UDP命令字发送连接
 216   1      
 217   1              if(command_sendhandle ==  0x0FFFF)
 218   1              puts("\r\n Failed to create command send UDP socket \r\n");
 219   1          else
 220   1              {
 221   2              puts("\r\n Succeed to create command send UDP socket \r\n");
 222   2              }
 223   1      
 224   1              syn_setDatagramAddress(command_sendhandle, 1, &send_udp_command);//设置UDP命令字发送连接地址
 225   1      
 226   1              /*****************创建UDP命令字发送连接***********************/
 227   1      
 228   1              /******************** 创建发送连接 ***************************/ 
 229   1      
 230   1              /******************** 创建接收连接 ***************************/ 
C51 COMPILER V7.07   MAIN                                                                  04/11/2006 11:07:35 PAGE 5   

 231   1      
 232   1              /******************创建UDP视频接收连接************************/
 233   1      
 234   1              memset(&rev_udp_video, 0, sizeof(struct sockaddr));
 235   1          rev_udp_video.sin_addr[12] = static_ip[0];
 236   1          rev_udp_video.sin_addr[13] = static_ip[1];
 237   1          rev_udp_video.sin_addr[14] = static_ip[2];
 238   1          rev_udp_video.sin_addr[15] = static_ip[3];
 239   1      
 240   1          rev_udp_video.sin_port = REV_VIDEO_PORT;
 241   1      
 242   1              video_revhandle = socket(0, SOCKET_TYPE_DATAGRAM, 0);//创建UDP接收命令字连接
 243   1      

⌨️ 快捷键说明

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