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); }
public static void ToStringTest() { DeviceBase device = DeviceBase.Create(DeviceType.KIP_MAIN_POWERED_v1); //string str = device.ToString(); Console.WriteLine(device.ToString()); }
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; }
/// <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); }
/// <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); }
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); } }