private IList <IWorkItem> GetWorkItems(IEnumerable <IModbusTag> Tags) { IList <IModbusTag> TagList = Tags.ToList(); IEnumerable <CoilsWorkItem> Coils = CoilsWorkItem.GetWorkItems(TagList.OfType <IModbusCoilsTag>().ToList(), MaxQuantityOfCoils); IEnumerable <HoldingRegistersWorkItem> HoldingRegisters = HoldingRegistersWorkItem.GetWorkItems(TagList.OfType <IModbusHoldingRegistersTag>().ToList(), MaxQuantityOfRegisters); List <IWorkItem> WorkItems = new List <IWorkItem>(); WorkItems.AddRange(Coils.Cast <IWorkItem>()); WorkItems.AddRange(HoldingRegisters.Cast <IWorkItem>()); return(WorkItems); }
private void Read(CoilsWorkItem workItem) { UInt16 address = workItem.Address.Index; UInt16 length = workItem.QuantityOfCoils; Boolean[] reply; lock (DriverLock) { reply = Driver.ReadCoils(1, address, length); } Byte[] buffer = new Byte[reply.Length * sizeof(Boolean)]; Buffer.BlockCopy(reply, 0, buffer, 0, buffer.Length); workItem.Buffer = buffer; }