我正在使用类readAll()
方法QSerialPort
从虚拟 COM 端口读取数据。
我从我的硬件板上得到两个响应。
1.确认("10")
字符串
2.查询数据(";1395994881;1.0.0")
字符串数据
作为QByteArray : 10\x00;1395994881;1.0.0
我想\x00
从我的QByteArray
.
每当我试图对我的 QByteArray 执行任何操作时,我都会执行第一部分,QByteArray
即 ``10 。剩下的部分被跳过了;1395994881;1.0.0
。
如果有任何方法可以\x00
从 中删除此字符,请指导我QByteArray
。
代码
QByteArray data = serial.readAll(); //("10\x00;1395994881;1.0.0");
试用:
QList<QByteArray> list = data.split('\x00'); qDebug()<<list; // 10
试用:
qDebug()<<data.remove(2, 1); //10
试用:
qDebug()<<QString(data); //10
试用:
qDebug()<<data.replace('\x00', ""); //10
试用:
Used Loop to go byte by byte, but same result
无论如何,我希望将结果字符串作为单个字符串或拆分。但是需要完整的字符串,例如10;1395994881;1.0.0
or10
和;1395994881;1.0.0
。
我还提到了以下Stack Overflow
问题。
1.
2.
3.QByteArray to QString
Remove null from string:Java
Code Project
编辑
//Function to read data from serial port
void ComPortThread::readData()
{
if(m_isComPortOpen) {
//Receive data from serial port
m_serial->waitForReadyRead(500); //Wait 0.5 sec
QByteArray data = m_serial->readAll();
if(!data.isEmpty()) {
qDebug()<<"Data: "<<data; //10\x00;1395994881;1.0.0
//TODO: Separate out two responce like "10" and ";1395994881;1.0.0"
//Problem : Unable to split data into two parts.
emit readyToRead(data);
}
}
}
请帮助我。