Slavka_online
@Slavka_online
Интересная личность

Как использовать QtSerialPort?

QByteArray message;
    message.resize(7);
    message[0] = (char)':';
    message[1] = 0x1A;
    message[2] = 0x03;
    message[3] = 0x00;
    message[4] = 0x00;
    message[5] = 0x00;
    message[6] = 0x04;

  serialport->write(message);

вот код и он всегда передает только ":" даже если вторым параметром указать число байт, пробовал на собранной самим библиотеке на qt4 и в оригинальной на qt5 .
Вот конфиг порта
serialport->setPortName("COM6");

    if(!serialport->open(QIODevice::ReadWrite) )
    {
        QMessageBox  *msg = new QMessageBox();
        msg->setText("fail");
        msg->show();
    }


    serialport->setBaudRate(QSerialPort::Baud9600);
    serialport->setDataBits(QSerialPort::Data8);
    serialport->setStopBits(QSerialPort::OneStop);
    serialport->setFlowControl(QSerialPort::NoFlowControl);
    serialport->setParity(QSerialPort::NoParity);


}


Вообще нужно просто передать ModBus ASCII запрос
  • Вопрос задан
  • 3347 просмотров
Решения вопроса 1
peleron
@peleron
Веду кружки по робототехнике
Как отметил Армянское Радио - нужно проверить в первую очередь код возврата.
Во-вторых, возможно вызов процедуры bool QSerialPort::waitForBytesWritten(int msecs) может помочь.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Семантика всех таких вызовов одинакова - вы указываете, сколько хотите передать, write выдает, сколько реально передал или -1. Проверить код возврата (и почитать документацию), вы конечно не удосужились
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы