新闻中心

EEPW首页 > 模拟技术 > 设计应用 > 基于千兆网接口摄像机设计

基于千兆网接口摄像机设计

作者:时间:2009-12-24来源:网络收藏
3.2图像数据的封包

本文引用地址:http://www.eepw.com.cn/article/188443.htm

当图像的分辨率为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;//fragmentoffset始终为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编写程序需要安装开发包及驱动程序。

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

BOOLInitWpcap(){
pcap_if_t*alldevs;
pcap_if_t*d;
charerrbuf[PCAP_ERRBUF_SIZE];
if(pcap_findalldevs(alldevs,errbuf)==-1){
AfxMessageBox(“Errorinpcap_findalldevs”);
returnFALSE;}
//枚举网卡然后添加到用户选择的ComboBox中,代码省略
char*filter=port6000;//只接收端口6000的数据
bpf_u_int32NetMask=0xFFFFFF;
structbpf_programfcode;
if(pcap_compile(m_pcap,fcode,filter,1,NetMask)0){
AfxMessageBox(nErrorcompilingfilter:wrongsyntax);
pcap_close(m_pcap);returnFALSE;}
if(pcap_setfilter(m_pcap,fcode)0){
AfxMessageBox(nErrorsettingthefiltern);
pcap_close(m_pcap);returnFALSE;}
pcap_freealldevs(alldevs);//释放alldev资源
returnTRUE;}

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

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

第三步:处理收到的数据

voidpacket_handler(u_char*param,conststructpcap_pkthdr*header,constu_char*pkt_data){
constu_char*real_data=pkt_data+42;
introw=real_data[0]+(real_data[1]8);}//这里就没有处理包头,直接处理数据。

4总结

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


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