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 № 1Você 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
...
}
}