我尝试使用Qt配置与serial-pot的通信,这是我在Qt中的第一个应用程序,根据许多线程,我写了这段代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSerialPort>
QSerialPort serial;
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
serial.open(QSerialPort::ReadWrite);
serial.setPortName("ttyACM0");
serial.setBaudRate(QSerialPort::Baud9600);
serial.setDataBits(QSerialPort::Data8);
serial.setParity(QSerialPort::NoParity);
serial.setStopBits(QSerialPort::OneStop);
serial.setFlowControl(QSerialPort::NoFlowControl);
serial.write("hello");
}
MainWindow::~MainWindow()
{
delete ui;
serial.close();
}
编译器告诉我在构建项目时设备没有打开。
答案 0 :(得分:1)
您是否确定可以打开该设备?如果这是* nix系统,请尝试:
ls -l /sys/class/tty/ttyUSB* ### if USB device or
ls -l /sys/class/tty/ttyACM* ### if ACM, whatever that is
你应该得到一个指向设备目录的符号链接,至少你是在linux上做的。
此外,您的代码构建正常,但我想它实际上运行。
此外,看起来QSerialPort还有一个名为&#34; isOpen&#34;的方法(继承自QioDevice)。如果设备已经打开,则返回一个布尔值,您应该在打开和关闭之前使用它,以了解设备的实际状态。
答案 1 :(得分:0)
我使用serial.open(QIODevice::ReadWrite)
打开设备并运行。谢谢你的帮助。