Ejemplo n.º 1
0
        public static IEnumerable <HoldingRegistersWorkItem> GetWorkItems(IEnumerable <IModbusHoldingRegistersTag> Tags, UInt16 MaxQuantityOfRegisters = 125)
        {
            IList <IModbusHoldingRegistersTag> TagList = Tags.Where(tag => tag.Address.Table == Table.HoldingRegisters).OrderBy(tag => tag.Address.Index).ToList();

            List <HoldingRegistersWorkItem> WorkItems = new List <HoldingRegistersWorkItem>();

            HoldingRegistersWorkItem WorkItem = null;

            foreach (IModbusHoldingRegistersTag tag in TagList)
            {
                if (WorkItem == null)
                {
                    WorkItem = new HoldingRegistersWorkItem(MaxQuantityOfRegisters);
                    WorkItems.Add(WorkItem);
                }
                if (!(WorkItem.Add(tag)))
                {
                    WorkItem = new HoldingRegistersWorkItem(MaxQuantityOfRegisters);
                    WorkItem.Add(tag);
                    WorkItems.Add(WorkItem);
                }
            }
            return(WorkItems);
        }
Ejemplo n.º 2
0
        private void Read(HoldingRegistersWorkItem workItem)
        {
            UInt16 address = workItem.Address.Index;
            UInt16 length = workItem.QuantityOfRegisters;
            UInt16[] reply;

            lock (DriverLock)
            {
                reply = Driver.ReadHoldingRegisters(1, address, length);
            }

            Byte[] buffer = new Byte[reply.Length * sizeof(UInt16)];
            Buffer.BlockCopy(reply, 0, buffer, 0, buffer.Length);
            workItem.Buffer = buffer;
        }
        public static IEnumerable<HoldingRegistersWorkItem> GetWorkItems(IEnumerable<IModbusHoldingRegistersTag> Tags, UInt16 MaxQuantityOfRegisters = 125)
        {
            IList<IModbusHoldingRegistersTag> TagList = Tags.Where(tag => tag.Address.Table == Table.HoldingRegisters).OrderBy(tag => tag.Address.Index).ToList();

            List<HoldingRegistersWorkItem> WorkItems = new List<HoldingRegistersWorkItem>();

            HoldingRegistersWorkItem WorkItem = null;
            foreach (IModbusHoldingRegistersTag tag in TagList)
            {
                if (WorkItem == null)
                {
                    WorkItem = new HoldingRegistersWorkItem(MaxQuantityOfRegisters);
                    WorkItems.Add(WorkItem);
                }
                if (!(WorkItem.Add(tag)))
                {
                    WorkItem = new HoldingRegistersWorkItem(MaxQuantityOfRegisters);
                    WorkItem.Add(tag);
                    WorkItems.Add(WorkItem);
                }
            }
            return WorkItems;
        }