Qt последовательный порт связи из входного файла;странное поведение - PullRequest
0 голосов
/ 05 декабря 2018

Я работаю над программированием устройства с использованием 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];это работает правильно.

Что здесь происходит?Может кто-нибудь помочь, пожалуйста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...