【问题标题】:QtSerialPort communication issueQtSerialPort 通信问题
【发布时间】:2014-08-20 09:08:44
【问题描述】:
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 到串口,我该如何解决这个问题。

【问题讨论】:

  • 你试过qt串口通信的例子吗?有一些示例展示了如何枚举设备并提出可用的设备。
  • 你忽略了所有类型的错误检查。如果不检查这些,您将不会继续。
  • 您可以使用 minicom 或类似设备连接到您的设备吗?您确定它已连接且可用吗?您可以使用以下命令枚举可用端口: QList ports = QSerialPortInfo::availablePorts(); qDebug()
  • 连接可用,现在可以使用了,我使用命令作为 chmod 777 ./my port 再次感谢您
  • @user297475: 你在像“uucp”这样的正确组吗?

标签: c++ qt ubuntu-13.10 qtserialport


【解决方案1】:

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);
}

每个设置都可以返回真或假。正确的方法是检查每个人!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-13
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 2012-03-14
    • 2017-03-16
    • 2011-07-13
    相关资源
    最近更新 更多