Exemple #1
0
        public static void CreateFromStringTest()
        {
            //Type={0}; Network={1}; Address={2}; Location={3}; PollingInterval={4}

            string str = "Type=KIP_MAIN_POWERED_v1; Network=; Address=1; " +
                         "Location=; PollingInterval=1";
            DeviceBase device = DeviceBase.Create(str);
        }
Exemple #2
0
        public static void ToStringTest()
        {
            DeviceBase device =
                DeviceBase.Create(DeviceType.KIP_MAIN_POWERED_v1);

            //string str = device.ToString();
            Console.WriteLine(device.ToString());
        }
Exemple #3
0
        public static void NetworkTest()
        {
            CanPort port = new CanPort("HW318371");

            port.BitRate     = BaudRate.BR10;
            port.FrameFormat = FrameFormat.StandardFrame;
            port.Mode        = PortMode.NORMAL;

            NetworkController controller = new NetworkController(port, 1);

            controller.Devices.Add(DeviceBase.Create(DeviceType.KIP_MAIN_POWERED_v1));
            controller.Start();
            return;
        }
Exemple #4
0
        /// <summary>
        /// Метод возвращает объект сетевого устройства (наследника абстрактного класса
        /// NGK.CAN.ApplicationLayer.Network.Devices.Device) и добавляет его в коллекцию
        /// </summary>
        /// <param name="itemType"></param>
        /// <returns></returns>
        protected override object CreateInstance(Type itemType)
        {
            // Здесь надо получить сам список сетевых устройств.
            DevicesCollection collection =
                ((NetworkController)Context.Instance).Devices;

            // Находим уникальный сетевой адрес для нового устройства
            for (byte address = 1; address < 128; address++)
            {
                if (!collection.Contains(address))
                {
                    // Создаём экземпляр сетевого устройства
                    DeviceBase device = null;

                    switch (itemType.FullName)
                    {
                    case @"NGK.CAN.ApplicationLayer.Network.Devices.Profiles.KIP9810v1":
                    {
                        device        = DeviceBase.Create(DeviceType.KIP_MAIN_POWERED_v1);
                        device.NodeId = address;
                        // Добавляем в массив
                        collection.Add(device);
                        break;
                    }

                    case @"NGK.CAN.ApplicationLayer.Network.Devices.Profiles.KIP9811v1":
                    {
                        device        = DeviceBase.Create(DeviceType.KIP_BATTERY_POWER_v1);
                        device.NodeId = address;
                        // Добавляем в массив
                        collection.Add(device);
                        break;
                    }

                    default:
                    {
                        throw new NotSupportedException(String.Format(
                                                            "Тип профиля устройсва {0} не поддерживается в текущей версии ПО",
                                                            itemType.FullName));
                    }
                    }
                    // Возвращаем сам объект
                    return(device);
                }
            }

            throw new InvalidOperationException(
                      "Невозможно добавить устройство, закончилось адресное пространство сети");
            //return base.CreateInstance(itemType);
        }
Exemple #5
0
        /// <summary>
        /// Конструктор для десериализации
        /// </summary>
        /// <param name="info"></param>
        /// <param name="context"></param>
        private NetworkController(SerializationInfo info, StreamingContext context)
        {
            DeviceBase device;

            // Восстанавливаем сохранённые параметры
            _NetworkId   = info.GetUInt32("NetworkId");
            _Description = info.GetString("Description");
            _CanPort     = (ICanPort)info.GetValue("CanPort", typeof(ICanPort));
            if (_CanPort != null)
            {
                _CanPort.Stop();
                _CanPort.MessageReceived +=
                    new EventHandler(EventHandler_CanPort_MessageReceived);
                //_CanPort.PortChangedStatus +=
                //    new EventHandlerPortChangesStatus(EventHandler_CanPort_PortChangesStatus);
                //_CanPort.ErrorReceived +=
                //    new EventHandlerErrorRecived(EventHandler_CanPort_ErrorReceived);
            }
            _TotalAttempts = info.GetInt32("TotalAttempts");

            // Восстанавливаем список устройств
            _DevicesList = new DevicesCollection(this);

            List <string> list =
                (List <string>)info.GetValue("Devices", typeof(List <string>));

            foreach (string str in list)
            {
                device = DeviceBase.Create(str);
                _DevicesList.Add(device);
            }
            // Запускаем сетевые сервисы
            InitNetworkServices();

            // Настройки сетевых сервисов
            ((ServicePdoReceive)_NetworkServices[ServiceType.PdoReceive]).Interval =
                info.GetInt32("PdoReceiveInterval");
            ((ServiceSync)_NetworkServices[ServiceType.Sync]).PeriodSync =
                info.GetDouble("SyncPeriodSync");
            foreach (Service service in _NetworkServices)
            {
                service.TotalAttempts = _TotalAttempts;
            }

            DeviceChangedData =
                new EventHandler(EventHandlerDeviceChangedValue);
            DeviceChangedStatus =
                new EventHandler(EventHandlerDeviceChangedStatus);
        }
Exemple #6
0
        public static void SerializeNetworkControllerCollectionTest()
        {
            CanPort port = new CanPort("HW318371");

            port.BitRate     = BaudRate.BR10;
            port.FrameFormat = FrameFormat.StandardFrame;
            port.Mode        = PortMode.NORMAL;

            NetworkController controller = new NetworkController(port, 1);

            controller.Devices.Add(DeviceBase.Create(DeviceType.KIP_MAIN_POWERED_v1));

            NetworkControllersCollection collection = new NetworkControllersCollection();

            collection.Add(controller);

            // Сериализуем в файл
            using (FileStream fs = new FileStream("serializedNetworks.bin", FileMode.Create))
            {
                BinaryFormatter bf = new BinaryFormatter();
                bf.Serialize(fs, collection);
            }
        }