float a = 1.234;
/*1 拆分*/
uint16_t *pa1 = (uint16_t *)(&a); //获得a前16位地址
uint16_t *pa2 = pa1+1; //获得a后16位地址
qDebug() << "a" << *pa1 << " " << *pa2;
float b = 0.0;
quint16 *pb1 = (quint16 *)(&b);
quint16 *pb2 = pb1+1;
/*2 组合*/
*pb1 = 44728; //将a前16位地址的内容(2进制码)复制给pb1指向的内存空间。
*pb2 = 17336; //将b前16位地址的内容(2进制码)复制给pb2指向的内存空间。
printf("组合结果:b = %f\n",b); //组合结果:b = 1.234
QModbusServer从站
modbusDevice = new QModbusTcpServer(this);
modbusDevice->setConnectionParameter(QModbusDevice::NetworkPortParameter, 502);
modbusDevice->setConnectionParameter(QModbusDevice::NetworkAddressParameter, "127.0.0.1");
modbusDevice->setServerAddress(1);
bool isc = modbusDevice->connectDevice();
qDebug() << "连接" << isc;
QModbusDataUnitMap reg;
reg.insert(QModbusDataUnit::Coils, { QModbusDataUnit::Coils, 0, 10 });
reg.insert(QModbusDataUnit::DiscreteInputs, { QModbusDataUnit::DiscreteInputs, 0, 10 });
reg.insert(QModbusDataUnit::InputRegisters, { QModbusDataUnit::InputRegisters, 0, 10 });
reg.insert(QModbusDataUnit::HoldingRegisters, { QModbusDataUnit::HoldingRegisters, 0, 10 });
modbusDevice->setMap(reg);
bool ok;
// modbusDevice->setData(QModbusDataUnit::HoldingRegisters, 1, "DDaa".toUShort(&ok, 16));