QtSerialPort не пишет в последовательный порт

Я пытаюсь отправить команды 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», и принтер реагирует правильно. в той же программе я добавил кнопку, которая выполняет приведенный выше код, чтобы написать команду, и она ничего не сделала. Это говорит мне, что проблема, вероятно, связана с тем, как я пишу в порт.
У кого-нибудь есть идеи о том, что я делаю не так?
Заранее спасибо.

0

Решение

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

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]