QtSerialPort 不写入串口
QtSerialPort not writing to serial port
我正在尝试使用 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" 并且打印机反应正确。在同一个程序上,我添加了一个按钮来执行上面的代码来编写命令,但它什么也没做。这告诉我问题可能出在我如何写入端口上。
有人对我做错了什么有任何想法吗?
提前致谢。
正如 Rafael 在上面发布的那样,我的问题是我在 G28 之后丢失了 \n。将其更改为此解决了我的问题:
QString command = "G28\n";
QByteArray x = command.toLocal8Bit();
serial->write(x);
我正在尝试使用 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" 并且打印机反应正确。在同一个程序上,我添加了一个按钮来执行上面的代码来编写命令,但它什么也没做。这告诉我问题可能出在我如何写入端口上。 有人对我做错了什么有任何想法吗? 提前致谢。
正如 Rafael 在上面发布的那样,我的问题是我在 G28 之后丢失了 \n。将其更改为此解决了我的问题:
QString command = "G28\n";
QByteArray x = command.toLocal8Bit();
serial->write(x);