一种千兆网上位机图像数据的接收显示方法

文档序号:7556221阅读:1374来源:国知局
专利名称:一种千兆网上位机图像数据的接收显示方法
技术领域
本发明涉及数据通信技术领域,具体涉及一种千兆网上位机图像数据接收显示方法。
背景技术
千兆网上位机图像数据接收显示是通过winpcap提供的库函数接收图像数据并实时显示,其核心内容是winpcap的二次开发和双缓冲技术在图像显示上的应用。该方法可以用于实现接收和显示速度为几百Mbps的图像数据。传统的监控摄像机图像分辨率低,难以满足一些有特殊要求的应用场合,利用网络来实现对高分辨率高帧率视频图像传输是视频监控系统的一种重要思想。但是目前没有针对千兆网图像数据的上位机接收显示方法,公知的千兆网络主要应用于网络核心服务器连接和聚合高速工作站的骨干连接,并逐步开始向桌面部署。

在高网络利用率的应用场合中(如百兆网通信速度达到90Mb,千兆网通信速度达到700Mb),结合图2,现有基于套接字的面向无连接的客户端网络通信过程为:建立套接字并绑定端口,向服务器发送请求,服务器将数据处理后对客户端的请求进行应答。用传统的socket通信会导致大量的数据丢失。

发明内容
本发明为解决现有网络程序接收千兆网数据丢包率高和图像丢帧,如图像中某些行的缺失、图像显示不连续等问题,提供一种千兆网上位机图像数据的接收显示方法。一种千兆网上位机图像数据的接收显示方法,该方法由以下步骤实现:步骤一、配置相关参数;步骤二、上位机判断是否接收图像数据,如果是,则执行步骤三;如果否,则退出;步骤三、将接收的图像数据存入用户缓冲区,然后判断是否接收一幅完整的图像数据,如果是,则执行步骤四;如果否,返回步骤二 ;步骤四、将图像数据打包重组为一幅图像,采用双缓冲方法将接收的图像上位机屏幕上显示,返回步骤二。本发明的有益效果:一、本发明所述的千兆网上位机图像数据的接收显示方法可以有效地解决图像数据在上位机接收端存在的丢包问题,提高了对接收到的图像数据的处理速度,从而能够得到连续的图像稳定地在上位机屏幕上显示。二、本发明可以根据数据包格式设置过滤器,减少过滤数据包的时间开销,从而增加可以捕获的最大数据传输速度;其次,对捕获的原始数据包进行实时显示和存储很方便;再次内核缓冲区和用户缓冲区可以根据需要进行配置,通过扩大内核缓冲区和用户缓冲区可以大大减少内核丢失数据的几率;最后,本发明采用双缓冲技术在内存上绘图后一次性显示在屏幕上,可以降低处理数据包的时间,减小图像在屏幕上显示时存在的闪烁现象。


图1为本发明所述的一种千兆网上位机图像数据的接收显示方法的流程图;图2现有基于socket的面向无连接的网络通信流程图;图3为本发明所述的一种千兆网上位机图像数据的接收显示方法的效果图。
具体实施例方式结合图1和图3说明本实施方式,一种千兆网上位机图像数据的接收显示方法,包括以下步骤:(I)、配置相关参数;(2)、接收图像数据并保存到用户缓冲区;(3)、将数据包重组为一幅图像;(4)、将接收到的图像显示在上位机屏幕上。本实施方式步骤(I)配置相关参数,具体为:利用winpcap进行二次开发取代传统的socket通信方式,不仅可以只接收所需要的数据包,而且可以克服socket方式在大数据量情况下的丢包问题,其主要参数的配置过程如下:a、打开通信网卡 设备,pcap_t*pcap_open(constchar*source, intsnaplen, intflags, intread_timeout, structpcap—rmtauth氺auth, char氺errbuf);b、设置内核缓冲区和用户缓冲区,intpcap_setbuff (pcap_t*p, intdim), intpcap_setuserbuffer(pcap_t*p, intsize);c、编译、设置过滤器,intpcap_compile (pcap_t*,structbpf_program*,constchar*, int, bpf_u_int32),intpcap_setfilter(pcap_t*, structbpf_program*);步骤(2):接收图像数据保存到用户缓冲区;使用 Mlintpcap_next_ex (pcap_t氺,structpcap—pkthdr氺氺,constu—char氺氺)接收图像数据,并将数据从内核缓冲区u_char**拷贝到用户缓冲区;步骤(3):数据包重组为一幅图像;a、在用户缓冲区开辟数组img[nXm]存放得到的图像数据,其中m是图像的行数,η是图像的列数;b、将每个数据包中行号所对应的一行图像数据存入img[nXm]的对应行,直到得到一幅完整的图像;步骤(4):在上位机屏幕上显示图像;使用双缓冲技术将得到的每幅图像显示在上位机屏幕上,其主要过程如下:a、创建用于缓冲作图的内存DC对象和内存中存放临时图像的位图对象;b、创建兼容内存DC依附在窗口 DC上;c、在兼容内存DC上创建兼容位图并将位图选入内存DC,在内存DC上绘制用户缓冲区中的图像img[nXm];d、将内存DC上的图像复制到前台实际屏幕对象上;e、删除内存DC和内存位图。结合图3,图3是帧频为16fps,分辨率为1392 X 1040的紫外相机拍摄的图片在上位机上显示的效果图,该图像在屏幕上 显示时不存在闪烁现象。
权利要求
1.一种千兆网上位机图像数据的接收显示方法,其特征是,该方法由以下步骤实现: 步骤一、配置相关参数; 步骤二、上位机判断是否接收图像数据,如果是,则执行步骤三;如果否,则退出; 步骤三、将接收的图像数据存入用户缓冲区,然后判断是否接收一幅完整的图像数据,如果是,则执行步骤四;如果否,返回步骤二 ; 步骤四、将图像数据打包重组为一幅图像,采用双缓冲方法将接收的图像上位机屏幕上显示,返回步骤二。
2.根据权利要求1所述的一种千兆网上位机图像数据接收显示方法,其特征在于,步骤一所述的配置相关参数包括: a、打开通信网卡设备; b、设置内核缓冲区和用户缓冲区; C、编译、设置过滤器。
3.根据权利要求1所述的一种千兆网上位机图像数据接收显示方法,其特征在于,步骤三所述的将接收的图像数据存入用户缓冲区,上位机判断是否接收一幅完整的图像数据的具体过程为: 将接收的图像数据从内核缓冲区读入用户缓冲区;在用户缓冲区中开辟二维数组,按接收图像数据按行号将数据 添入对应行,直到最后一行数据被添入数组,将获得的图像数据重新组成一幅图像。
全文摘要
一种千兆网上位机图像数据的接收显示方法,涉及数据通信技术领域。解决现有网络程序接收千兆网数据丢包率高和图像丢帧,如图像中某些行的缺失、图像显示不连续等问题,千兆网上位机图像数据接收显示方法包括配置相关参数;判断是否接收图像数据,如是,则接收图像数据并保存到用户缓冲区,若否,则退出;判断是否接受到了一幅完整的图像,如是,则将数据包重组为一幅图像,若否,则继续接收;采用双缓冲技术将接收到的图像显示在上位机屏幕上。千兆网上位机图像数据接收显示方法可以接收数据量为几百Mbps的数据,有效降低丢包率,将获得的图像连续稳定地在上位机屏幕上显示。
文档编号H04N7/18GK103248881SQ20131018453
公开日2013年8月14日 申请日期2013年5月17日 优先权日2013年5月17日
发明者刘博超, 赵建, 孙强, 曲锋, 刘建卓 申请人:中国科学院长春光学精密机械与物理研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1