/ / Qt - como ler dados de uma porta serial em um segmento [duplicado] - c ++, multithreading, qt, porta serial, qthread

Qt - como ler dados de uma porta serial em um segmento [duplicado] - c ++, multithreading, qt, porta serial, qthread

Eu sou novo em Qt e tenho alguns problemas em usarQserialport. Eu preciso receber e gerenciar pacotes de dados de um piloto automático e mostrá-los em uma espécie de bússola. mas eu não sei como receber dados em um thread e usá-los no meu programa principal. Eu sei como usar Qserialport e eu usei thread antes. mas agora eu não sei como usá-los juntos corretamente. Eu realmente preciso de algum código de exemplo. qualquer resposta pode ajudar. e desculpe se minha língua inglesa não é tão boa.

Respostas:

1 para resposta № 1

Você pode ler dados de maneira assíncrona. Basta ligar o readyRead() sinal de QSerialPort para um slot. readyRead() é emitido sempre que novos dados estiverem disponíveis:

connect(&serial, SIGNAL(readyRead()), this, SLOT(readData()));

readData() é um slot que é chamado toda vez QSerialPort emite o readyRead() sinal. readData() anexa todos os dados disponíveis a um QByteArray membro da classe:

void MyClass::readData()
{
receivedData.append(serial.readAll());

if(receivedData.count()>=someAmount)
{
//Use data and remove used data from receivedData
...
}
}