在電腦上加了一對虛擬串口 COM8和COM9, 在串口助手上打開COM8發送資料,COM9能接受資料并顯示出來。
自己在QT上用QSerialport寫了個串口助手,打開COM9想讀取串口助手上COM8發送的資料,但是讀取不出來。
是我對串口理解的有問題嗎? 還是我代碼有問題?
求大神解答呀!!
代碼里面串口設定都是對的,在open后設定和在open前設定都嘗試過了,依然不行,
而且一次觸發readyRead函式無法轉進槽函式,多次觸發readyRead函式讀的資料是空的。
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(&mycom, &QSerialPort::readyRead, this,&MainWindow::readCOM);
}
void MainWindow::readCOM()
{
QByteArray buff = mycom.readAll();
QString receive_data = QString(buff);
ui->textBrowser_1->insertPlainText(receive_data);
}
uj5u.com熱心網友回復:
樓主,串口的波特率、校驗位、停止位是怎么設定的?uj5u.com熱心網友回復:
這些設定都是對的,剛剛試了下不用readyread信號觸發槽函式是可以讀取的,但是這樣只能讀取一次:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->pushButton_1, SIGNAL(clicked()), this, SLOT(readCOM()));
// connect(&mycom, &QSerialPort::readyRead, this, &MainWindow::readCOM);
}
改成readyread讀取就無法觸發:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// connect(ui->pushButton_1, SIGNAL(clicked()), this, SLOT(readCOM()));
connect(&mycom, &QSerialPort::readyRead, this, &MainWindow::readCOM);
}
void MainWindow::readCOM()
{
while(mycom.waitForReadyRead(10)){
qDebug()<<"enter into func"<<endl;
QString receive_data = QString(mycom.readAll());
ui->textBrowser_1->insertPlainText(receive_data);
qDebug() << receive_data;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/78644.html
標籤:單片機/工控
