C++ (Qt)bool QSerialPortPrivate::_q_startAsyncWrite(){ /// << Если буфер передачи writeBuffer пуст, или если предыдущая операция записи еще не завершилась то ничо не делаем. if (writeBuffer.isEmpty() || writeStarted) return true; /// << Копируем все содержимое буфера передачи во временный массив writeChunkBuffer /// << и именно его данные передаем в WriteFile, т.к. данные из writeBuffer передавать низя!!! writeChunkBuffer = writeBuffer.read(); ::ZeroMemory(&writeCompletionOverlapped, sizeof(writeCompletionOverlapped)); if (!::WriteFile(handle, writeChunkBuffer.constData(), writeChunkBuffer.size(), Q_NULLPTR, &writeCompletionOverlapped)) { QSerialPortErrorInfo error = getSystemError(); if (error.errorCode != QSerialPort::NoError) { if (error.errorCode != QSerialPort::ResourceError) error.errorCode = QSerialPort::WriteError; /// << Вот тут именно твоя ошибка и возникает, т.к. больше по коду негде!!! setError(error); return false; } } writeStarted = true; return true;}
C++ (Qt)QSerialPortErrorInfo QSerialPortPrivate::getSystemError(int systemErrorCode) const{ if (systemErrorCode == -1) systemErrorCode = ::GetLastError(); qDebug() << "System error code:" << systemErrorCode ; ...}