我正在尝试使用QtSerialPort将Gcode命令发送到3d打印机。我可以连接并读取打印机发送的启动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 :(得分:0)
正如拉斐尔(Rafael)所说,我的问题是G28之后我想念\ n。将其更改为此解决了我的问题:
QString command = "G28\n";
QByteArray x = command.toLocal8Bit();
serial->write(x);