来自输入文件的Qt串行端口通讯;怪异的行为

时间:2018-12-05 12:54:56

标签: c++ qt serial-port

我正在使用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];它正常工作。

这是怎么回事?谁能帮忙。

0 个答案:

没有答案