diff --git a/mymodbus.cpp b/mymodbus.cpp index bd53de6..7cd4289 100644 --- a/mymodbus.cpp +++ b/mymodbus.cpp @@ -202,7 +202,7 @@ QVector MyModbus::analReadCoil() return coil; } - quint8 byteCount = static_cast(receive_[2]); // 数据字节数 + quint8 byteCount = static_cast(receive_.at(2)); // 数据字节数 // 解析每个数据字节 for (int byteIndex = 0; byteIndex < byteCount; byteIndex++) @@ -272,7 +272,8 @@ quint16 MyModbus::calculateCrc(const QByteArray &data) { // 检查最低位 crc = (crc >> 1) ^ polynomial; // 右移并且异或多项式 - } else + } + else { crc >>= 1; // 仅右移 } diff --git a/serialcommunicator.cpp b/serialcommunicator.cpp index a96ed10..8ec40ec 100644 --- a/serialcommunicator.cpp +++ b/serialcommunicator.cpp @@ -154,9 +154,9 @@ void SerialCommunicator::close() resendTimer_->stop(); stationCheck_->stop(); checkTimeOut_->stop(); + emit stationConnect(false); // 清除可能存在的待处理数据 - emit stationConnect(false); serialPort_->clear(); // 关闭串口