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

📄 main.lst

📁 这是TCP/IP协议组播的实现代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 264   3                              while (1)
 265   3                              {
 266   4                              rev_length_video = syn_recvfrom(video_revhandle,1472,rev_addr_video);//UDP接收视频数据
 267   4                                      if(rev_length_video == 1472)
 268   4                                      {
 269   5                                              dp_write_video();
 270   5                                              rev_num++;
 271   5                                              if(rev_num > 49950)
 272   5                                              {
 273   6                                                      printf(" rev_num = %u\r\n",rev_num);
 274   6                                              }
 275   5                                      }
 276   4                                      else
 277   4                                      {
 278   5                                              printf(" rev_length_video = %u\r\n",rev_length_video);
 279   5                                      }
 280   4                              }
 281   3                      }
 282   2                      else
 283   2                      {
 284   3                              audio_result = task_fork(NORM_PRIORITY, ROM_SAVESIZE);//创建两个任务线程
 285   3                              if(audio_result == 0xffff)
 286   3                              {
 287   4                                      puts("Attempt to fork failed\r\n");
 288   4                              return;
 289   4                              }
 290   3                              else if(audio_result == 0)//接收音频线程
 291   3                              {
 292   4                                      while(1)
 293   4                                      {
 294   5                                              rev_length_audio = syn_recvfrom(g711_revhandle,1024,rev_addr_audio);//UDP音频接收
 295   5                                              //rev_length_audio = recvfrom(g711_revhandle,rev_addr_audio,1024,0,&temp_addr,sizeof(struct sockaddr)
             -);//UDP音频接收
 296   5                                              if(rev_length_audio == 1024)
 297   5                                              {
 298   6                                                      dp_write_audio();
 299   6                                                      //printf("IP : %bu \r\n", temp_addr.sin_addr[15]);
 300   6                                                      //temp_addr.sin_addr[15] = 0;
 301   6                                              }
C51 COMPILER V7.07   MAIN                                                                  04/07/2006 09:39:09 PAGE 6   

 302   5                                      }
 303   4                              }
 304   3                              else//接收命令字线程
 305   3                              {
 306   4                                      task_leavecritsection();
 307   4                                      while (1)
 308   4                                      {
 309   5                                              rev_length_command = syn_recvfrom(command_revhandle,210, rev_addr_command);//UDP接收
 310   5                                              if((rev_length_command < 210) && (rev_length_command > 0))
 311   5                                              {
 312   6                                                      moveto_buf();//将网络接收到的命令字放入接收缓冲区
 313   6                                                      rev_length_command = 0;
 314   6                                                      while(head_r != tail_r)
 315   6                                                      {
 316   7                                                              send_command();
 317   7                                                      }
 318   6                                              }
 319   5                                      }
 320   4                              }
 321   3                      }
 322   2              }
 323   1          while(1)
 324   1              {
 325   2              }
 326   1      }
 327          
 328          void start_leave()
 329          {
 330   1      }
 331          
 332          void wait_millis(unsigned int waitTime)//延时等待函数
 333          {
 334   1          unsigned int result;
 335   1          struct TIME time1;
 336   1          struct TIME time2;
 337   1      
 338   1          task_entercritsection();
 339   1      
 340   1          task_gettimemillis(&time1);
 341   1          result = 0;
 342   1          while (result < waitTime)
 343   1          {
 344   2              task_gettimemillis(&time2);
 345   2              result = time2.millis - time1.millis;
 346   2          }
 347   1      
 348   1          task_leavecritsection();
 349   1          printf("Waited for %ld msec\r\n", (time2.millis - time1.millis));
 350   1      }
 351          
 352          void do_static()//配置本端网络属性
 353          {
 354   1          unsigned int result;
 355   1          unsigned char xdata config[56];
 356   1          unsigned int i;
 357   1          for (i=0;i<56;i++)
 358   1              config[i] = 0;
 359   1      
 360   1          //set the ip address
 361   1          config[12] = static_ip[0];
 362   1          config[13] = static_ip[1];
 363   1          config[14] = static_ip[2];
C51 COMPILER V7.07   MAIN                                                                  04/07/2006 09:39:09 PAGE 7   

 364   1          config[15] = static_ip[3];
 365   1      
 366   1          //set the subnet mask
 367   1          config[16] = yan_ma[0];
 368   1          config[17] = yan_ma[1];
 369   1          config[18] = yan_ma[2];
 370   1          config[19] = yan_ma[3];
 371   1      
 372   1          //set the iP4 prefix
 373   1          config[20] = STATIC_IPV4_PREFIX;
 374   1      
 375   1          //set the gateway
 376   1          config[33] = gate_ip[0];
 377   1          config[34] = gate_ip[1];
 378   1          config[35] = gate_ip[2];
 379   1          config[36] = gate_ip[3];
 380   1      
 381   1          result = setnetworkparams(config);
 382   1          printf("Set network parameters result: %u\r\n", result);
 383   1              
 384   1      }
 385          
 386          void network_config()//读取本端网络属性
 387          {
 388   1          unsigned char result;
 389   1          unsigned char xdata config[56];
 390   1          unsigned int i;
 391   1          for (i=0;i<56;i++)
 392   1              config[i] = 0;
 393   1      
 394   1          result = getnetworkparams(config);
 395   1          printf("Network params result: %d\r\n", result);
 396   1      
 397   1          printf("IP    : %bu %bu %bu %bu\r\n", config[12], config[13], config[14], config[15]);
 398   1          printf("Subnet: %bu %bu %bu %bu\r\n", config[16], config[17], config[18], config[19]);
 399   1          printf("Prefix: %bu\r\n", config[20]);
 400   1          printf("Gate  : %bu %bu %bu %bu\r\n", config[33], config[34], config[35], config[36]);
 401   1      }
 402          
 403          void init()//初始化自己定义的量
 404          {
 405   1              send_addr_video         = 0x050000;//视频发送地址指针
 406   1              rev_addr_video          = 0x051000;//视频接收地址指针
 407   1              send_addr_audio         = 0x052000;//音频发送地址指针
 408   1              rev_addr_audio          = 0x053000;//音频接收地址指针
 409   1              send_addr_command       = 0x054000;//命令字发送地址指针
 410   1              rev_addr_command        = 0x055000;//命令字接收地址指针
 411   1              rd_fifo_hf                      = 0x280000;//读取音频发送FIFO半满地址指针
 412   1              rd_fifo_ef                      = 0x2a0000;//读取视频发送FIFO空地址指针
 413   1              dual_send                       = 0x240200;//双口RAM写地址指针
 414   1              dual_rev                        = 0x240000;//双口RAM读地址指针
 415   1              dual_ip                         = 0x240400;//网络参数配置地址指针
 416   1              command_length  = 0;
 417   1              head_r                  = 0;
 418   1              tail_r                  = 0;
 419   1              rev_num                 = 0;
 420   1              for(i = 0;i < 2048;i++)
 421   1              {
 422   2                      rev_buf[i] = 0;
 423   2              }
 424   1              
 425   1              for(i = 0; i < 4;i++)
C51 COMPILER V7.07   MAIN                                                                  04/07/2006 09:39:09 PAGE 8   

 426   1              {
 427   2                      for(j = 0; j < 4;j++)
 428   2                      {
 429   3                              send_para[i][j] = 0;
 430   3                      }
 431   2              }
 432   1      
 433   1              for(i = 0; i < 3;i++)
 434   1              {
 435   2                      for(j = 0; j < 4;j++)
 436   2                      {
 437   3                              rev_para_video[i][j] = 0;
 438   3                              rev_para_audio[i][j] = 0;
 439   3                      }
 440   2              }
 441   1      
 442   1              send_video_flag = 0xff;
 443   1              rev_video_flag = 0xff;
 444   1              send_audio_flag = 0xff;
 445   1              rev_audio_flag = 0xff;
 446   1      
 447   1              static_ip[0]    = 192;
 448   1              static_ip[1]    = 168;
 449   1              static_ip[2]    = 0;
 450   1              static_ip[3]    = 201;
 451   1              
 452   1              gate_ip[0]              = 192;
 453   1              gate_ip[1]              = 168;
 454   1              gate_ip[2]              = 0;
 455   1              gate_ip[3]              = 1;
 456   1      
 457   1              yan_ma[0]               = 255;
 458   1              yan_ma[1]               = 255;
 459   1              yan_ma[2]               = 255;
 460   1              yan_ma[3]               = 0;
 461   1      
 462   1              SEND_VIDEO_PORT         = 10026;
 463   1              REV_VIDEO_PORT          = 10025;
 464   1              SEND_G711_PORT          = 10028;
 465   1              REV_G711_PORT           = 10027;
 466   1          SEND_COMMAND_PORT   = 10030;
 467   1              REV_COMMAND_PORT        = 10029;
 468   1      }
 469          
 470          void moveto_buf()//将收到的命令字转移到接收缓冲区
 471          {
 472   1      }
 473          
 474          
 475          void send_command()//通过双口RAM发送命令字
 476          {
 477   1              
 478   1      }
 479          
 480          void analyse_current_state(unsigned char state,unsigned num)
 481          //根据8031提供的情况调整视频、音频的收发
 482          {
 483   1      }
