Qt串口:写入和读取数据

时间:2014-10-20 06:41:06

标签: c++ qt serial-port qtcore qtserialport

我可以连接到我的串口,但我需要一直从中读取数据。
它工作了大约39分钟,但在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

1 个答案:

答案 0 :(得分:0)

如果while循环中serial.isOpen() && serial.isWritable()为真,但您无法访问它,则可能来自您计算机上的偏好设置。

在OSX上:系统偏好设置 - &gt;网络 - &gt;选择序列 - &gt;高级 - &gt; PPP:
能够:要求每10分钟保持联系,
禁用:在会话结束时断开连接,
禁用:更改用户时断开连接