一,环境搭建
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