В своей программе использую QUdpSocket. Размер сообщения 13 байт.
Пример приема сообщения.
QByteArray datagram;
while (udpSocket_->hasPendingDatagrams())
{
datagram.resize(udpSocket_->pendingDatagramSize());
udpSocket_->readDatagram(datagram.data(), datagram.size());
QDataStream in(&datagram, QIODevice::ReadOnly);
in.setVersion(QDataStream::Qt_4_7);
quint8 firstCommand = 0;
in >> firstCommand;
if(firstCommand == 8)
{
quint8 secondCommand = 0;
in >> secondCommand;
if(secondCommand == responseOperationController_)
{
in >> message_.unitShifterFirst >> message_.unitShifterSecond;
in >> message_.attenuatorValueD1 >> message_.attenuatorValueD2 >> message_.attenuatorValueD4;
in >> message_.voltageValueD1 >> message_.amperageValueD1 >> message_.voltageValueD2 >> message_.amperageValueD2;
in >> message_.voltageValueD4 >> message_.amperageValueD4;
//Здесь мы получаем значение необходимых нам битов
clearWasteBits(3, message_.attenuatorValueD1);
clearWasteBits(3, message_.attenuatorValueD2);
clearWasteBits(3, message_.attenuatorValueD4);
emit sendMessageKu(message_);
}
}
}
Слот в котором принимаю сообщение вызывается при испускании объекта udpSocket сигнала readyRead().
Буду очень рад, если вы выскажите ваши мысли или возможные пути решения по этому вопросу.