瀏覽代碼

增加电批扭矩测试仪界面及连接

KWD 7 月之前
父節點
當前提交
b89de328d2

+ 3 - 4
TeamAAS-VM/Core/FilePath.cs

@@ -67,14 +67,13 @@ namespace TeamAAS_VP.Core
         /// </summary>
         public static string TorqueCheckPath = "..//Config//TorqueCheckParam.cfg";
 
-        /// <summary>
-        /// 扭力测量仪路径
-        /// </summary>
-        public static string SignalConfigPath { get; set; } = "..//Config//扭力测量仪配置文件.json";
         /// <summary>
         /// 生产排班参数路径
         /// </summary>
 
         public static readonly string WorkShiftParamPath = "..//Log//WorkShiftParam.cfg";
+
+        // 电批配置路径
+        public static readonly string TorqueReaderConfigurationPath = "..//Config//TorqueReaderConfiguration.cfg";
     }
 }

+ 19 - 10
TeamAAS-VM/Core/Management.cs

@@ -54,6 +54,7 @@ using TeamAAS_VP.Models;
 using TeamAAS_VP.Models.Calibration;
 using TeamAAS_VP.Models.Feeder;
 using TeamAAS_VP.Models.Product;
+using TeamAAS_VP.Models.Torque;
 using TeamAAS_VP.Resources.Languages;
 using TeamAAS_VP.Services;
 using TeamAAS_VP.ViewModels.Home;
@@ -680,12 +681,16 @@ namespace TeamAAS_VP.Core
         /// <returns></returns>
         public async Task InitSignal()
         {
-            if (File.Exists(FilePath.SignalConfigPath))
+
+            var torqueConfig = _configService.GetTorqueReaderConfig();
+
+            if (torqueConfig!=null)
             {
                 try
                 {                    
-                    var port = FileHelper.ReadJsonFile<string>(FilePath.SignalConfigPath);
-                    if (port != null)
+                    var port = FileHelper.ReadJsonFile<TorqueProduceModel>(FilePath.TorqueReaderConfigurationPath);
+                    if (string.IsNullOrEmpty(port.TorqueMeasureSerialPort))
+                    
                     {
                         client = new TouchSocket.SerialPorts.SerialPortClient();
                         client.Connecting = (client1, e) => { return EasyTask.CompletedTask; };//即将连接到端口
@@ -702,17 +707,21 @@ namespace TeamAAS_VP.Core
                         await client.SetupAsync(new TouchSocketConfig()
                              .SetSerialPortOption(new SerialPortOption()
                              {
-                                 BaudRate = 115200,//波特率
-                                 DataBits = 8,//数据位
-                                 Parity = System.IO.Ports.Parity.None,//校验位
-                                 PortName = port,//COM
-                                 StopBits = System.IO.Ports.StopBits.One//停止位
+                                 BaudRate = torqueConfig.BaudRate,//波特率
+                                 DataBits = torqueConfig.DataBits,//数据位
+                                 Parity = torqueConfig.Parity,//校验位
+                                 PortName = torqueConfig.PortName,//COM
+                                 StopBits = torqueConfig.StopBits//停止位
                              })
                              .SetSerialDataHandlingAdapter(() => new PeriodPackageAdapter() { CacheTimeout = TimeSpan.FromMilliseconds(100) })
                              );
 
                         await client.ConnectAsync();
                     }
+                    else
+                    {
+                        SendTaskMessage("请设置扭力测量仪串口!" , MessageLevel.Error);
+                    }
                 }
                 catch (Exception ex)
                 {
@@ -722,8 +731,8 @@ namespace TeamAAS_VP.Core
             }
             else
             {
-                COM = "COM1";
-                FileHelper.WriteJsonFile(COM, FilePath.SignalConfigPath);
+                TorqueSerialPortConfig config = new TorqueSerialPortConfig();
+                FileHelper.WriteJsonFile(config,FilePath.TorqueReaderConfigurationPath);
             }
         }
         #endregion

+ 5 - 0
TeamAAS-VM/Interfaces/IConfigService.cs

@@ -9,6 +9,7 @@ using TeamAAS_VP.Models.Feeder;
 using TeamAAS_VP.Models.Lights;
 using TeamAAS_VP.Models.PLC;
 using TeamAAS_VP.Models.ScrewDriver;
+using TeamAAS_VP.Models.Torque;
 
 namespace TeamAAS_VP.Interfaces
 {
@@ -502,5 +503,9 @@ namespace TeamAAS_VP.Interfaces
         /// </summary>
         /// <param name="config"></param>
         void SaveCardReaderConfig(SerialPortConfig config);
+
+        void SaveTorqueReaderConfig(TorqueSerialPortConfig config);
+
+        TorqueSerialPortConfig GetTorqueReaderConfig();
     }
 }

