【发布时间】:2010-06-29 15:09:52
【问题描述】:
我正在尝试使用 QextSerialPort 与 Arduino Diecimila 板进行串行连接。每次我调用 port->open() 时,我的应用程序都会挂起。我认为发生这种情况的原因是每次与它建立串行连接时,Arduino 板都会自行重置。有一种方法可以不让here 描述的板复位,但我不知道如何让 QextSerialPort 做到这一点。我只能在端口打开后将 DTR 设置为 false,这并没有多大帮助,因为此时主板已经自行重置。
连接代码如下所示:
port = new QextSerialPort("/dev/tty.usbserial-A4001uwj");
port->open(QIODevice::ReadWrite);
port->setBaudRate(BAUD9600);
port->setFlowControl(FLOW_OFF);
port->setParity(PAR_NONE);
port->setDataBits(DATA_8);
port->setStopBits(STOP_1);
port->setDtr(false);
port->setRts(false);
关于如何完成这项工作的任何想法。如果有人知道另一个库可以做到这一点,我不一定需要使用 QextSerialPort。
我是 C++ 和 Qt 的新手。
更新: 我注意到,如果我在运行上述代码之前运行一个连接到同一端口的 python 脚本(使用 pySerial),一切正常。
【问题讨论】:
-
有没有试过在open()之前做设置?
-
是的,我有。对于某些设置,如果它们被设置为未打开的端口(如 setDtr()),它们将不做任何事情。它尝试了两种方式,但没有任何帮助。
-
听起来像是 Qextserial 的错误/改进,应该允许您在 ctor 打开端口之前设置所有参数
-
@Matt:考虑切换到 QtSerialPort?
标签: c++ qt arduino qextserialport