当前位置: 代码迷 >> QT开发 >> 用qserialport类开展串口通信,读不到写入串口的数据
  详细解决方案

用qserialport类开展串口通信,读不到写入串口的数据

热度:10   发布时间:2016-04-25 03:35:16.0
用qserialport类进行串口通信,读不到写入串口的数据
能够正确打开串口,设置参数,也能够写入,在writebuffer里能够查看到,但是读不了写入的数据。
程序如下

/***************************************************************************************************
 * \brief ouvrir_port_com()
 * ouvrir le port de com chosir, faire le setting de ce port
 * \param
 **************************************************************************************************/
void Widget::ouvrir_port_com()
{
    myCom= new QSerialPort(this);
    myCom->setPortName("COM1");

    bool ouvert=myCom ->open(QIODevice::ReadWrite);
    if(ouvert)
    {
        myCom->setBaudRate(QSerialPort::Baud57600);
        myCom->setDataBits( QSerialPort::Data8);
        myCom->setParity(QSerialPort::NoParity);
        myCom->setStopBits(QSerialPort::OneStop);
        myCom->setFlowControl(QSerialPort::NoFlowControl);
        myCom->setRequestToSend(true);
        myCom->setDataTerminalReady(true);
    }else
    {
        QMessageBox::critical(this, tr("Echec de l'ouverture"), tr("Ce port de com ne peut pas être ouvrire ") + port_com + tr("\n Ce port de com n'est pas dipnible"), QMessageBox::Ok);
        return;
    }

    connect(myCom,SIGNAL(readyRead()),this,SLOT(readCom()));

    send_command();
}
void Widget::send_command()
{
    QString x="OK?";
    myCom->write(x.toLatin1());
}

void Widget::readCom()
{
    QByteArray temp = myCom->readAll();

    ui->textBrowser->insertPlainText(temp);
}



------解决方案--------------------
是不是通信线的问题,那就找找是不是硬件故障
------解决方案--------------------
把断点设到发送去,单步跟踪下,看看有没有发出去,另外串口有没有打开失败,这些都要检查下,如果这些都确认无误,就找硬件原因了,

重点看通信线故障,
------解决方案--------------------
你这需要把串口上的2、3脚连起来,也就是发送和接收脚连起来
  相关解决方案