فهرست منبع

修改光源控制器控制

徐孝锋 8 ماه پیش
والد
کامیت
b2ab67f216

+ 34 - 26
TeamAAS-VM/Models/Lights/LightControllerConfig.cs

@@ -36,34 +36,42 @@ namespace TeamAAS_VP.Models.Lights
         public LightModel LightModel
         {
             get { return _LightModel; }
-            set { SetProperty(ref _LightModel, value);
-                switch (value)
+            set {
+                if (SetProperty(ref _LightModel, value))
                 {
-                    case LightModel.KCS_KDC_12V60W_4T:
-                        ChannelCount=4;
-                        TcpConfig = null;
-                        if (SerialPortConfig==null)
-                        {
-                            SerialPortConfig = new SerialPortConfig();
-                        }
-                        ChannelConfigs = new ObservableCollection<ChannelConfig>();
-                        for (int i = 0; i < ChannelCount; i++)
-                        {
-                            ChannelConfigs.Add(new ChannelConfig()
+                    switch (value)
+                    {
+                        case LightModel.KCS_KDC_12V60W_4T:
+                            ChannelCount = 4;
+                            TcpConfig = null;
+                            if (SerialPortConfig == null)
                             {
-                                LocalIndex = i,
-                                GlobalIndex = i,
-                                Name = $"Channel {i + 1}",
-                                Description = $"Description for Channel {i + 1}",
-                                DefaultBrightness = 100
-                            });
-                        }
-                        break;
-                    default:
-                        ChannelConfigs = new ObservableCollection<ChannelConfig>();
-                        SerialPortConfig = null;
-                        TcpConfig = null;
-                        break;
+                                SerialPortConfig = new SerialPortConfig();
+                            }
+                            ChannelConfigs = new ObservableCollection<ChannelConfig>();
+                            if (ChannelConfigs.Count != ChannelCount)
+                            {
+                                ChannelConfigs.Clear();
+                                for (int i = 0; i < ChannelCount; i++)
+                                {
+                                    ChannelConfigs.Add(new ChannelConfig()
+                                    {
+                                        LocalIndex = i,
+                                        GlobalIndex = i,
+                                        Name = $"Channel {i + 1}",
+                                        Description = $"Description for Channel {i + 1}",
+                                        DefaultBrightness = 100
+                                    });
+                                }
+                            }
+
+                            break;
+                        default:
+                            ChannelConfigs = new ObservableCollection<ChannelConfig>();
+                            SerialPortConfig = null;
+                            TcpConfig = null;
+                            break;
+                    }
                 }
             }
         }

+ 1 - 1
TeamAAS-VM/Models/SerialPortConfig.cs

@@ -16,7 +16,7 @@ namespace TeamAAS_VP.Models
             get { return _PortName; }
             set { SetProperty(ref _PortName, value); }
         }
