Example #1
0
        private void UpdateMemoryBlock()
        {
            //PortMemory
            for (int i = 0; i < registeredDevices.Count; i++)
            {
                PortMemoryBlock pmb = ActiveMemoryBlock.GetPortMemory(i + 1);
                if (pmb.DirtyTypes[(int)PortMemoryBlock.DirtyTypeEnum.AnalogIn])
                {
                    MemoryBlock.PortMemoryUpdateEvent.OnInDataAnalogUpdated.Invoke(i + 1, pmb.AnalogIn);
                    pmb.DirtyTypes[(int)PortMemoryBlock.DirtyTypeEnum.AnalogIn] = false;
                }

                if (pmb.DirtyTypes[(int)PortMemoryBlock.DirtyTypeEnum.AnalogOut])
                {
                    MemoryBlock.PortMemoryUpdateEvent.OnOutDataAnalogUpdated.Invoke(i + 1, pmb.AnalogOut);
                    pmb.DirtyTypes[(int)PortMemoryBlock.DirtyTypeEnum.AnalogOut] = false;
                }

                if (pmb.DirtyTypes[(int)PortMemoryBlock.DirtyTypeEnum.DigitalIn])
                {
                    MemoryBlock.PortMemoryUpdateEvent.OnInDataDigitalUpdated.Invoke(i + 1, pmb.DigitalIn);
                    pmb.DirtyTypes[(int)PortMemoryBlock.DirtyTypeEnum.DigitalIn] = false;
                }

                if (pmb.DirtyTypes[(int)PortMemoryBlock.DirtyTypeEnum.DigitalOut])
                {
                    MemoryBlock.PortMemoryUpdateEvent.OnOutDataDigitalUpdated.Invoke(i + 1, pmb.DigitalOut);
                    pmb.DirtyTypes[(int)PortMemoryBlock.DirtyTypeEnum.DigitalOut] = false;
                }
            }
        }
Example #2
0
        private void GetDevices()
        {
            string workDir      = Path.GetDirectoryName(System.Environment.CommandLine);
            string targetLibDir = workDir + Path.DirectorySeparatorChar + "sensors";

            // Console.WriteLine(workDir);
            Console.WriteLine("Scanning new devices in " + targetLibDir);
            if (!Directory.Exists(targetLibDir))
            {
                return;
            }

            string[] files = Directory.GetFiles(targetLibDir, "*.dll");
            foreach (var file in files)
            {
                var DLL =
                    Assembly.LoadFile(file);
                foreach (Type type in DLL.GetExportedTypes())
                {
                    if (!registeredDevicesType.Contains(type))
                    {
                        IDeviceStatus c = Activator.CreateInstance(type) as IDeviceStatus;
                        if (c != null)
                        {
                            int availablePort = registeredDevices.Count + 1;
                            ActiveMemoryBlock.RegisterPortMemory(availablePort);
                            c.Start(ActiveMemoryBlock.GetPortMemory(availablePort));
                            registeredDevices.Add(c);
                            registeredDevicesType.Add(type);
                            Console.WriteLine("Lib " + file);
                            OnNewDeviceRegistered.Invoke(availablePort);
                            break;
                        }
                    }
                }
            }
        }