基于QT的UDP,RTL8211的千兆以太网图像采集上位机编程

一,环境搭建

QT自带的QUDPsocket在windows的兼容不够,速率达不到要求,采用windows自带的socket采集实现高速图像采集。

二,接收方式

数据包的接收要用阻塞模式放在单独的线程while(1)里,才能保证数据不丢

 while(1)
    {
        net_pack_size = 0;

#if _QT_SOCKET_
        if( p_echo_socket->hasPendingDatagrams())  // 有数据
        {
            net_pack_size = p_echo_socket->pendingDatagramSize();
            p_echo_socket->readDatagram((char*)p_echo_net_pack,net_pack_size);
        }
#endif

#if _WIN_SOCKET_
        net_pack_size = recvfrom(echo_socket_WIN, (char*)p_echo_net_pack, 1600, 0, (sockaddr *)&src_addr_WIN, &src_addr_len);
#endif

#if _LINUX_SOCKET_
        net_pack_size = recvfrom(socket_descriptor,(char*)p_echo_net_pack,1600,0,(struct sockaddr *)&echo_socket_LINUX,(socklen_t*)&socket_len);
#endif

         MYmutex.lock();
      // camera_switch=(unsigned char)(p_echo_net_pack[0]);
      //  linecount=(unsigned char)(p_echo_net_pack[1])+( unsigned char)(p_echo_net_pack[2])*256;
         ringBuffer.append((const char*)(p_echo_net_pack),net_pack_size);
         MYmutex.unlock();

    }

三,两个线程

一个接收,一个处理

效果:800M的稳定传输,可以做到双目60帧。

如需项目合作,qq1336295654

猜你喜欢

转载自blog.csdn.net/hanshihao1336295654/article/details/81945398
今日推荐