*** WARNING C280 IN LINE 480 OF MAIN.C: 'state': unreferenced local variable
*** WARNING C280 IN LINE 480 OF MAIN.C: 'num': unreferenced local variable
 484          
 485          void adjust_send_video(unsigned char num,unsigned char flag)
C51 COMPILER V7.07   MAIN                                                                  04/07/2006 09:39:09 PAGE 9   

 486          //调整视频的发送
 487          { 
 488   1      }
*** WARNING C280 IN LINE 485 OF MAIN.C: 'num': unreferenced local variable
*** WARNING C280 IN LINE 485 OF MAIN.C: 'flag': unreferenced local variable
 489          
 490          void adjust_send_audio(unsigned char num,unsigned char flag)
 491          //调整音频的发送
 492          {
 493   1              
 494   1      }
*** WARNING C280 IN LINE 490 OF MAIN.C: 'num': unreferenced local variable
*** WARNING C280 IN LINE 490 OF MAIN.C: 'flag': unreferenced local variable
 495          
 496          void adjust_rev_video(unsigned char num,unsigned char flag)
 497          //调整视频的接收
 498          {
 499   1              
 500   1      }
*** WARNING C280 IN LINE 496 OF MAIN.C: 'num': unreferenced local variable
*** WARNING C280 IN LINE 496 OF MAIN.C: 'flag': unreferenced local variable
 501          
 502          void adjust_rev_audio(unsigned char num,unsigned char flag)
 503          //调整音频的接收
 504          {
 505   1      
 506   1      } 
*** WARNING C280 IN LINE 502 OF MAIN.C: 'num': unreferenced local variable
*** WARNING C280 IN LINE 502 OF MAIN.C: 'flag': unreferenced local variable


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2795    ----
   CONSTANT SIZE    =   1150    ----
   XDATA SIZE       =   2350     135
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     40    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
   EDATA SIZE       =   ----    ----
   HDATA SIZE       =   ----    ----
   XDATA CONST SIZE =   ----    ----
   FAR CONST SIZE   =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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