-        private int _BaudRate = 9600;
+        private int _BaudRate = 19200;
         public int BaudRate
         {
             get { return _BaudRate; }

+ 34 - 2
TeamAAS-VM/ViewModels/DebugMod/LightManualViewModel.cs

@@ -1,4 +1,5 @@
-using Prism.Commands;
+using Basler.Pylon;
+using Prism.Commands;
 using Prism.Events;
 using Prism.Ioc;
 using Prism.Mvvm;
@@ -9,12 +10,12 @@ using System.Collections.ObjectModel;
 using System.Linq;
 using System.Threading.Tasks;
 using TeamAAS_VP.Core;
+using TeamAAS_VP.Core.Lights;
 using TeamAAS_VP.Data;
 using TeamAAS_VP.Events;
 using TeamAAS_VP.Interfaces;
 using TeamAAS_VP.Models.Lights;
 using TeamAAS_VP.Resources.Languages;
-using TeamAAS_VP.Core.Lights;
 
 namespace TeamAAS_VP.ViewModels.DebugMod
 {
@@ -156,6 +157,10 @@ namespace TeamAAS_VP.ViewModels.DebugMod
             public DelegateCommand TurnOnCommand { get; }
             public DelegateCommand TurnOffCommand { get; }
 
+            private DelegateCommand<object> _BrightnessChangedCommand;
+            public DelegateCommand<object> BrightnessChangedCommand =>
+                _BrightnessChangedCommand ?? (_BrightnessChangedCommand = new DelegateCommand<object>(ExecuteBrightnessChangedCommand));
+
             public ChannelItem(int globalId, ILightChannel channel, ILightManagerService lightManagerService, IConfigService configService, IEventAggregator eventAggregator)
             {
                 _globalId = globalId;
@@ -190,6 +195,33 @@ namespace TeamAAS_VP.ViewModels.DebugMod
                 }
             }
 
+            async void ExecuteBrightnessChangedCommand(object obj)
+            {
+                try
+                {
+
+                    var parameter = obj as Tuple<object, double, double>;
+
+                    var success = await _lightManagerService.SetGlobalChannelBrightnessAsync(_globalId, (int)parameter.Item2);
+                    //if (success)
+                    //{
+                    //    CurrentBrightness = PendingBrightness;
+                    //    IsOn = PendingBrightness > 0;
+                    //    // also save as default in config
+                    //    _configService.UpdateChannelDefaultBrightness(_globalId, PendingBrightness);
+                    //    _eventAggregator.GetEvent<SnackbarMessageNotification>().Publish(new MessageParameter() { Msg = $"保存完成: {Name} -> {PendingBrightness}", Duration = 1 });
+                    //}
+                    //else
+                    //{
+                    //    _eventAggregator.GetEvent<SnackbarMessageNotification>().Publish(new MessageParameter() { Msg = $"保存失败: {Name}", Duration = 1 });
+                    //}
+                }
+                catch (Exception)
+                {
+                    //_eventAggregator.GetEvent<SnackbarMessageNotification>().Publish(new MessageParameter() { Msg = $"保存异常: {ex.Message}", Duration = 1 });
+                }
+            }
+
             private async Task SaveAsync()
             {
                 try

+ 53 - 15
TeamAAS-VM/Views/DebugMod/LightManual.xaml

@@ -11,12 +11,15 @@
              xmlns:sys="clr-namespace:System;assembly=mscorlib"
              xmlns:uControl="clr-namespace:TeamAAS_VP.Controls"
              xmlns:convert="clr-namespace:TeamAAS_VP.ValueConverter"
+             xmlns:localbehaviors="clr-namespace:TeamAAS_VP.Behaviors"
              xmlns:lex="http://wpflocalizeextension.codeplex.com"
              lex:LocalizeDictionary.DesignCulture="zh-CN"
              lex:ResxLocalizationProvider.DefaultAssembly="TeamAAS-VP"
              lex:ResxLocalizationProvider.DefaultDictionary="Lang"
              prism:ViewModelLocator.AutoWireViewModel="True"
              mc:Ignorable="d"
+             d:Width="1024"
+             d:Height="768"
              d:Background="White"
              d:DataContext="{d:DesignInstance Type=vm:LightManualViewModel}"
              FontFamily="{DynamicResource DefaultFont}">
@@ -25,30 +28,65 @@
             <b:InvokeCommandAction Command="{Binding LoadedCommand}" />
         </b:EventTrigger>
     </b:Interaction.Triggers>
-    <Grid VerticalAlignment="Top" IsEnabled="{Binding IsAllowEdit}">
-        <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
+    <Grid VerticalAlignment="Top"
+          IsEnabled="{Binding IsAllowEdit}">
+        <ScrollViewer HorizontalScrollBarVisibility="Auto"
+                      VerticalScrollBarVisibility="Auto">
             <ItemsControl ItemsSource="{Binding Channels}">
                 <ItemsControl.ItemTemplate>
                     <DataTemplate>
-                        <Border BorderBrush="Gray" BorderThickness="1" Margin="6" Padding="8" CornerRadius="6">
+                        <Border BorderBrush="Gray"
+                                BorderThickness="1"
+                                Margin="6"
+                                Padding="8"
+                                CornerRadius="6">
                             <StackPanel Orientation="Vertical">
-                                <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
-                                    <TextBlock Text="通道:" FontWeight="Bold" Margin="0,0,6,0" />
-                                    <TextBlock Text="{Binding GlobalId}" Width="40" />
-                                    <TextBlock Text="名称:" FontWeight="Bold" Margin="10,0,6,0" />
+                                <StackPanel Orientation="Horizontal"
+                                            VerticalAlignment="Center">
+                                    <TextBlock Text="通道:"
+                                               FontWeight="Bold"
+                                               Margin="0,0,6,0" />
+                                    <TextBlock Text="{Binding GlobalId}"
+                                               Width="40" />
+                                    <TextBlock Text="名称:"
+                                               FontWeight="Bold"
+                                               Margin="10,0,6,0" />
                                     <TextBlock Text="{Binding Name}" />
                                 </StackPanel>
 
-                                <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="0,8,0,0">
-                                    <TextBlock Text="亮度:" VerticalAlignment="Center" Margin="0,0,6,0" />
-                                    <Slider Width="280" Minimum="0" Maximum="255" Value="{Binding PendingBrightness,Mode=TwoWay}" SmallChange="1" LargeChange="10" />
-                                    <TextBlock Text="{Binding PendingBrightness}" Width="40" Margin="6,0,0,0" VerticalAlignment="Center" />
+                                <StackPanel Orientation="Horizontal"
+                                            VerticalAlignment="Center"
+                                            Margin="0,8,0,0">
+                                    <TextBlock Text="亮度:"
+                                               VerticalAlignment="Center"
+                                               Margin="0,0,6,0" />
+                                    <Slider Width="280"
+                                            Minimum="0"
+                                            Maximum="255"
+                                            Value="{Binding PendingBrightness,Mode=TwoWay}"
+                                            SmallChange="1"
+                                            LargeChange="10">
+                                        <b:Interaction.Behaviors>
+                                            <localbehaviors:SliderUserInteractionBehavior UserInteractionCommand="{Binding BrightnessChangedCommand}" />
+                                        </b:Interaction.Behaviors>
+                                    </Slider>
+                                    <TextBlock Text="{Binding PendingBrightness}"
+                                               Width="40"
+                                               Margin="6,0,0,0"
+                                               VerticalAlignment="Center" />
                                 </StackPanel>
 
-                                <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,8,0,0">
-                                    <Button Content="打开" Command="{Binding TurnOnCommand}" Margin="0,0,8,0" />
-                                    <Button Content="关闭" Command="{Binding TurnOffCommand}" Margin="0,0,8,0" />
-                                    <Button Content="保存" Command="{Binding SaveCommand}" />
+                                <StackPanel Orientation="Horizontal"
+                                            HorizontalAlignment="Right"
+                                            Margin="0,8,0,0">
+                                    <Button Content="打开"
+                                            Command="{Binding TurnOnCommand}"
+                                            Margin="0,0,8,0" />
+                                    <Button Content="关闭"
+                                            Command="{Binding TurnOffCommand}"
+                                            Margin="0,0,8,0" />
+                                    <Button Content="保存"
+                                            Command="{Binding SaveCommand}" />
                                 </StackPanel>
                             </StackPanel>
                         </Border>

+ 5 - 0
TeamAAS-VM/Views/SettingView.xaml.cs

@@ -5,6 +5,7 @@ using Prism.Regions;
 using System;
 using System.Windows.Controls;
 using TeamAAS_VP.Models;
+using TeamAAS_VP.Models.Lights;
 using TeamAAS_VP.ViewModels;
 
 namespace TeamAAS_VP.Views
@@ -41,6 +42,10 @@ namespace TeamAAS_VP.Views
                 {
                     viewModel.SelectPlc = e.NewValue as PlcInfo;
                 }
+                else if (e.NewValue is LightControllerConfig)
+                {
+                    viewModel.SelectLightController = e.NewValue as LightControllerConfig;
+                }
             }
             catch (Exception)
             {