首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QtSerialPort通信问题

QtSerialPort通信问题
EN

Stack Overflow用户
提问于 2014-06-30 11:33:24
回答 1查看 1.9K关注 0票数 0
代码语言:javascript
复制
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连接到这个端口上了,我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2014-11-13 23:45:54

1)在ubuntu中访问串口需要有相应的权限。尝试使用sudo命令运行您的代码。

2)打开串口后,必须对串口进行各种设置,修改代码如下:

代码语言:javascript
复制
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。正确的方法是检查每个人!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24482611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档