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 device not open。但是我已经把我的usb连接到这个端口上了,我该如何解决这个问题呢?
发布于 2014-11-13 23:45:54
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。正确的方法是检查每个人!
https://stackoverflow.com/questions/24482611
复制相似问题