Я пытаюсь отправить данные из PSoc через UART на мой ПК, где требуется хранить данные с помощью Qt. PSoc отправляет 3 байта данных. Тезисы 3 байта повторяются с частотой 2,5 Гц. Когда я проверяю сигналы с помощью моего осциллографа, все в порядке. Когда я получаю данные с программным обеспечением HTerm также все, как ожидалось. Когда я использую свой код, написанный на c ++, с Qt, у меня возникает проблема, что не все данные получены в Qt, только одна треть находится в памяти. Я ожидал, что сигнал ReadyRead испускается с каждым новым байтом? Но похоже, что сигнал испускается только в начале пакета из 3 байтов. Также мой вывод qDebug не реагирует на изменения из PSoc. Поэтому, когда я изменяю значения в PSoc, вывод в qDebug не меняется.
Я уже попытался прочитать 3 байта (serial-> read (3)), а затем я сначала получил несколько одиночных байтов, и после нескольких чтений я получил 3 байта, которые я отправил, но это не так воспроизводимо.
connect(serial, SIGNAL(readyRead()), this, SLOT(readData()));
serial->setPortName(gui->ui->comboBox->currentData().toString());
serial->setBaudRate(QSerialPort::Baud115200);
serial->setDataBits(QSerialPort::Data8);
serial->setParity(QSerialPort::NoParity);
serial->setStopBits(QSerialPort::OneStop);
serial->setFlowControl(QSerialPort::NoFlowControl);
void uart::readData()
{
QByteArray data = serial->read(1);
qDebug() << data;
}
Я ожидаю вывод, например, «0x01», «0x02», «0x03», 2,5 раза в секунду, но я получаю только «0x01»