+ 44 - 0
TeamAAS-VM/Models/Torque/TorqueSerialPortConfig.cs

@@ -0,0 +1,44 @@
+using Prism.Mvvm;
+using System;
+using System.Collections.Generic;
+using System.IO.Ports;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace TeamAAS_VP.Models.Torque
+{
+    public class TorqueSerialPortConfig : BindableBase
+    {
+        private string _PortName = "COM4";
+        public string PortName
+        {
+            get { return _PortName; }
+            set { SetProperty(ref _PortName, value); }
+        }
+        private int _BaudRate = 19200;
+        public int BaudRate
+        {
+            get { return _BaudRate; }
+            set { SetProperty(ref _BaudRate, value); }
+        }
+        private Parity _Parity = Parity.None;
+        public Parity Parity
+        {
+            get { return _Parity; }
+            set { SetProperty(ref _Parity, value); }
+        }
+        private StopBits _StopBits = StopBits.One;
+        public StopBits StopBits
+        {
+            get { return _StopBits; }
+            set { SetProperty(ref _StopBits, value); }
+        }
+        private int _DataBits = 8;
+        public int DataBits
+        {
+            get { return _DataBits; }
+            set { SetProperty(ref _DataBits, value); }
+        }
+    }
+}

+ 58 - 0
TeamAAS-VM/Services/ConfigService.cs

@@ -19,6 +19,7 @@ using TeamAAS_VP.Models.Feeder;
 using TeamAAS_VP.Models.Lights;
 using TeamAAS_VP.Models.PLC;
 using TeamAAS_VP.Models.ScrewDriver;
+using TeamAAS_VP.Models.Torque;
 using TeamAAS_VP.Resources.Languages;
 using WPFLocalizeExtension.Engine;
 
@@ -52,6 +53,8 @@ namespace TeamAAS_VP.Services
             public static readonly string ScrewFeedersConfigurationPath = "..//Config//ScrewFeedersConfiguration.cfg";
             // 刷卡器配置路径
             public static readonly string CardReaderConfigurationPath = "..//Config//CardReaderConfiguration.cfg";
+            // 电批配置路径
+            public static readonly string TorqueReaderConfigurationPath = "..//Config//TorqueReaderConfiguration.cfg";
         }
 
         private readonly object _sync = new object();
@@ -80,6 +83,8 @@ namespace TeamAAS_VP.Services
         // 刷卡器配置
         private SerialPortConfig _cardReaderConfig;
 
+        private TorqueSerialPortConfig _torqueReaderConfig;
+
         /// <summary>
         /// 注入系统数据库服务(可选),用于记录螺丝批次变更等记录。
         /// </summary>
@@ -1443,6 +1448,59 @@ namespace TeamAAS_VP.Services
                 }
             }
         }
+
+
+
+        #endregion
+
+        #region 读取电批配置
+        public void SaveTorqueReaderConfig(TorqueSerialPortConfig config)
+        {
+            if (config == null) return;
+            lock (_sync)
+            {
+                _torqueReaderConfig = config;
+                try
+                {
+                    FileHelper.WriteJsonFile(_torqueReaderConfig, ConfigPaths.TorqueReaderConfigurationPath);
+                }
+                catch
+                {
+                    // 忽略持久化错误(与项目中其它保存方法一致),可在需要时添加日志记录
+                }
+            }
+        }
+
+        public TorqueSerialPortConfig GetTorqueReaderConfig()
+        {
+            lock (_sync)
+            {
+                if (_torqueReaderConfig != null)
+                    return _torqueReaderConfig;
+
+                if (File.Exists(ConfigPaths.TorqueReaderConfigurationPath))
+                {
+                    try
+                    {
+                        _torqueReaderConfig = FileHelper.ReadJsonFile<TorqueSerialPortConfig>(ConfigPaths.TorqueReaderConfigurationPath);
+                    }
+                    catch
+                    {
+                        // 若读取失败,创建默认配置并覆盖文件(与项目中其他配置策略一致)
+                        _torqueReaderConfig = new TorqueSerialPortConfig();
+                        try { FileHelper.WriteJsonFile(_torqueReaderConfig, ConfigPaths.TorqueReaderConfigurationPath); } catch { }
+                    }
+                }
+                else
+                {
+                    _torqueReaderConfig = new TorqueSerialPortConfig();
+                    try { FileHelper.WriteJsonFile(_torqueReaderConfig, ConfigPaths.TorqueReaderConfigurationPath); } catch { }
+                }
+
+                return _torqueReaderConfig;
+            }
+        }
+
         #endregion
 
         /// <summary>

+ 1 - 0
TeamAAS-VM/TeamAAS-VP.csproj

@@ -542,6 +542,7 @@
     <Compile Include="Models\Torque\PlcPoint_Torque.cs" />
     <Compile Include="Models\PhotoCaptureRecord.cs" />
     <Compile Include="Models\ScrewFeederBatchRecord.cs" />
+    <Compile Include="Models\Torque\TorqueSerialPortConfig.cs" />
     <Compile Include="Models\Torque\Torque_TaskStatus.cs" />
     <Compile Include="Models\Torque\TorqueProduceModel.cs" />
     <Compile Include="Models\WorkShift.cs" />

+ 31 - 0
TeamAAS-VM/ViewModels/SettingViewModel.cs

@@ -343,6 +343,15 @@ namespace TeamAAS_VP.ViewModels
             set { SetProperty(ref _CardReaderConfig, value); }
         }
 
+        private TorqueSerialPortConfig _TorqueReadConfig;
+
+        public TorqueSerialPortConfig TorqueReadConfig
+        {
+            get { return _TorqueReadConfig; }
+            set { SetProperty(ref _TorqueReadConfig, value); }
+        }
+
+
         private WorkShift _WorkShift;
 
         public WorkShift WorkShifts
@@ -453,6 +462,10 @@ namespace TeamAAS_VP.ViewModels
         public DelegateCommand SaveCardReaderConfigCommand =>
             _SaveCardReaderConfigCommand ?? (_SaveCardReaderConfigCommand = new DelegateCommand(ExecuteSaveCardReaderConfigCommand));
 
+        private DelegateCommand _SaveTorqueReaderConfigCommand;
+        public DelegateCommand SaveTorqueReaderConfigCommand =>
+            _SaveTorqueReaderConfigCommand ?? (_SaveTorqueReaderConfigCommand = new DelegateCommand(ExecuteSaveTorqueReaderConfigCommand));
+
         private DelegateCommand _SaveWorkShiftCommand;
         public DelegateCommand SaveWorkShiftCommand =>
             _SaveWorkShiftCommand ?? (_SaveWorkShiftCommand = new DelegateCommand(ExecuteSaveWorkShiftCommand));
@@ -1377,6 +1390,11 @@ namespace TeamAAS_VP.ViewModels
                 CardReaderConfig = _configService.GetCardReaderConfig();
             }
 
+            if (TorqueReadConfig == null)
+            {
+                TorqueReadConfig = _configService.GetTorqueReaderConfig();
+            }
+
             CurrentLanguage = _configService.GetSystemConfiguration().CurrentLanguage;
 
             // load system parameters into UI
@@ -1655,6 +1673,19 @@ namespace TeamAAS_VP.ViewModels
                 _eventAggregator.GetEvent<SnackbarMessageNotification>().Publish(new MessageParameter() { Msg = ex.Message, Duration = 1 });
             }
         }
+
+        void ExecuteSaveTorqueReaderConfigCommand()
+        {
+            try
+            {
+                _configService.SaveTorqueReaderConfig(TorqueReadConfig);
+            }
+            catch (Exception ex)
+            {
+                _eventAggregator.GetEvent<SnackbarMessageNotification>().Publish(new MessageParameter() { Msg = ex.Message, Duration = 1 });
+            }
+        }
+
         #endregion
 
         #region 设备信息

+ 112 - 38
TeamAAS-VM/Views/SettingView.xaml

@@ -2413,85 +2413,159 @@
                             </StackPanel>
                         </Button>
                     </Grid>
-
-                    <!--刷卡参数配置-->
-                    <GroupBox Grid.Row="5"
-                              Grid.ColumnSpan="2"
+                    <StackPanel Grid.Row="5"  Margin="0,12,0,0" Orientation="Horizontal" >
+                        <!--刷卡参数配置-->
+                        <GroupBox 
                               Header="刷卡器配置"
