Qt SerialBus 的变化

Qt 6 is a result of the conscious effort to make the framework more efficient and easy to use. We try to maintain binary and source compatibility for all the public APIs in each release. But some changes were inevitable in an effort to make Qt a better framework. In this topic, we summarize those changes in Qt SerialBus module and provide guidance to handle them.

Changes overview

The Qt SerialBus module is generally speaking source compatible with the Qt 5 version and users of the library should be able to continue with no or minor changes to their project.

构建系统

As with Qt 6 in general, the Qt SerialBus module has CMake support in addition to qmake.

API 变化

Qt CAN bus

Removal of QCanBusFactoryV2

In Qt 6 the QCanBusFactoryV2 has been removed and is no longer part of the public API. Instead QCanBusFactory has gained the additional method QCanBusFactory::availableDevices that needs to be implemented by sub-classes of QCanBusFactory .

Changes to QCanBusDevice

QCanBusDevice got the following changes:

  • setConfigurationParameter() and configurationParameter() now use the distinct type ConfigurationKey instead int.
  • The functions resetController(), hasBusStatus() and busStatus() are now virtual functions. They have been internal callbacks in Qt 5 due to binary compatibility.
  • Custom plugins using one of the private API function QCanBusDevice::createDeviceInfo() need small adoptions as these functions now have the plugin name as first parameter and slighly adopted parameter lists.

Changes to QCanBusFrame

QCanBusFrame now uses the distinct type FrameId , which is a typedef to quint32, so existing code should still work. Anyway, it is recommended to use FrameId when upgrading.

Qt Modbus

Renaming of QModbusRtuSerialMaster and QModbusRtuSerialSlave

Following the recommendation of the Modbus organization the class QModbusRtuSerialMaster has been renamed to QModbusRtuSerialClient and the class QModbusRtuSerialSlave has been renamed to QModbusRtuSerialServer . It is advised to use the new class names in new or ported code to adhere to the Modbus naming scheme.