我正在使用Qt C ++ 5.3.2对设备进行编程。 有一种奇怪的行为,我无法理解。
QByteArray file_data;
if (!file.atEnd()) {
file_data = file.readAll();
}
int i = 0, j = 0;
int index = 0;
QByteArray DataBuf;
j = 76;
while (true)
{
DataBuf[0] = (j + 3);
DataBuf[1] = 0x24;
DataBuf[2] = 0x24;
for (i = 0; i < j; ++i)
{
DataBuf[i + 3] = file_data[i + index];
DataBuf[1] = DataBuf[1] + file_data[i + index]; //Doubt here
}
response.clear();
serialPort->write(DataBuf, DataBuf[0]);
for (int i=0;i<6;i++) {
if (serialPort->readBufferSize()>=2) {
break;
}
wait(1); //user defined function, is same as msleep(5)
}
qa = response.toLocal8Bit();
if (qa.toHex() != "00cc") return;
index += 76;
if (j == len) break;
if (len > 76) len -= 76;
if (len <= 76) j = len;
}
这是我正在处理的代码部分。提到“怀疑此处”的行不能按预期方式工作。 当我运行该程序时,Databuf [1]上的值与总计76个字节的数据之和不匹配。 用Databuf [2]写入Databuf [78]的数据是完全正确的,但加法不是正确的。 但是,当我从DataBuf [1] = DataBuf [1] + file_data [i + index]更改行时;到DataBuf [1] = DataBuf [1] + DataBuf [i + 3];它正常工作。
这是怎么回事?谁能帮忙。