QtSerialPort не пишет в последовательный порт - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь отправить команды Gcode на 3d-принтер с помощью QtSerialPort. Я могу подключиться и прочитать gcode запуска, который отправляет принтер, но я не смог написать Gcode, чтобы принтер что-то сделал. Я прочитал код многих людей, и, насколько я могу судить, мой код не выглядит неправильно, но я определенно что-то упустил

Это то, что я использую для подключения к 3d-принтеру:

void MainWindow::on_connectButton_clicked()
{
    serial->setPortName(ui->portBox->currentText());
    serial->setBaudRate(250000);
    serial->setDataBits(QSerialPort::Data8);
    serial->setParity(QSerialPort::NoParity);
    serial->setStopBits(QSerialPort::OneStop);;
    serial->setFlowControl(QSerialPort::NoFlowControl);
    if (serial->open(QIODevice::ReadWrite)) {
       ui->label->setText("Connected to Printer!!");
    } else {
    ui->label->setText("Error: Failed to connect");
    }
}

Это то, что я печатаю для записи в последовательный порт:

QString command = "G28";
QByteArray x = command.toLocal8Bit();
serial->write(x);

Это не дает мне ошибок, но принтер не реагирует. Я попробовал пример последовательной консоли Qt и отправил «G28», и принтер реагирует правильно. в той же программе я добавил кнопку, которая выполняет приведенный выше код, чтобы написать команду, и она ничего не сделала. Это говорит мне, что проблема, вероятно, связана с тем, как я пишу в порт. У кого-нибудь есть идеи, что я делаю не так? Заранее спасибо.

1 Ответ

0 голосов
/ 06 июля 2018

Как писал Рафаэль выше, моя проблема была в том, что мне не хватало \ n после G28. Изменение этого решило мою проблему:

QString command = "G28\n";
QByteArray x = command.toLocal8Bit();
serial->write(x);
...