Я пытаюсь переписать в c ++ приложение, написанное на python.
Все, что он делает, это открывает последовательный порт и читает некоторые XML. В Python я использовал pyserial для чтения XML и BeautifulSoup для получения информации. Вывод был такой.
<file><property>xx32</property></file>
Теперь я использую qextserialport для чтения с последовательного порта, и xml, который я получаю, выглядит примерно так.
<
fil
e>
<prope
rty>xx32
</prop
erty>
</
file>
Моя проблема в том, что я не могу разобрать xml вот так. Я получаю ошибки.
EDIT:
Qextserialport считывает данные с последовательного порта в виде набора байтов, которые не являются фиксированными.
Итак, как мне объединить мой XML в одну строку? Я получаю строку xml каждые 4-5 секунд из последовательного порта.
вот мой код
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);
}