void IMODBUSResponseMessage.Initialize(byte[] frame, bool isExtendedUnitId, IMODBUSRequestMessage requestMessage) { base.Initialize(frame, isExtendedUnitId); var dataLength = isExtendedUnitId ? frame[3] : frame[2]; var readStringRequest = requestMessage as ReadStringRequest; if (readStringRequest != null) { data = new byte[dataLength + 1]; if (isExtendedUnitId) { Buffer.BlockCopy(frame, 3, data, 0, dataLength + 1); } else { Buffer.BlockCopy(frame, 2, data, 0, dataLength + 1); } this.StringRegister = readStringRequest.StringRegister; var stringData = new byte[StringRegister.Length]; Buffer.BlockCopy(data, 1, stringData, 0, dataLength); this.StringRegister.Data = stringData; } else { throw new FormatException("Unable to create response message (request message null)."); } }
public Action BuildSearchLogix(RefID query) { Slot logix = mainSlot.AddSlot("Search logix"); Network.GET_String getString = logix.AttachComponent <Network.GET_String>(); StringRegister url = logix.AttachComponent <StringRegister>(); url.Value.Value = "https://better-lightning-crate.glitch.me/"; FormatString formatString = logix.AttachComponent <FormatString>(); ValueField <string> type = logix.AttachComponent <ValueField <string> >(); ValueField <string> format = logix.AttachComponent <ValueField <string> >(); format.Value.Value = "{0}/{1}/{2}"; formatString.Format.Value = format.Value.ReferenceID; formatString.Parameters.Add(); formatString.Parameters.Add(); formatString.Parameters.Add(); formatString.Parameters[0].Value = url.Value.ReferenceID; formatString.Parameters[1].Value = type.Value.ReferenceID; formatString.Parameters[2].Value = query; getString.URL.Value = formatString.Str.ReferenceID; Actions.WriteValueNode <string> writeResponse = logix.AttachComponent <Actions.WriteValueNode <string> >(); StringRegister response = logix.AttachComponent <StringRegister>(); searchResponse = response; writeResponse.Value.Value = getString.Content.ReferenceID; writeResponse.Target.Value = response.Value.ReferenceID; getString.OnResponse.Target = writeResponse.Write; //writeResponse.Target.OwnerNode.RemoveAllLogixBoxes(); //LogixHelper.MoveUnder(writeResponse.Target.OwnerNode, logix, true); //getString.Request(); return(getString.Request); }
public void ReadStringRegister(ushort?unitId, bool?isExtendedUnitId, ref StringRegister stringRegister) { var request = new ReadStringRequest(unitId.HasValue ? unitId.Value : UnitId, stringRegister, isExtendedUnitId.HasValue ? isExtendedUnitId.Value : UseExtendedAddressing); var response = Transport.UnicastMessage <ReadStringResponse>(request); stringRegister = response.StringRegister; }
public static StringRegister ReadString(SqlString deviceName, StringRegister stringRegister) { //var deviceNameValue = deviceName.Value; // var stringRegisterValue = new Device.MODBUS.Data.StringRegister(new Device.MODBUS.Data.MODBUSAddress(Convert.ToUInt16(stringRegister.Address.RelativeAddress.Value), stringRegister.Address.IsZeroBased.Value), stringRegister.Length.Value); //(DeviceSQL.Watchdog.Worker.Devices.First(device => (device.Name == deviceNameValue)) as Device.MODBUS.MODBUSMaster).ReadStringRegister(null, null, ref stringRegisterValue); //stringRegister.Data = stringRegisterValue.Data; return(StringRegister.Null); // stringRegister; }
public ReadStringRequest(ushort unitId, StringRegister stringRegister, bool isExtendedUnitId) : base(unitId, Device.ReadHoldingRegisters) { this.StringRegister = stringRegister; this.IsExtendedUnitId = isExtendedUnitId; }