예제 #1
0
		public BasePropertyViewModel(XDriverProperty driverProperty, SKDDevice device)
		{
			DriverProperty = driverProperty;
            IsAUParameter = driverProperty.IsAUParameter;
			Device = device;

			if (!Device.Properties.Any(x => x.Name == driverProperty.Name))
			{
				Save(driverProperty.Default, false);
			}

			if (Device.DeviceProperties == null)
			{
				Device.DeviceProperties = new List<XProperty>();
			}

			var deviceProperty = Device.DeviceProperties.FirstOrDefault(x => x.Name == driverProperty.Name);
			if (deviceProperty != null)
			{
				DeviceAUParameterValue = deviceProperty.Value.ToString();
			}
			else
				DeviceAUParameterValue = "Неизвестно";

			UpdateDeviceParameterMissmatchType();
		}
예제 #2
0
		public static bool SynchroniseTime(SKDDevice device)
		{
			var bytes = new List<byte>();
			bytes.Add(2);
			var result = SendBytes(device, bytes);
			return !result.HasError;
		}
예제 #3
0
		public static string GetInfo(SKDDevice device)
		{
			var bytes = new List<byte>();
			bytes.Add(1);
			var result = SendBytes(device, bytes);
			if (result.HasError)
				return result.Error;
			return "Версия " + result.Bytes[0].ToString();
		}
예제 #4
0
		public BoolPropertyViewModel(XDriverProperty driverProperty, SKDDevice device)
			: base(driverProperty, device)
		{
			var property = device.Properties.FirstOrDefault(x => x.Name == driverProperty.Name);
			if (property != null)
				_isChecked = property.Value > 0;
			else
				_isChecked = (driverProperty.Default == (ushort)1) ? true : false;
		}
예제 #5
0
		void AddChild(SKDDevice parentDevice)
		{
			foreach (var device in parentDevice.Children)
			{
				device.Parent = parentDevice;
				Devices.Add(device);
				AddChild(device);
			}
		}
예제 #6
0
		public ShortPropertyViewModel(XDriverProperty driverProperty, SKDDevice device)
			: base(driverProperty, device)
		{
			var property = device.Properties.FirstOrDefault(x => x.Name == driverProperty.Name);
			if (property != null)
				_text = property.Value;
			else
				_text = driverProperty.Default;
		}
예제 #7
0
		public SKDDeviceViewModel(SKDDevice device)
		{
			CardCommand = new RelayCommand(OnCard);
			SKDDevice = device;
			var portProperty = device.Properties.FirstOrDefault(x => x.Name == "Port");
			if (portProperty != null)
			{
				var portNo = portProperty.Value;
				SKDImitatorProcessor = new SKDImitatorProcessor(portNo);
				SKDImitatorProcessor.Start();
			}
		}
예제 #8
0
		protected override bool Save()
		{
			var device = new SKDDevice()
			{
				Address = Address,
				Driver = SelectedDriver,
				DriverUID = SelectedDriver.UID
			};
			SKDManager.Devices.Add(device);
			AddedDevice = new DeviceViewModel(device);
			ParentDeviceViewModel.Device.Children.Add(device);
			ParentDeviceViewModel.AddChild(AddedDevice);
			ParentDeviceViewModel.Update();
			XManager.DeviceConfiguration.Update();
			return true;
		}
예제 #9
0
		public EnumPropertyViewModel(XDriverProperty driverProperty, SKDDevice device)
			: base(driverProperty, device)
		{
			var property = device.Properties.FirstOrDefault(x => x.Name == driverProperty.Name);
			if (property != null)
			{
				var driverPropertyParameter = driverProperty.Parameters.FirstOrDefault(x => x.Value == property.Value);
				if (driverPropertyParameter != null)
				{
					_selectedParameter = driverPropertyParameter;
				}
			}
			else
			{
				var enumdriverProperty = driverProperty.Parameters.FirstOrDefault(x => x.Value == driverProperty.Default);
				if (enumdriverProperty != null)
					_selectedParameter = enumdriverProperty;
			}
		}
예제 #10
0
		static SendResult SendBytes(SKDDevice device, List<byte> bytes, bool hasAnswer = true, bool sleepInsteadOfRecieve = false, int receiveTimeout = 2000)
		{
			var stringIPAddress = device.Address;
			int port = 0;
			var portProperty = device.Properties.FirstOrDefault(x => x.Name == "Port");
			if (portProperty != null)
			{
				port = portProperty.Value;
			}
			else
			{
				return new SendResult("Не задан порт");
			}


			IPAddress ipAddress;
			var result = IPAddress.TryParse(stringIPAddress, out ipAddress);
			if (!result)
			{
				return new SendResult("Неверный формат IP адреса");
			}
			var endPoint = new IPEndPoint(ipAddress, port);
			var udpClient = new UdpClient();
			udpClient.Client.ReceiveTimeout = receiveTimeout;
			udpClient.Client.SendTimeout = 1000;

			try
			{
				var bytesSent = udpClient.Send(bytes.ToArray(), bytes.Count, endPoint);
				if (bytesSent != bytes.Count)
				{
					return new SendResult("Не все данные удалось отправить");
				}
			}
			catch
			{
				OnConnectionLost();
				udpClient.Close();
				return new SendResult("Ошибка открытия сокета");
			}
			if (hasAnswer == false)
			{
				udpClient.Close();
				return new SendResult(new List<byte>());
			}
			var recievedBytes = new List<byte>();
			try
			{
				if (sleepInsteadOfRecieve)
				{
					Thread.Sleep(10000);
					return new SendResult(new List<byte>());
				}
				recievedBytes = udpClient.Receive(ref endPoint).ToList();
			}
			catch (SocketException)
			{
				OnConnectionLost();
				udpClient.Close();
				return new SendResult("От устройства не получен ответ в заданный таймаут");
			}
			udpClient.Close();

			return new SendResult(recievedBytes.Skip(1).ToList());
		}
예제 #11
0
		public StringPropertyViewModel(XDriverProperty driverProperty, SKDDevice device)
			: base(driverProperty, device)
		{
			var property = device.Properties.FirstOrDefault(x => x.Name == driverProperty.Name);
			_text = property != null ? property.StringValue : driverProperty.StringDefault;
		}
예제 #12
0
		public PropertiesViewModel(SKDDevice device)
		{
			Device = device;
			Update();
			device.AUParametersChanged += On_AUParametersChanged;
		}