16,199
社区成员
发帖
与我相关
我的任务
分享
void QTcpSocketThread::run()
{
tcpSocket = new QTcpSocket();
Q_ASSERT( tcpSocket );
if ( !tcpSocket->setSocketDescriptor( socketDescriptor ) )
{
emit error( tcpSocket->error() );
return;
}
connect( tcpSocket,
SIGNAL( readyRead() ),
this,
SLOT( socketRead() ),
Qt::DirectConnection );
connect( tcpSocket,
SIGNAL( disconnected() ),
this,
SLOT( socketDisconnect() ) );
exec();
}
void QTcpSocketThread::socketRead()
{
recvPkgBuffer = tcpSocket->readAll();
qDebug() <<"socketRecv"<< recvPkgBuffer.toHex().toUpper().data();
if ((uchar)recvPkgBuffer.at(0)== 0x55 && (uchar)recvPkgBuffer.at(1)== 0x7A )
{
procXyhSensorPkg();//解析
}
大家也看到了,这是我最初的代码,服务器发送命令,接收到返回的数据后解析,然后发送下一条,然后接收解析,以此类推。后来我改进了代码,发送一条指令,然后传感器间隔一秒陆续返回,但是只接收到第一条,再也显示不出来,也不知道是接收还是没收到,qDebug()反正没显示,真的困扰的我这些日子睡不着,你们是怎么解决的,有没有别的途径,阻塞式的写法是什么???