запись и чтение шестнадцатеричного trame qt последовательный порт - PullRequest
0 голосов
/ 25 мая 2018

Как я могу записывать и считывать шестнадцатеричные данные при открытии последовательного порта?

if (serial->isOpen()) {
    qDebug() << "seccus: " ;
    static const char buff[] = {0xA1, 0xFF, 0xFF, 0x00,97};
    serial->write(buff,sizeof(buff));
}
if (serial->bytesAvailable()) {   // If there are bytes available
    QByteArray f_data; // data container
    f_data.clear();

    if (serial->open(QIODevice::ReadWrite)) { // Try to open the port
        while(serial->bytesAvailable()) { // Reading loop
            f_data.append(serial->readAll());
       }

       serial->flush();
    }
    qDebug()<< "the result" << f_data; // Check the result
}

if(!serial->isOpen())
    qDebug() << "carte disconnect"<<serial->errorString();

1 Ответ

0 голосов
/ 25 мая 2018

Чтобы устранить вашу проблему, я бы начал с упрощения того, что вы пытаетесь сделать.Попробуйте написать некоторый тестовый код для начала, чтобы убедиться, что все работает так, как вы ожидаете:

  1. Тестовый серийный номер открыт - не должно быть
  2. Открытый серийный номер
  3. Тестовый серийный номерОткрыто - должно быть
  4. Проверка наличия байтов - не должно быть
  5. Запись данных в последовательный порт.Flush.
  6. Проверьте, доступны ли байты - должно быть
  7. Чтение и печать на экране (т. Е. Проверьте правильность его чтения)
  8. Закройте последовательный порт - проверьте, не открыт ли он

Возможно, если один из этих шагов не сработает, как вы ожидаете, вы можете хотя бы сосредоточиться на том, почему эта конкретная часть не работает.

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...