首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
基于千兆网接口摄像机设计
来源:本站整理  作者:佚名  2010-04-08 19:09:10



3.2 图像数据的封包

      当图像的分辨率为2048×1536时,一个UDP数据包包含1024字节的图像数据和两个bytes图像行编号。当计算机收到数据包时,根据图像行编号信息放入对应的内存中,可以很方便的组合成一副完整的图像。并且,采用行编号的形式,还可防止某一两个数据包丢失后导致整副图像都无法显示的问题。以下这FPGA写入AX88180的UDP包头代码。

case(param_num) 
‘d0: w_dd <= ‘hFFFF;//目的MAC地址(广播地址),写三次
‘d3: w_dd <= ‘h1111;//源MAC地址,均为0x1111,写三次
  ‘d6: w_dd <= ‘h0008;//协议号
‘d7: w_dd <= ‘h0045;//固定数据VIP4,
‘d8: w_dd <= ‘h1E04;//IP包总长度1026+28,并且高低8位交换
‘d9: w_dd <= ‘h0;//ID号,始终为0
‘d10:w_dd <= ‘h0;//fragment offset始终为0;
‘d11:w_dd <= ‘h1140;//生存期和协议号,固定
‘d12:w_dd <= ‘h0;//IP校验和,由MAC芯片自动生成
‘d13:w_dd <= ‘hA8C0;//源IP,固定为192.168.1.204
‘d14:w_dd <= ‘hCC01;
‘d15:w_dd <= ‘hFFFF;//目的IP,任意
‘d16:w_dd <= ‘hFFFF;
‘d17:w_dd <= ‘h7017;//源端口,固定为6000
‘d18:w_dd <= ‘h7017;// 目的端口,固定为6000
‘d19:w_dd <= ‘h0A04;//UDP数据长度
‘d20:w_dd <= ‘h0;////校验和由AX88180自动生成
‘d21:w_dd <= row_num;//图像行信息从0开开始
default:w_dd <= w_dd;
endcase

3.3 应用程序设计

      由于大量数据在网络上传输,用SOCKET的方式来获图像数据包已经比较困难,丢包率会比较高。采用Winpcap来捕获网络上的数据包,可有效的减少丢包率。用Winpcap编写程序需要安装开发包及驱动程序。

第一步,指定要通信的网卡设备并打开。

BOOL InitWpcap(){
pcap_if_t* alldevs; 
pcap_if_t* d; 
char errbuf[PCAP_ERRBUF_SIZE]; 
if(pcap_findalldevs(&alldevs, errbuf) == -1){
  AfxMessageBox(“Error in pcap_findalldevs”);
  return FALSE; }
// 枚举网卡然后添加到用户选择的ComboBox中,代码省略
char *filter = "port 6000";//只接收端口6000的数据
bpf_u_int32 NetMask = 0xFFFFFF;
struct bpf_program fcode;
if(pcap_compile(m_pcap, &fcode, filter, 1, NetMask) < 0){
  AfxMessageBox("nError compiling filter: wrong syntax");
  pcap_close(m_pcap);  return FALSE; } 
if(pcap_setfilter(m_pcap, &fcode)<0){
  AfxMessageBox("nError setting the filtern");
  pcap_close(m_pcap); return FALSE; }    
pcap_freealldevs(alldevs); // 释放alldev资源  
return TRUE;}

第二步:开启一个线程接收数据。

UINT  RecvProc(LPVOID lpParammeter)
{ pcap_loop(m_pcap, 0, packet_handler, NULL); return 0;}
packet_handler是处理收到数据包的回调函数, 当从port6000收到数据后它会被调用,直到线程终止。

第三步:处理收到的数据

void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data){
const u_char *real_data = pkt_data+42;
int row=real_data[0]+(real_data[1]<<8); }//这里就没有处理包头,直接处理数据。

4 总结

      兆网接口摄像机,网络传输有效数据带宽达400Mb/s以上,较好的解决了百兆网传输带宽不足、数据传输速度慢的问题。传输300万像素不进行压缩的原始图像,帧率可达18帧/秒,视频流畅清晰。计算机采用Winpcap捕获图像数据,丢包率小于0.02%。

上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:197,296.90000 毫秒