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

UDP 专栏收录该内容
1 篇文章 0 订阅

一,环境搭建

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的稳定传输不丢包。

 

  • 2
    点赞
  • 3
    评论
  • 7
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值