diff --git a/BPASmartClient.CustomResource/BPASmartClient.CustomResource.csproj b/BPASmartClient.CustomResource/BPASmartClient.CustomResource.csproj index 81e148b7..84783f76 100644 --- a/BPASmartClient.CustomResource/BPASmartClient.CustomResource.csproj +++ b/BPASmartClient.CustomResource/BPASmartClient.CustomResource.csproj @@ -201,6 +201,7 @@ + @@ -362,6 +363,7 @@ + diff --git a/BPASmartClient.CustomResource/Image/组合边框2.png b/BPASmartClient.CustomResource/Image/组合边框2.png new file mode 100644 index 00000000..8ffa46c3 Binary files /dev/null and b/BPASmartClient.CustomResource/Image/组合边框2.png differ diff --git a/BPASmartClient.Model/Status.cs b/BPASmartClient.Model/Status.cs new file mode 100644 index 00000000..b49d9064 --- /dev/null +++ b/BPASmartClient.Model/Status.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BPASmartClient.Model +{ + public enum Status + { + 等待配料, + 正在配料, + 配料完成 + } +} diff --git a/BPASmartClient.Model/柔性味魔方/RawMaterialModel.cs b/BPASmartClient.Model/柔性味魔方/RawMaterialModel.cs index 7efb9e6b..7e508ead 100644 --- a/BPASmartClient.Model/柔性味魔方/RawMaterialModel.cs +++ b/BPASmartClient.Model/柔性味魔方/RawMaterialModel.cs @@ -104,7 +104,26 @@ namespace BPASmartClient.Model /// 3:下料完成 /// [Newtonsoft.Json.JsonIgnore] - public ushort RecipeStatus { get { return _mRecipeStatus; } set { _mRecipeStatus = value; OnPropertyChanged(); } } + public ushort RecipeStatus + { + get { return _mRecipeStatus; } + set + { + _mRecipeStatus = value; + if (value == 1) Status = Status.等待配料; + else if (value == 2) Status = Status.正在配料; + else if (value == 3) Status = Status.配料完成; + OnPropertyChanged(); + } + } private ushort _mRecipeStatus = 1; + + /// + /// 配料状态名称 + /// + [Newtonsoft.Json.JsonIgnore] + public Status Status { get { return _mStatus; } set { _mStatus = value; OnPropertyChanged(); } } + private Status _mStatus; + } } diff --git a/DosingSystem/Model/DeviceInquire.cs b/DosingSystem/Model/DeviceInquire.cs index f928ba15..b7218bf7 100644 --- a/DosingSystem/Model/DeviceInquire.cs +++ b/DosingSystem/Model/DeviceInquire.cs @@ -81,6 +81,7 @@ namespace BPASmartClient.DosingSystem devices.Add(new Devices() { DeviceName = $"测试设备{i + 1}", + DeviceNum = i + 1, IpAddress = $"192.168.1.{i + 1}", }); } @@ -102,6 +103,7 @@ namespace BPASmartClient.DosingSystem devices.Add(new Devices() { DeviceName = $"测试设备{i + 1}", + DeviceNum = i + 1, IpAddress = $"192.168.1.{i + 1}", }); } diff --git a/DosingSystem/Model/SiemensPlc/PlcToComputer.cs b/DosingSystem/Model/SiemensPlc/PlcToComputer.cs index 0bf6dcb9..65ab0fc2 100644 --- a/DosingSystem/Model/SiemensPlc/PlcToComputer.cs +++ b/DosingSystem/Model/SiemensPlc/PlcToComputer.cs @@ -17,7 +17,7 @@ namespace BPASmartClient.DosingSystem public bool Heartbeat { get; set; } /// - /// 接收完成 + /// 接收配方完成 /// public bool ResComplete { get; set; } diff --git a/DosingSystem/View/RecipeControlView.xaml b/DosingSystem/View/RecipeControlView.xaml index 19187468..bf2c21b4 100644 --- a/DosingSystem/View/RecipeControlView.xaml +++ b/DosingSystem/View/RecipeControlView.xaml @@ -338,10 +338,6 @@ ScrollViewer.HorizontalScrollBarVisibility="Disabled"> - @@ -351,8 +347,8 @@ @@ -715,7 +711,7 @@ - @@ -777,27 +773,260 @@ - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - diff --git a/DosingSystem/View/RecipeControlView.xaml.cs b/DosingSystem/View/RecipeControlView.xaml.cs index ca107fff..701a1f1a 100644 --- a/DosingSystem/View/RecipeControlView.xaml.cs +++ b/DosingSystem/View/RecipeControlView.xaml.cs @@ -24,33 +24,39 @@ namespace BPASmartClient.DosingSystem.View public RecipeControlView() { InitializeComponent(); - RadioButtonWait_Click(null,null); + RadioButtonWait_Click(null, null); } - - - private void RadioButtonCompelete_Click(object sender, RoutedEventArgs e) { - repiceList.ItemsSource = RecipeControlViewModel.UserTreeCompelete; - repiceList.Visibility = Visibility.Visible; - repiceListMaking.Visibility = Visibility.Hidden; - - + //repiceList.ItemsSource = RecipeControlViewModel.UserTreeCompelete; + //repiceList.Visibility = Visibility.Visible; + //repiceListMaking.Visibility = Visibility.Hidden; + this.Wait.ItemsSource = RecipeControlViewModel.UserTreeCompelete; + CookingGrid.Visibility = Visibility.Collapsed; + WaitOrCompleteGrid.Visibility = Visibility.Visible; + this.Wait.Visibility = Visibility.Hidden; } private void RadioButtonWait_Click(object sender, RoutedEventArgs e) { - repiceList.ItemsSource = RecipeControlViewModel.UserTreeWait; - repiceList.Visibility = Visibility.Visible; - repiceListMaking.Visibility = Visibility.Hidden; + //repiceList.ItemsSource = RecipeControlViewModel.UserTreeWait; + //repiceList.Visibility = Visibility.Visible; + //repiceListMaking.Visibility = Visibility.Hidden; + this.Wait.ItemsSource = RecipeControlViewModel.UserTreeWait; + CookingGrid.Visibility = Visibility.Collapsed; + WaitOrCompleteGrid.Visibility = Visibility.Visible; + this.Wait.Visibility = Visibility.Visible; + } private void RadioButtonMaking_Click(object sender, RoutedEventArgs e) { - repiceListMaking.Visibility = Visibility.Visible; - repiceList.Visibility = Visibility.Hidden; - + //repiceListMaking.Visibility = Visibility.Visible; + //repiceList.Visibility = Visibility.Hidden; + WaitOrCompleteGrid.Visibility = Visibility.Collapsed; + this.Wait.Visibility = Visibility.Collapsed; + CookingGrid.Visibility = Visibility.Visible; } } } diff --git a/DosingSystem/ViewModel/DeviceListViewModel.cs b/DosingSystem/ViewModel/DeviceListViewModel.cs index 5603ea5f..947d2915 100644 --- a/DosingSystem/ViewModel/DeviceListViewModel.cs +++ b/DosingSystem/ViewModel/DeviceListViewModel.cs @@ -41,6 +41,12 @@ namespace BPASmartClient.DosingSystem.ViewModel public string IpAddress { get { return _mIpAddress; } set { _mIpAddress = value; OnPropertyChanged(); } } private string _mIpAddress; + /// + /// 设备编号 + /// + public int DeviceNum { get { return _mDeviceNum; } set { _mDeviceNum = value; OnPropertyChanged(); } } + private int _mDeviceNum; + public string DeviceName { get { return _mDeviceName; } set { _mDeviceName = value; OnPropertyChanged(); } } private string _mDeviceName; diff --git a/DosingSystem/ViewModel/RecipeControlViewModel.cs b/DosingSystem/ViewModel/RecipeControlViewModel.cs index f044d5fd..f4157cee 100644 --- a/DosingSystem/ViewModel/RecipeControlViewModel.cs +++ b/DosingSystem/ViewModel/RecipeControlViewModel.cs @@ -15,6 +15,7 @@ using BPASmartClient.CustomResource.UserControls.MessageShow; using BPASmartClient.CustomResource.UserControls; using BPASmartClient.Model.柔性味魔方; using BPASmartClient.Model; +using System.Diagnostics; namespace BPASmartClient.DosingSystem.ViewModel { @@ -37,11 +38,11 @@ namespace BPASmartClient.DosingSystem.ViewModel { string ip = Recipes.ElementAt(index).RawMaterials.ElementAt(i).DeviceIp; var device = DeviceInquire.GetInstance.GetDevice(ip); - if (!device.IsConnected) - { - MessageNotify.GetInstance.ShowDialog($"设备 【{device.DeviceName}】 未连接,不允许下发此配方", DialogType.Error); - return; - } + //if (!device.IsConnected) + //{ + // MessageNotify.GetInstance.ShowDialog($"设备 【{device.DeviceName}】 未连接,不允许下发此配方", DialogType.Error); + // return; + //} } } Recipes.ElementAt(index).IsEnable = false; @@ -75,27 +76,89 @@ namespace BPASmartClient.DosingSystem.ViewModel })); CurrentRecipeName = Recipes.ElementAt(index).RecipeName; + #region 配方下发到PLC操作相关 //配方数据写入到输送机 - //SiemensDevice.GetInstance.MySiemens.WriteClass - - foreach (var item in Recipes.ElementAt(index).RawMaterials) + var res = Json.Data.Recipes.FirstOrDefault(p => p.RecipeName == CurrentRecipeName); + List recipeData = new List(); + if (res != null) { - //DeviceInquire.GetInstance.GetDevice(item.DeviceIp)?.Start(item.RawMaterialWeight);//启动并写入每个原料重量 - //var res = DeviceInquire.GetInstance.GetDevice(item.DeviceIp).deviceStatus.DeviceNum; - - - - App.Current.Dispatcher.Invoke(new Action(() => + var tInfo = res.RawMaterials.GroupBy(p => p.Loc);//获取桶号信息 + if (tInfo != null) { - recipeProcesses.Add(new RawMaterialModel() + for (int i = 0; i < tInfo.Count(); i++) { - RawMaterialName = item.RawMaterialName, - RecipeStatus = item.RecipeStatus, - RawMaterialSource = item.RawMaterialSource, - RawMaterialId = item.RawMaterialId, - }); - })); + int data = 0; + for (int m = 0; m < tInfo.ElementAt(i).Count(); m++) + { + var TempName = tInfo.ElementAt(i).ElementAt(m).RawMaterialName; + var tempDevice = DeviceInquire.GetInstance.devices.FirstOrDefault(p => p.DeviceName == TempName); + if (tempDevice != null) + { + data = data.SetBitValue((byte)tempDevice.DeviceNum, true); + } + } + recipeData.Add(data); + } + } } + if (recipeData.Count <= 0) + { + MessageNotify.GetInstance.ShowRunLog("配方数据解析失败"); + return; + } + int offset = 2; + //写入配方数据 + MessageNotify.GetInstance.ShowRunLog("开始写入配方数据"); + recipeData.ForEach(item => + { + SiemensDevice.GetInstance.MySiemens.Write($"DB4.DBD{offset}", item); + offset = offset += 4; + }); + SiemensDevice.GetInstance.MySiemens.Write("DB4.DBD198", recipeData.Count);//配方使用桶数写入 + SiemensDevice.GetInstance.MySiemens.Write("DB4.DBX0.1", true);//配方执行启动 + Stopwatch sw = new Stopwatch(); + App.Current.Dispatcher.Invoke(() => { recipeProcesses.Add(Recipes.ElementAt(index)); }); + sw.Restart(); + while (!GlobalDevice.PlcData.ResComplete) + { + if (sw.ElapsedMilliseconds >= 3000) + { + MessageNotify.GetInstance.ShowRunLog("获取配方下发反馈超时"); + break; + } + if (GlobalDevice.PlcData.ResComplete) SiemensDevice.GetInstance.MySiemens.Write("DB3.DBX0.1", false); + Thread.Sleep(100); + } + #endregion + + //foreach (var item in Recipes.ElementAt(index).RawMaterials) + //{ + // //DeviceInquire.GetInstance.GetDevice(item.DeviceIp)?.Start(item.RawMaterialWeight);//启动并写入每个原料重量 + // //var res = DeviceInquire.GetInstance.GetDevice(item.DeviceIp).deviceStatus.DeviceNum; + // App.Current.Dispatcher.Invoke(new Action(() => + // { + + // //ObservableCollection rawMaterialModels = new ObservableCollection(); + // //rawMaterialModels.Add(new RawMaterialModel() + // //{ + // // RawMaterialName = item.RawMaterialName, + // // RecipeStatus = item.RecipeStatus, + // // RawMaterialSource = item.RawMaterialSource, + // // RawMaterialId = item.RawMaterialId, + // //}); + + // //if (recipeProcesses.Count > 0) + // //{ + // // recipeProcesses.ElementAt(0).RawMaterials.Add(new RawMaterialModel() + // // { + // // RawMaterialName = item.RawMaterialName, + // // RecipeStatus = item.RecipeStatus, + // // RawMaterialSource = item.RawMaterialSource, + // // RawMaterialId = item.RawMaterialId, + // // }); + // //} + // })); + //} Recipes.ElementAt(index).Are.WaitOne();//阻塞,直到当前配方完成 RecipeNames.TryDequeue(out string deviceName); @@ -126,34 +189,57 @@ namespace BPASmartClient.DosingSystem.ViewModel //设备状态显示 if (Recipes.ElementAt(i).RecipeName == CurrentRecipeName) { - string deviceName = DeviceInquire.GetInstance.GetDevice(Recipes.ElementAt(i).RawMaterials.ElementAt(m).DeviceIp).DeviceName; - int index = Array.FindIndex(Recipes.ElementAt(i).RawMaterials.ToArray(), p => p.RawMaterialName == deviceName); - - if (index >= 0 && index < recipeProcesses.Count) + string tempRawMaterialName = DeviceInquire.GetInstance.GetDevice(Recipes.ElementAt(i).RawMaterials.ElementAt(m).DeviceIp).DeviceName; + //int index = Array.FindIndex(Recipes.ElementAt(i).RawMaterials.ToArray(), p => p.RawMaterialName == tempRawMaterialName); + int recIndex = recipeProcesses.ToList().FindIndex(p => p.RecipeName == CurrentRecipeName); + if (recIndex >= 0 && recIndex < recipeProcesses.Count) { - App.Current.Dispatcher.Invoke(new Action(() => { recipeProcesses.ElementAt(index).RecipeStatus = RunStatus; })); - } - } - + int index = recipeProcesses.ElementAt(recIndex).RawMaterials.ToList().FindIndex(p => p.RawMaterialName == tempRawMaterialName); + if (index >= 0 && index < recipeProcesses.ElementAt(recIndex).RawMaterials.Count) + { + App.Current.Dispatcher.Invoke(new Action(() => { recipeProcesses.ElementAt(recIndex).RawMaterials.ElementAt(index).RecipeStatus = RunStatus; })); + } + //App.Current.Dispatcher.Invoke(new Action(() => { recipeProcesses.ElementAt(index).RecipeStatus = RunStatus; })); - var proc = recipeProcesses.Where(p => p.RecipeStatus == 3).ToList(); - if (proc != null && proc.Count > 0 && proc.Count == recipeProcesses.Count) - { - int recipIndex = Array.FindIndex(Recipes.ToArray(), p => p.RecipeName == CurrentRecipeName); - if (recipIndex >= 0 && recipIndex < Recipes.Count) - { - for (int n = 0; n < recipeProcesses.Count; n++) + var proc = recipeProcesses.ElementAt(recIndex).RawMaterials.Where(p => p.RecipeStatus == 3).ToList(); + if (proc != null && proc.Count > 0 && proc.Count == recipeProcesses.Count) { - DeviceInquire.GetInstance.GetDevice(Recipes.ElementAt(recipIndex).RawMaterials.ElementAt(n).DeviceIp).StatusReset();//完成配料的设备运行状态地址写0 - MessageNotify.GetInstance.ShowRunLog(Recipes.ElementAt(recipIndex).RawMaterials.ElementAt(n).DeviceIp); + int recipIndex = Array.FindIndex(Recipes.ToArray(), p => p.RecipeName == CurrentRecipeName); + if (recipIndex >= 0 && recipIndex < Recipes.Count) + { + for (int n = 0; n < recipeProcesses.Count; n++) + { + DeviceInquire.GetInstance.GetDevice(Recipes.ElementAt(recipIndex).RawMaterials.ElementAt(n).DeviceIp).StatusReset();//完成配料的设备运行状态地址写0 + MessageNotify.GetInstance.ShowRunLog(Recipes.ElementAt(recipIndex).RawMaterials.ElementAt(n).DeviceIp); + } + App.Current.Dispatcher.Invoke(new Action(() => { recipeProcesses.Clear(); })); + Recipes.ElementAt(recipIndex).IsEnable = true; + Recipes.ElementAt(recipIndex).Are.Set(); + } } - App.Current.Dispatcher.Invoke(new Action(() => { recipeProcesses.Clear(); })); - Recipes.ElementAt(recipIndex).IsEnable = true; - Recipes.ElementAt(recipIndex).Are.Set(); + } } + //var proc = recipeProcesses.Where(p => p.RecipeStatus == 3).ToList(); + //var proc = recipeProcesses.Where(p => p.RecipeStatus == 3).ToList(); + //if (proc != null && proc.Count > 0 && proc.Count == recipeProcesses.Count) + //{ + // int recipIndex = Array.FindIndex(Recipes.ToArray(), p => p.RecipeName == CurrentRecipeName); + // if (recipIndex >= 0 && recipIndex < Recipes.Count) + // { + // for (int n = 0; n < recipeProcesses.Count; n++) + // { + // DeviceInquire.GetInstance.GetDevice(Recipes.ElementAt(recipIndex).RawMaterials.ElementAt(n).DeviceIp).StatusReset();//完成配料的设备运行状态地址写0 + // MessageNotify.GetInstance.ShowRunLog(Recipes.ElementAt(recipIndex).RawMaterials.ElementAt(n).DeviceIp); + // } + // App.Current.Dispatcher.Invoke(new Action(() => { recipeProcesses.Clear(); })); + // Recipes.ElementAt(recipIndex).IsEnable = true; + // Recipes.ElementAt(recipIndex).Are.Set(); + // } + //} + @@ -173,15 +259,6 @@ namespace BPASmartClient.DosingSystem.ViewModel } Thread.Sleep(100); }), "RecipeControlViewModelStatusInquire"); - //测试数据 - /* RawMaterialModel rawMaterial_1 = new RawMaterialModel { RawMaterialName = "香料_1" }; - RawMaterialModel rawMaterial_2 = new RawMaterialModel { RawMaterialName = "香料_2" }; - RawMaterialModel rawMaterial_3 = new RawMaterialModel { RawMaterialName = "香料_3" }; - RawMaterialModel rawMaterial_4 = new RawMaterialModel { RawMaterialName = "香料_4" }; - ObservableCollection rawMaterials = new ObservableCollection { rawMaterial_1, rawMaterial_2, rawMaterial_3, rawMaterial_4 }; - UserTreeCompelete.Add(new RecipeModel { RecipeName = "完成的香料1", RawMaterials = rawMaterials }); - UserTreeCompelete.Add(new RecipeModel { RecipeName = "完成的香料2", RawMaterials = rawMaterials });*/ - } public RelayCommand StartCommand { get; set; } @@ -196,8 +273,9 @@ namespace BPASmartClient.DosingSystem.ViewModel /// /// 当前正在制作的配方 /// + public static ObservableCollection recipeProcesses { get; set; } = new ObservableCollection(); + //public static ObservableCollection recipeProcesses { get; set; } = new ObservableCollection(); - public static ObservableCollection recipeProcesses { get; set; } = new ObservableCollection(); /// /// 等待制作的配方 /// @@ -213,18 +291,34 @@ namespace BPASmartClient.DosingSystem.ViewModel if (o == null) return; if (o is string id) { - var res = recipeProcesses.FirstOrDefault(p => p.RawMaterialId == id); - if (res != null) + var Recipe = recipeProcesses.FirstOrDefault(p => p.RecipeName == CurrentRecipeName); + if (Recipe != null) { - if (res.RecipeStatus == 3) - { - res.RecipeStatus = 1; - } - else + var res = Recipe.RawMaterials.FirstOrDefault(p => p.RawMaterialId == id); + if (res != null) { - res.RecipeStatus = 3; + if (res.RecipeStatus == 3) + { + res.RecipeStatus = 1; + } + else + { + res.RecipeStatus = 3; + } } } + //var res = recipeProcesses.FirstOrDefault(p => p.RawMaterialId == id); + //if (res != null) + //{ + // if (res.RecipeStatus == 3) + // { + // res.RecipeStatus = 1; + // } + // else + // { + // res.RecipeStatus = 3; + // } + //} } } } diff --git a/SmartClient.sln b/SmartClient.sln index 720ca8d9..356c5e03 100644 --- a/SmartClient.sln +++ b/SmartClient.sln @@ -158,10 +158,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BeDesignerSCADA", "BeDesign EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmart.RecipeManagement", "BPASmart.RecipeManagement\BPASmart.RecipeManagement.csproj", "{28EBFC11-184A-4B88-A7B3-84F3FD768520}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PermissionManagement", "PermissionManagement\PermissionManagement.csproj", "{BE6E7BC1-F250-4D11-8051-1B0F93AD2401}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmart.SmallBatchingSystem", "BPASmart.SmallBatchingSystem\BPASmart.SmallBatchingSystem.csproj", "{DB6DC970-859C-4C63-AE9B-BA415D56CECD}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmart.ConfigurationSoftware", "BPASmart.ConfigurationSoftware\BPASmart.ConfigurationSoftware.csproj", "{897F8379-3301-4CBE-9BCA-AF7FD2F963A9}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmart.UserManagement", "BPASmart.UserManagement\BPASmart.UserManagement.csproj", "{06F30619-AD37-4CA0-838F-0431867E0932}" @@ -174,8 +170,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.SmallBatchin EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.MorkMOC", "BPASmartClient.MorkMOC\BPASmartClient.MorkMOC.csproj", "{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.DosingHKProject", "BPASmartClient.DosingProject\BPASmartClient.DosingHKProject.csproj", "{6763F73A-555C-41E2-91F7-ADF26C59A946}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmart.MenuLoad", "BPASmart.MenuLoad\BPASmart.MenuLoad.csproj", "{7A7547D3-F2EF-4DA4-AD45-D1B49210082B}" EndProject Global @@ -1492,46 +1486,6 @@ Global {28EBFC11-184A-4B88-A7B3-84F3FD768520}.Release|x64.Build.0 = Release|Any CPU {28EBFC11-184A-4B88-A7B3-84F3FD768520}.Release|x86.ActiveCfg = Release|Any CPU {28EBFC11-184A-4B88-A7B3-84F3FD768520}.Release|x86.Build.0 = Release|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Debug|ARM.ActiveCfg = Debug|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Debug|ARM.Build.0 = Debug|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Debug|ARM64.ActiveCfg = Debug|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Debug|ARM64.Build.0 = Debug|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Debug|x64.ActiveCfg = Debug|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Debug|x64.Build.0 = Debug|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Debug|x86.ActiveCfg = Debug|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Debug|x86.Build.0 = Debug|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Release|Any CPU.Build.0 = Release|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Release|ARM.ActiveCfg = Release|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Release|ARM.Build.0 = Release|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Release|ARM64.ActiveCfg = Release|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Release|ARM64.Build.0 = Release|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Release|x64.ActiveCfg = Release|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Release|x64.Build.0 = Release|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Release|x86.ActiveCfg = Release|Any CPU - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401}.Release|x86.Build.0 = Release|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Debug|ARM.ActiveCfg = Debug|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Debug|ARM.Build.0 = Debug|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Debug|ARM64.ActiveCfg = Debug|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Debug|ARM64.Build.0 = Debug|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Debug|x64.ActiveCfg = Debug|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Debug|x64.Build.0 = Debug|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Debug|x86.ActiveCfg = Debug|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Debug|x86.Build.0 = Debug|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Release|Any CPU.Build.0 = Release|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Release|ARM.ActiveCfg = Release|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Release|ARM.Build.0 = Release|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Release|ARM64.ActiveCfg = Release|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Release|ARM64.Build.0 = Release|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Release|x64.ActiveCfg = Release|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Release|x64.Build.0 = Release|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Release|x86.ActiveCfg = Release|Any CPU - {DB6DC970-859C-4C63-AE9B-BA415D56CECD}.Release|x86.Build.0 = Release|Any CPU {897F8379-3301-4CBE-9BCA-AF7FD2F963A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {897F8379-3301-4CBE-9BCA-AF7FD2F963A9}.Debug|Any CPU.Build.0 = Debug|Any CPU {897F8379-3301-4CBE-9BCA-AF7FD2F963A9}.Debug|ARM.ActiveCfg = Debug|Any CPU @@ -1652,26 +1606,6 @@ Global {D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Release|x64.Build.0 = Release|Any CPU {D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Release|x86.ActiveCfg = Release|Any CPU {D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Release|x86.Build.0 = Release|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Debug|ARM.ActiveCfg = Debug|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Debug|ARM.Build.0 = Debug|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Debug|ARM64.ActiveCfg = Debug|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Debug|ARM64.Build.0 = Debug|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Debug|x64.ActiveCfg = Debug|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Debug|x64.Build.0 = Debug|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Debug|x86.ActiveCfg = Debug|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Debug|x86.Build.0 = Debug|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Release|Any CPU.Build.0 = Release|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Release|ARM.ActiveCfg = Release|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Release|ARM.Build.0 = Release|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Release|ARM64.ActiveCfg = Release|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Release|ARM64.Build.0 = Release|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Release|x64.ActiveCfg = Release|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Release|x64.Build.0 = Release|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Release|x86.ActiveCfg = Release|Any CPU - {6763F73A-555C-41E2-91F7-ADF26C59A946}.Release|x86.Build.0 = Release|Any CPU {7A7547D3-F2EF-4DA4-AD45-D1B49210082B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7A7547D3-F2EF-4DA4-AD45-D1B49210082B}.Debug|Any CPU.Build.0 = Debug|Any CPU {7A7547D3-F2EF-4DA4-AD45-D1B49210082B}.Debug|ARM.ActiveCfg = Debug|Any CPU @@ -1764,15 +1698,12 @@ Global {06F0B369-0483-46DD-82D2-70431FB505C1} = {7B0175AD-BB74-4A98-B9A7-1E289032485E} {DF8B4C38-39DE-4220-AB60-885CAE6D1E47} = {06F0B369-0483-46DD-82D2-70431FB505C1} {28EBFC11-184A-4B88-A7B3-84F3FD768520} = {CDC1E762-5E1D-4AE1-9DF2-B85761539086} - {BE6E7BC1-F250-4D11-8051-1B0F93AD2401} = {CDC1E762-5E1D-4AE1-9DF2-B85761539086} - {DB6DC970-859C-4C63-AE9B-BA415D56CECD} = {CDC1E762-5E1D-4AE1-9DF2-B85761539086} {897F8379-3301-4CBE-9BCA-AF7FD2F963A9} = {CDC1E762-5E1D-4AE1-9DF2-B85761539086} {06F30619-AD37-4CA0-838F-0431867E0932} = {CDC1E762-5E1D-4AE1-9DF2-B85761539086} {2DB084E8-B951-4D71-A203-FD0902EBA2C6} = {CDC1E762-5E1D-4AE1-9DF2-B85761539086} {E7CC45BF-7393-4BA7-A9AD-B1A1F5B265F3} = {CDC1E762-5E1D-4AE1-9DF2-B85761539086} {BA588F22-87FB-4124-AF62-CA8DC492ED7D} = {8712125E-14CD-4E1B-A1CE-4BDE03805942} {D5081D7B-3EBB-42C7-8FB9-A889870D08C2} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F} - {6763F73A-555C-41E2-91F7-ADF26C59A946} = {8712125E-14CD-4E1B-A1CE-4BDE03805942} {7A7547D3-F2EF-4DA4-AD45-D1B49210082B} = {06F0B369-0483-46DD-82D2-70431FB505C1} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution