linux下在Qt中使用串口通信

       本人目前还是初学者,最近做的项目中涉及到linux下qt串口的使用,准备把它记录下来。

      如有错误,还请指正,谢谢!

以下是部分代码:

    QSerialPort *m_serialPort;   

    m_serialPort = new QSerialPort;
    if(m_serialPort ->isOpen()){
        qDebug()<<"serial have already open";
    }else{
        m_serialPort ->open(QSerialPort::ReadWrite);
        m_serialPort ->setPortName("/dev/ttyUSB0");
        m_serialPort->setBaudRate(QSerialPort::Baud115200);
        m_serialPort->setParity(QSerialPort::NoParity);
        m_serialPort->setDataBits(QSerialPort::Data8);
        m_serialPort->setStopBits(QSerialPort::OneStop);
        m_serialPort->setReadBufferSize(1024);
        m_serialPort->open(QIODevice::ReadWrite);
        if(m_serialPort ->isOpen()){
            qDebug()<<"open serial success";
        }else{
            qDebug()<<"open serial fail";
        }
    }

上面代码就是将串口打开并将串口的一些设定给设置好。接下来就可以做一些读写的操作了。

写可以用m_serialPort->write( );你也可以使用其他的函数设置一下数据长度。

读操作我用的是m_serialPort->readAll( );若你想要阻塞接收,你可以将读操作写进一个自定义函数中,然后定义一个槽函数来调用这个自定义函数。

示例:connect(m_serialPort,SIGNAL(readyRead()),this,SLOT(slotReadReady()));   

void Widget::slotReadReady()
{
    QByteArray byte = m_serialPort1->readAll();

}

如果出现了串口device打不开的情况,可以去看一下/dev目录下是否有ttyUSB0这个设备,若是没有,则可能是你的USB device没打开,也可能是你打开了,但没选择连接设备。若有设备,注意他的权限,可以修改其权限   sudo chmod 777 /dev/ttyUSB0







你可能感兴趣的:(linux下在Qt中使用串口通信)