簡體   English   中英

Qt串口:讀寫數據

[英]Qt serial port: write and read data

我能夠連接到我的串行端口,但我需要一直從中讀取數據。
它工作了大約 39 分鍾,但在它停在serial.flush()serial.flush()
當我停止 Qt 並再次啟動它時,它也會在serial.flush()處停止。 我需要重新啟動調制解調器才能讓它再次工作...

我不確定我是否正確執行了此操作...

// Open Serial connexion
QSerialPort serial;
serial.setPortName("usbserial-26214A");
serial.open(QIODevice::ReadWrite);
serial.setBaudRate(QSerialPort::Baud115200);
serial.setDataBits(QSerialPort::Data8);
serial.setParity(QSerialPort::NoParity);
serial.setStopBits(QSerialPort::OneStop);
serial.setFlowControl(QSerialPort::HardwareControl);

if (serial.isOpen() && serial.isWritable())
{
qDebug() << "Serial is open";

QByteArray output;
QByteArray input;

  while(true)
  {
  output = "AT+CPMS=\"SM\"\r";
  serial.write(output);
  serial.flush();
  serial.waitForBytesWritten(1000);
  serial.waitForReadyRead(1000);
  input = serial.readAll();
  }
}

//編輯

如果刪除flush它可以工作,但代碼運行得非常快。 它不等待WaitFor...
在第二次循環之后,他沒有時間讀取數據。

serial.isOpen() && serial.isWritable()總是在 while 循環中發送true

程序在 30 分鍾后在flush停止!

如果serial.isOpen() && serial.isWritable()在 while 循環中為真,但您無法訪問它可能來自您計算機上的首選項。

在 OSX 上:系統首選項 -> 網絡 -> 選擇串行 -> 高級 -> PPP:
能夠:要求每 10 分鍾保持聯系,
禁用:在會話結束時斷開連接,
禁用:更改用戶時斷開連接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM