feat: add 转换数据
This commit is contained in:
@@ -284,20 +284,22 @@ public partial class MainViewModel : ObservableObject
|
|||||||
{
|
{
|
||||||
_logger.LogInfo("正在从设备读取系统参数...");
|
_logger.LogInfo("正在从设备读取系统参数...");
|
||||||
|
|
||||||
// 读取时间参数(D404-D424,共11个寄存器)
|
// 读取时间参数(D404-D424,共22个寄存器,11个浮点数)
|
||||||
var timeParams = await _modbusService.ReadHoldingRegistersAsync(404, 11);
|
// 每个浮点数占用2个寄存器
|
||||||
|
var timeParams = await _modbusService.ReadHoldingRegistersAsync(404, 22);
|
||||||
|
|
||||||
FirstSprayWaterTime = timeParams[0]; // D404 首次喷水时间
|
// 使用 ConvertRegistersToFloat 转换每个参数(CDAB字节序)
|
||||||
AfterShampoo1SprayTime = timeParams[1]; // D406 沐浴1后喷水时间
|
FirstSprayWaterTime = (int)_modbusService.ConvertRegistersToFloat(timeParams, 0, FloatByteOrder.CDAB); // D404-D405
|
||||||
AfterShampoo2SprayTime = timeParams[2]; // D408 沐浴2后喷水时间
|
AfterShampoo1SprayTime = (int)_modbusService.ConvertRegistersToFloat(timeParams, 2, FloatByteOrder.CDAB); // D406-D407
|
||||||
AfterShampoo3SprayTime = timeParams[3]; // D410 沐浴3后喷水时间
|
AfterShampoo2SprayTime = (int)_modbusService.ConvertRegistersToFloat(timeParams, 4, FloatByteOrder.CDAB); // D408-D409
|
||||||
// D412 清洗笼子喷水(暂不使用)
|
AfterShampoo3SprayTime = (int)_modbusService.ConvertRegistersToFloat(timeParams, 6, FloatByteOrder.CDAB); // D410-D411
|
||||||
SprayShampoo1Time = timeParams[5]; // D414 喷沐浴露1时间
|
// D412-D413 清洗笼子喷水(保留,索引8)
|
||||||
SprayShampoo2Time = timeParams[6]; // D416 喷沐浴露2时间
|
SprayShampoo1Time = (int)_modbusService.ConvertRegistersToFloat(timeParams, 10, FloatByteOrder.CDAB); // D414-D415
|
||||||
SprayShampoo3Time = timeParams[7]; // D418 喷沐浴露3时间
|
SprayShampoo2Time = (int)_modbusService.ConvertRegistersToFloat(timeParams, 12, FloatByteOrder.CDAB); // D416-D417
|
||||||
HotAirTime = timeParams[8]; // D420 吹热风时间
|
SprayShampoo3Time = (int)_modbusService.ConvertRegistersToFloat(timeParams, 14, FloatByteOrder.CDAB); // D418-D419
|
||||||
ColdAirTime = timeParams[9]; // D422 吹冷风时间
|
HotAirTime = (int)_modbusService.ConvertRegistersToFloat(timeParams, 16, FloatByteOrder.CDAB); // D420-D421
|
||||||
UvSterilizationTime = timeParams[10]; // D424 紫外线杀菌时间
|
ColdAirTime = (int)_modbusService.ConvertRegistersToFloat(timeParams, 18, FloatByteOrder.CDAB); // D422-D423
|
||||||
|
UvSterilizationTime = (int)_modbusService.ConvertRegistersToFloat(timeParams, 20, FloatByteOrder.CDAB); // D424-D425
|
||||||
|
|
||||||
_logger.LogInfo($"时间参数读取成功 - 首次喷水:{FirstSprayWaterTime}min, 沐浴1后:{AfterShampoo1SprayTime}min, " +
|
_logger.LogInfo($"时间参数读取成功 - 首次喷水:{FirstSprayWaterTime}min, 沐浴1后:{AfterShampoo1SprayTime}min, " +
|
||||||
$"沐浴2后:{AfterShampoo2SprayTime}min, 沐浴3后:{AfterShampoo3SprayTime}min, " +
|
$"沐浴2后:{AfterShampoo2SprayTime}min, 沐浴3后:{AfterShampoo3SprayTime}min, " +
|
||||||
@@ -488,22 +490,25 @@ public partial class MainViewModel : ObservableObject
|
|||||||
{
|
{
|
||||||
_logger.LogInfo("正在将参数写入设备...");
|
_logger.LogInfo("正在将参数写入设备...");
|
||||||
|
|
||||||
// 准备时间参数数据(D404-D424,共11个寄存器)
|
// 准备时间参数数据(D404-D425,共22个寄存器,11个浮点数)
|
||||||
ushort[] timeParams = new ushort[11];
|
// 每个浮点数占用2个寄存器
|
||||||
timeParams[0] = (ushort)FirstSprayWaterTime; // D404 首次喷水时间
|
List<ushort> allRegisters = new List<ushort>();
|
||||||
timeParams[1] = (ushort)AfterShampoo1SprayTime; // D406 沐浴1后喷水时间
|
|
||||||
timeParams[2] = (ushort)AfterShampoo2SprayTime; // D408 沐浴2后喷水时间
|
|
||||||
timeParams[3] = (ushort)AfterShampoo3SprayTime; // D410 沐浴3后喷水时间
|
|
||||||
timeParams[4] = 0; // D412 清洗笼子喷水(保留)
|
|
||||||
timeParams[5] = (ushort)SprayShampoo1Time; // D414 喷沐浴露1时间
|
|
||||||
timeParams[6] = (ushort)SprayShampoo2Time; // D416 喷沐浴露2时间
|
|
||||||
timeParams[7] = (ushort)SprayShampoo3Time; // D418 喷沐浴露3时间
|
|
||||||
timeParams[8] = (ushort)HotAirTime; // D420 吹热风时间
|
|
||||||
timeParams[9] = (ushort)ColdAirTime; // D422 吹冷风时间
|
|
||||||
timeParams[10] = (ushort)UvSterilizationTime; // D424 紫外线杀菌时间
|
|
||||||
|
|
||||||
// 写入设备
|
// 使用 ConvertFloatToRegisters 转换每个参数(CDAB字节序)
|
||||||
await _modbusService.WriteMultipleRegistersAsync(404, timeParams);
|
allRegisters.AddRange(_modbusService.ConvertFloatToRegisters(FirstSprayWaterTime, FloatByteOrder.CDAB)); // D404-D405
|
||||||
|
allRegisters.AddRange(_modbusService.ConvertFloatToRegisters(AfterShampoo1SprayTime, FloatByteOrder.CDAB)); // D406-D407
|
||||||
|
allRegisters.AddRange(_modbusService.ConvertFloatToRegisters(AfterShampoo2SprayTime, FloatByteOrder.CDAB)); // D408-D409
|
||||||
|
allRegisters.AddRange(_modbusService.ConvertFloatToRegisters(AfterShampoo3SprayTime, FloatByteOrder.CDAB)); // D410-D411
|
||||||
|
allRegisters.AddRange(_modbusService.ConvertFloatToRegisters(0, FloatByteOrder.CDAB)); // D412-D413 清洗笼子喷水(保留)
|
||||||
|
allRegisters.AddRange(_modbusService.ConvertFloatToRegisters(SprayShampoo1Time, FloatByteOrder.CDAB)); // D414-D415
|
||||||
|
allRegisters.AddRange(_modbusService.ConvertFloatToRegisters(SprayShampoo2Time, FloatByteOrder.CDAB)); // D416-D417
|
||||||
|
allRegisters.AddRange(_modbusService.ConvertFloatToRegisters(SprayShampoo3Time, FloatByteOrder.CDAB)); // D418-D419
|
||||||
|
allRegisters.AddRange(_modbusService.ConvertFloatToRegisters(HotAirTime, FloatByteOrder.CDAB)); // D420-D421
|
||||||
|
allRegisters.AddRange(_modbusService.ConvertFloatToRegisters(ColdAirTime, FloatByteOrder.CDAB)); // D422-D423
|
||||||
|
allRegisters.AddRange(_modbusService.ConvertFloatToRegisters(UvSterilizationTime, FloatByteOrder.CDAB)); // D424-D425
|
||||||
|
|
||||||
|
// 写入设备(22个寄存器)
|
||||||
|
await _modbusService.WriteMultipleRegistersAsync(404, allRegisters.ToArray());
|
||||||
|
|
||||||
_logger.LogInfo("参数已成功写入设备");
|
_logger.LogInfo("参数已成功写入设备");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user