QSerialPort *serial;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
serial = new QSerialPort(this);
serial->setPortName("/dev/ttyUSB0");
serial->setBaudRate(QSerialPort::Baud9600);
serial->setStopBits(QSerialPort::OneStop);
serial->setParity(QSerialPort::NoParity);
serial->setDataBits(QSerialPort::Data8);
serial->setFlowControl(QSerialPort::NoFlowControl);
serial->open(QIODevice::ReadWrite);
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(serialReceived()));
connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(serialSent()));
}
MainWindow::~MainWindow()
{
delete ui;
serial->close();
}
void MainWindow::serialReceived()
{
ui->label->setText(serial->readAll());
}
void MainWindow::serialSent()
{
QByteArray bytes;
serial->write(bytes);
}
从这段代码我在Ubuntu上运行qt。它显示QIOdevice :: write设备未打开。但我已经将usb插入此端口的串口,如何解决这个问题。
答案 0 :(得分:0)
1)在ubuntu中访问串口,您必须拥有正确的权限。尝试使用sudo命令运行代码。
2)在打开端口后必须完成串口的各种设置,更改代码如下:
serial->setPortName("/dev/ttyUSB0");
if(serial->open(QIODevice::ReadWrite){
serial->setBaudRate(QSerialPort::Baud9600);
serial->setStopBits(QSerialPort::OneStop);
serial->setParity(QSerialPort::NoParity);
serial->setDataBits(QSerialPort::Data8);
serial->setFlowControl(QSerialPort::NoFlowControl);
}
每个设置都可以返回true或false。正确的方法是检查每个人!