Python で書かれたアプリケーションを C++ で書き直そうとしています。
シリアル ポートを開いて xml を読み取るだけです。Pythonでは、pyserialを使用してxmlを読み取り、beautifulsoupを使用して情報を取得していました。出来上がりはこんな感じでした。
<file><property>xx32</property></file>
今、qextserialport を使用してシリアル ポートから読み取っています。取得した xml は次のようなものです。
<
fil
e>
<prope
rty>xx32
</prop
erty>
</
file>
私の問題は、このようなxmlを解析できないことです。エラーが発生します。
編集:
Qextserialport は、固定されていない一連のバイトでシリアル ポートからデータを読み取ります。では、xml を 1 つの文字列に連結するにはどうすればよいでしょうか。シリアル ポートから 4 ~ 5 秒ごとに xml 文字列を取得します。
ここに私のコードがあります
this->port = new QextSerialPort(com_port,QextSerialPort::EventDriven);
port->setBaudRate(BAUD57600);
port->setFlowControl(FLOW_OFF);
port->setParity(PAR_NONE);
port->setDataBits(DATA_8);
port->setStopBits(STOP_1);
port->setTimeout(0);
if (port->open(QIODevice::ReadOnly) == true)
{
//qDebug()<< "hello";
connect(port,SIGNAL(readyRead()),this,SLOT(onReadyRead()));
}
そして、シリアルポートから実際に読み取る関数
void CurrentCost::onReadyRead()
{
QByteArray bytes;
bytes = port->readAll();
//qDebug() << "bytes read:" << bytes.size();
//qDebug() << "bytes:" << bytes;
ui->textBrowser->append(bytes);
}