-                              HorizontalAlignment="Left"
-                              MinWidth="400"
-                              Margin="0,12,0,0">
-                        <Grid Margin="10">
-                            <Grid.ColumnDefinitions>
-                                <ColumnDefinition Width="auto" />
-                                <ColumnDefinition Width="*" />
-                            </Grid.ColumnDefinitions>
-                            <Grid.RowDefinitions>
-                                <RowDefinition Height="Auto" />
-                                <RowDefinition Height="Auto" />
-                                <RowDefinition Height="Auto" />
-                                <RowDefinition Height="Auto" />
-                                <RowDefinition Height="Auto" />
-                                <RowDefinition Height="Auto" />
-                            </Grid.RowDefinitions>
-                            <TextBlock Text="PortName:"
+                              Width="300"
+                            Margin="0,0,50,0"
+                            HorizontalAlignment="Left"
+                             >
+                            <Grid Margin="10">
+                                <Grid.ColumnDefinitions>
+                                    <ColumnDefinition Width="auto" />
+                                    <ColumnDefinition Width="*" />
+                                </Grid.ColumnDefinitions>
+                                <Grid.RowDefinitions>
+                                    <RowDefinition Height="Auto" />
+                                    <RowDefinition Height="Auto" />
+                                    <RowDefinition Height="Auto" />
+                                    <RowDefinition Height="Auto" />
+                                    <RowDefinition Height="Auto" />
+                                    <RowDefinition Height="Auto" />
+                                </Grid.RowDefinitions>
+                                <TextBlock Text="PortName:"
                                        Grid.Row="0"
                                        Grid.Column="0"
                                        HorizontalAlignment="Right" />
-                            <TextBox Text="{Binding CardReaderConfig.PortName,Mode=TwoWay}"
+                                <TextBox Text="{Binding CardReaderConfig.PortName,Mode=TwoWay}"
                                      Grid.Row="0"
                                      Grid.Column="1"
                                      Margin="6,0" />
-                            <TextBlock Text="BaudRate:"
+                                <TextBlock Text="BaudRate:"
                                        Grid.Row="1"
                                        Grid.Column="0"
                                        HorizontalAlignment="Right" />
-                            <TextBox Text="{Binding CardReaderConfig.BaudRate,Mode=TwoWay}"
+                                <TextBox Text="{Binding CardReaderConfig.BaudRate,Mode=TwoWay}"
                                      Grid.Row="1"
                                      Grid.Column="1"
                                      Margin="6,0" />
-                            <TextBlock Text="Parity:"
+                                <TextBlock Text="Parity:"
                                        Grid.Row="2"
                                        Grid.Column="0"
                                        HorizontalAlignment="Right" />
-                            <ComboBox Grid.Row="2"
+                                <ComboBox Grid.Row="2"
                                       Grid.Column="1"
                                       SelectedItem="{Binding CardReaderConfig.Parity,Mode=TwoWay}"
                                       ItemsSource="{Binding Source={StaticResource Parity}}" />
-                            <TextBlock Text="StopBits:"
+                                <TextBlock Text="StopBits:"
                                        Grid.Row="3"
                                        Grid.Column="0"
                                        HorizontalAlignment="Right" />
-                            <ComboBox Grid.Row="3"
+                                <ComboBox Grid.Row="3"
                                       Grid.Column="1"
                                       SelectedItem="{Binding CardReaderConfig.StopBits,Mode=TwoWay}"
                                       ItemsSource="{Binding Source={StaticResource StopBits}}" />
-                            <TextBlock Text="DataBits:"
+                                <TextBlock Text="DataBits:"
                                        Grid.Row="4"
                                        Grid.Column="0"
                                        HorizontalAlignment="Right" />
-                            <TextBox Text="{Binding CardReaderConfig.DataBits,Mode=TwoWay}"
+                                <TextBox Text="{Binding CardReaderConfig.DataBits,Mode=TwoWay}"
                                      Grid.Row="4"
                                      Grid.Column="1"
                                      Margin="6,0" />
 
-                            <Button Grid.Row="5"
+                                <Button Grid.Row="5"
                                     Grid.Column="1"
                                     Margin="0,6"
                                     Style="{StaticResource MaterialDesignRaisedButton}"
                                     materialDesign:ButtonAssist.CornerRadius="10"
                                     MinWidth="120"
                                     Command="{Binding SaveCardReaderConfigCommand}">
-                                <StackPanel Orientation="Horizontal"
+                                    <StackPanel Orientation="Horizontal"
                                             HorizontalAlignment="Center">
-                                    <materialDesign:PackIcon Kind="ContentSaveCheck"
+                                        <materialDesign:PackIcon Kind="ContentSaveCheck"
                                                              Margin="0,0,6,0" />
-                                    <TextBlock VerticalAlignment="Center"
+                                        <TextBlock VerticalAlignment="Center"
                                                Text="保存刷卡器配置" />
-                                </StackPanel>
-                            </Button>
-                        </Grid>
-                    </GroupBox>
+                                    </StackPanel>
+                                </Button>
+                            </Grid>
+                        </GroupBox>
+
+                        <GroupBox Header="电批配置"  Width="300">
+                            <Grid Margin="10">
+                                <Grid.ColumnDefinitions>
+                                    <ColumnDefinition Width="auto" />
+                                    <ColumnDefinition Width="*" />
+                                </Grid.ColumnDefinitions>
+                                <Grid.RowDefinitions>
+                                    <RowDefinition Height="Auto" />
+                                    <RowDefinition Height="Auto" />
+                                    <RowDefinition Height="Auto" />
+                                    <RowDefinition Height="Auto" />
+                                    <RowDefinition Height="Auto" />
+                                    <RowDefinition Height="Auto" />
+                                </Grid.RowDefinitions>
+                                <TextBlock Text="PortName:"
+                                     Grid.Row="0"
+                                     Grid.Column="0"
+                                     HorizontalAlignment="Right" />
+                                <TextBox Text="{Binding TorqueReadConfig.PortName,Mode=TwoWay}"
+                                     Grid.Row="0"
+                                     Grid.Column="1"
+                                     Margin="6,0" />
+                                <TextBlock Text="BaudRate:"
+                                    Grid.Row="1"
+                                    Grid.Column="0"
+                                    HorizontalAlignment="Right" />
+                                <TextBox Text="{Binding TorqueReadConfig.BaudRate,Mode=TwoWay}"
+                                    Grid.Row="1"
+                                    Grid.Column="1"
+                                    Margin="6,0" />
+                                <TextBlock Text="Parity:"
+                                    Grid.Row="2"
+                                    Grid.Column="0"
+                                    HorizontalAlignment="Right" />
+                                <ComboBox Grid.Row="2"
+                                    Grid.Column="1"
+                                    SelectedItem="{Binding TorqueReadConfig.Parity,Mode=TwoWay}"
+                                    ItemsSource="{Binding Source={StaticResource Parity}}" />
+                                <TextBlock Text="StopBits:"
+                                    Grid.Row="3"
+                                    Grid.Column="0"
+                                    HorizontalAlignment="Right" />
+                                <ComboBox Grid.Row="3"
+                                    Grid.Column="1"
+                                    SelectedItem="{Binding TorqueReadConfig.StopBits,Mode=TwoWay}"
+                                    ItemsSource="{Binding Source={StaticResource StopBits}}" />
+                                <TextBlock Text="DataBits:"
+                                    Grid.Row="4"
+                                    Grid.Column="0"
+                                    HorizontalAlignment="Right" />
+                                <TextBox Text="{Binding TorqueReadConfig.DataBits,Mode=TwoWay}"
+                                     Grid.Row="4"
+                                     Grid.Column="1"
+                                     Margin="6,0" />
+
+                                <Button Grid.Row="5"
+                                    Grid.Column="1"
+                                    Margin="0,6"
+                                    Style="{StaticResource MaterialDesignRaisedButton}"
+                                    materialDesign:ButtonAssist.CornerRadius="10"
+                                    MinWidth="120"
+                                    Command="{Binding SaveTorqueReaderConfigCommand}">
+                                    <StackPanel Orientation="Horizontal"
+                        HorizontalAlignment="Center">
+                                        <materialDesign:PackIcon Kind="ContentSaveCheck"
+                                         Margin="0,0,6,0" />
+                                        <TextBlock VerticalAlignment="Center"
+                           Text="保存电批配置" />
+                                    </StackPanel>
+                                </Button>
+                            </Grid>
+                        </GroupBox>
+                    </StackPanel>
                 </StackPanel>
             </TabItem>