Plane.FormationCreator/Plane.FormationCreator/ViewModels/RtcmInfoViewModel.cs
2019-11-15 11:16:21 +08:00

88 lines
2.5 KiB
C#

using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
using Plane.FormationCreator.Formation;
using Plane.Windows.Messages;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace Plane.FormationCreator.ViewModels
{
public class RtcmInfoViewModel: ViewModelBase
{
private RtcmManager _rtcmManager;
public RtcmManager RtcmManager { get { return _rtcmManager; } }
public ObservableCollection<string> serialPorts { get; } = new ObservableCollection<string>();
private string _serialPortsSelectdValue;
public string SerialPortsSelectdValue
{
get { return _serialPortsSelectdValue; }
set { Set(nameof(SerialPortsSelectdValue), ref _serialPortsSelectdValue, value); }
}
public RtcmInfoViewModel(RtcmManager rtcmManager)
{
_rtcmManager = rtcmManager;
string[] commports = _rtcmManager.GetPortNames();
foreach (var item in commports)
{
serialPorts.Add(item);
}
serialPorts.Add("千寻");
SerialPortsSelectdValue = serialPorts[0];
}
public void RefreshPorts()
{
string lastSelectValue = SerialPortsSelectdValue;
serialPorts.Clear();
string[] commports = _rtcmManager.GetPortNames();
foreach (var item in commports)
{
serialPorts.Add(item);
}
serialPorts.Add("千寻");
if (serialPorts.Contains(lastSelectValue))
SerialPortsSelectdValue = lastSelectValue;
}
private ICommand _ConnectRtcmCommand;
public ICommand ConnectRtcmCommand
{
get
{
return _ConnectRtcmCommand ?? (_ConnectRtcmCommand = new RelayCommand(async() =>
{
if (!_rtcmManager.Rtcmthreadrun)
await _rtcmManager.Open(SerialPortsSelectdValue);
else
await _rtcmManager.Close();
}));
}
}
private ICommand _ClearRtcmCommand;
public ICommand ClearRtcmCommand
{
get
{
return _ClearRtcmCommand ?? (_ClearRtcmCommand = new RelayCommand(async () =>
{
await Task.Delay(1);
}));
}
}
}
}