diff --git a/Modbus.Net/CrossLampControl.WebApi/Controllers/CrossLampController.cs b/Modbus.Net/CrossLampControl.WebApi/Controllers/CrossLampController.cs index 21921e9..532a043 100644 --- a/Modbus.Net/CrossLampControl.WebApi/Controllers/CrossLampController.cs +++ b/Modbus.Net/CrossLampControl.WebApi/Controllers/CrossLampController.cs @@ -12,12 +12,16 @@ namespace CrossLampControl.WebApi.Controllers { public class CrossLampController : ApiController { - ModbusUtility _utility = new ModbusUtility("COM6", (int)ModbusType.Rtu); + ModbusUtility _utility = new ModbusUtility((int)ModbusType.Rtu, "COM3"); [HttpGet] public Lamp GetLamp() { Lamp light = new Lamp(); - bool[] lamps = _utility.GetCoils(2, "0", 6); + byte[] lampsbyte = _utility.GetDatas(2, (byte)ModbusProtocalReadDataFunctionCode.ReadCoilStatus, "0", 6); + bool[] lamps = + ValueHelper.Instance.ObjectArrayToDestinationArray( + ValueHelper.Instance.ByteArrayToObjectArray(lampsbyte, + new KeyValuePair(typeof (bool), 6))); if (lamps[0]) { light.MainLamp = LightLamp.Green.ToString(); diff --git a/Modbus.Net/CrossLampControl.WebApi/信号灯.mwp b/Modbus.Net/CrossLampControl.WebApi/信号灯.mwp index 599bcfd..bf343d6 100644 Binary files a/Modbus.Net/CrossLampControl.WebApi/信号灯.mwp and b/Modbus.Net/CrossLampControl.WebApi/信号灯.mwp differ diff --git a/Modbus.Net/ModBus.Net/ValueHelper.cs b/Modbus.Net/ModBus.Net/ValueHelper.cs index 02b155d..37cf761 100644 --- a/Modbus.Net/ModBus.Net/ValueHelper.cs +++ b/Modbus.Net/ModBus.Net/ValueHelper.cs @@ -494,11 +494,14 @@ namespace ModBus.Net } case "System.Boolean": { + bool[] value = Instance.GetBits(contents, ref count); - for (int j = 0; j < value.Length; j++) + int k = translateUnit.Value - i < 8 ? translateUnit.Value - i : 8; + for (int j = 0; j < k; j++) { translation.Add(value[j]); } + i += 7; break; } default: