using System.Numerics; using EGFramework; public class RequestColorStartScan : ModbusRTU_WriteSingleHoldingRegister { public RequestColorStartScan() { this.DeviceAddress = 0x01; this.RegisterAddress = 0x3007; this.Value = 0x02; } } public class RequestColorStopScan : ModbusRTU_WriteSingleHoldingRegister { public RequestColorStopScan() { this.DeviceAddress = 0x01; this.RegisterAddress = 0x3007; this.Value = 0x01; } } public class RequestColorSingleRead : ModbusRTU_ReadHoldingRegisters { public RequestColorSingleRead() { this.DeviceAddress = 0x01; this.RegisterAddress = 0x00; this.ReadCount = 3; } } public class ResponseColorSensor : ModbusRTU_Response { public Vector3 ColorRGB { set; get; } public Vector3 ColorHSV { set; get; } public override bool TrySetData(string protocolData, byte[] protocolBytes) { bool result = base.TrySetData(protocolData, protocolBytes); if (!result) { return false; } if (this.HoldingRegister != null && this.HoldingRegister.Length >= 3) { ColorRGB = new Vector3(HoldingRegister[0] / 1000f, HoldingRegister[1] / 1000f, HoldingRegister[2] / 1000f); ColorHSV = ColorRGB.RGBToHSV(); } else { return false; } return result; } }