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が初めてです。
更新: 上記のコードを実行する前に (pySerial を使用して) 同じポートに接続する python スクリプトを実行すると、すべて正常に動作することに気付きました。