0

我能够连接到我的串行端口,但我需要一直从中读取数据。
它工作了大约 39 分钟,但在它停在 line 之后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()总是true在 while 循环中发送。

flush程序在30 分钟后停止!

4

1 回答 1

0

如果serial.isOpen() && serial.isWritable()在 while 循环中为真,但您无法访问它可能来自您计算机上的首选项。

在 OSX 上:系统首选项 -> 网络 -> 选择串行 -> 高级 -> PPP:
能够:要求每 10 分钟保持连接,
禁用:在会话
关闭时断开连接,禁用:在更改用户时断开连接

于 2014-10-21T11:40:01.957 回答