Browse Source

小配料上位机功能调整优化

样式分支
pry 1 year ago
parent
commit
1b5ea882cc
28 changed files with 272 additions and 209 deletions
  1. +1
    -1
      BPASmart.ConfigurationSoftware/BPASmart.ConfigurationSoftware.csproj
  2. +1
    -1
      BPASmart.PageLoad/BPASmart.PageLoad.csproj
  3. +1
    -1
      BPASmart.Server/BPASmart.Server.csproj
  4. +1
    -1
      BPASmart.VariableManager/BPASmart.VariableManager.csproj
  5. +1
    -0
      BPASmartClient.CustomResource/BPASmartClient.CustomResource.csproj
  6. +1
    -1
      BPASmartClient.CustomResource/Pages/Model/MenuManage.cs
  7. +26
    -15
      BPASmartClient.CustomResource/Pages/View/DebugLogView.xaml
  8. +2
    -2
      BPASmartClient.CustomResource/Pages/View/LoginView.xaml
  9. +29
    -12
      BPASmartClient.CustomResource/Pages/ViewModel/DebugLogViewModel.cs
  10. +35
    -0
      BPASmartClient.CustomResource/Pages/ViewModel/MainViewModel.cs
  11. +14
    -96
      BPASmartClient.SmallBatchingSystem/App.xaml.cs
  12. +6
    -2
      BPASmartClient.SmallBatchingSystem/BPASmartClient.SmallBatchingSystem.csproj
  13. +33
    -12
      BPASmartClient.SmallBatchingSystem/Services/Control.cs
  14. +8
    -3
      BPASmartClient.SmallBatchingSystem/Services/PlcServer.cs
  15. +2
    -0
      BPASmartClient.SmallBatchingSystem/ViewModels/NewOutletViewModel.cs
  16. +2
    -9
      BPASmartClient.SmallBatchingSystem/ViewModels/NewRecipeViewModel.cs
  17. +2
    -0
      BPASmartClient.SmallBatchingSystem/ViewModels/NewSiloViewModel.cs
  18. +5
    -1
      BPASmartClient.SmallBatchingSystem/ViewModels/OutletManagementViewModel.cs
  19. +32
    -9
      BPASmartClient.SmallBatchingSystem/ViewModels/RecipeControlViewModel.cs
  20. +10
    -2
      BPASmartClient.SmallBatchingSystem/ViewModels/RecipeViewModel.cs
  21. +7
    -1
      BPASmartClient.SmallBatchingSystem/ViewModels/SiloManagementViewModel.cs
  22. +1
    -0
      BPASmartClient.SmallBatchingSystem/Views/GrindArenaceousView.xaml
  23. +23
    -12
      BPASmartClient.SmallBatchingSystem/Views/RecipeControlView.xaml
  24. +4
    -2
      BPASmartClient.SmallBatchingSystem/Views/RecipeView.xaml
  25. BIN
     
  26. +1
    -1
      ComputerTestDemo/ComputerTestDemo.csproj
  27. +1
    -1
      DosingSystem/Model/DeviceInquire.cs
  28. +23
    -24
      SmartClient.sln

+ 1
- 1
BPASmart.ConfigurationSoftware/BPASmart.ConfigurationSoftware.csproj View File

@@ -20,7 +20,7 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="BPA.Helper" Version="1.0.15" />
<PackageReference Include="BPA.Helper" Version="1.0.17" />
</ItemGroup>

<ItemGroup>


+ 1
- 1
BPASmart.PageLoad/BPASmart.PageLoad.csproj View File

@@ -8,7 +8,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="BPA.Helper" Version="1.0.15" />
<PackageReference Include="BPA.Helper" Version="1.0.17" />
</ItemGroup>

<ItemGroup>


+ 1
- 1
BPASmart.Server/BPASmart.Server.csproj View File

@@ -9,7 +9,7 @@

<ItemGroup>
<PackageReference Include="BPA.Communication" Version="1.0.19" />
<PackageReference Include="BPA.Helper" Version="1.0.15" />
<PackageReference Include="BPA.Helper" Version="1.0.17" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.9" />
</ItemGroup>



+ 1
- 1
BPASmart.VariableManager/BPASmart.VariableManager.csproj View File

@@ -30,7 +30,7 @@

<ItemGroup>
<PackageReference Include="BPA.Communication" Version="1.0.19" />
<PackageReference Include="BPA.Helper" Version="1.0.15" />
<PackageReference Include="BPA.Helper" Version="1.0.17" />
</ItemGroup>

<ItemGroup>


+ 1
- 0
BPASmartClient.CustomResource/BPASmartClient.CustomResource.csproj View File

@@ -385,6 +385,7 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="BPA.Helper" Version="1.0.17" />
<PackageReference Include="BPA.Message" Version="1.0.46" />
<PackageReference Include="MahApps.Metro.IconPacks.FontAwesome" Version="4.11.0" />
<PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" />


+ 1
- 1
BPASmartClient.CustomResource/Pages/Model/MenuManage.cs View File

@@ -96,7 +96,7 @@ namespace BPASmartClient.CustomResource.Pages.Model
/// 子菜单权限管理
/// </summary>
public Permission[] SubMenuPermission { get { return _mSubMenuPermission; } set { _mSubMenuPermission = value; OnPropertyChanged(); } }
private Permission[] _mSubMenuPermission;
private Permission[] _mSubMenuPermission = new Permission[] { Permission.管理员 };

/// <summary>
/// 切换界面路径


+ 26
- 15
BPASmartClient.CustomResource/Pages/View/DebugLogView.xaml View File

@@ -19,21 +19,32 @@
Margin="20"
HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility="Hidden">
<TextBlock
FontFamily="黑体"
FontSize="16"
Foreground="#20FDFA"
LineHeight="30"
Text="{Binding Message}"
TextWrapping="Wrap">
<TextBlock.Effect>
<DropShadowEffect
Direction="0"
Opacity="0.5"
ShadowDepth="5"
Color="#20aefe" />
</TextBlock.Effect>
</TextBlock>

<ItemsControl ItemsSource="{Binding MessageModels}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock
FontFamily="黑体"
FontSize="16"
Foreground="{Binding Forground}"
LineHeight="30"
Text="{Binding LogInfo}"
TextWrapping="Wrap">
<!--<TextBlock.Effect>
<DropShadowEffect
Direction="0"
Opacity="0.5"
ShadowDepth="5"
Color="#20aefe" />
</TextBlock.Effect>-->
</TextBlock>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>


</ScrollViewer>

</Grid>


+ 2
- 2
BPASmartClient.CustomResource/Pages/View/LoginView.xaml View File

@@ -14,7 +14,7 @@
Background="{x:Null}"
Topmost="False"
WindowStartupLocation="CenterScreen"
WindowState="Normal"
WindowState="Maximized"
WindowStyle="None"
mc:Ignorable="d">

@@ -228,7 +228,7 @@

<Grid>
<Grid.Background>
<ImageBrush ImageSource="/BPASmartClient.CustomResource;component/Image/Login.png"/>
<ImageBrush ImageSource="/BPASmartClient.CustomResource;component/Image/Login.png" />
</Grid.Background>
<!--<MediaElement
Name="player"


+ 29
- 12
BPASmartClient.CustomResource/Pages/ViewModel/DebugLogViewModel.cs View File

@@ -5,8 +5,10 @@ using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using BPASmartClient.Message;
using Microsoft.Toolkit.Mvvm.ComponentModel;
using BPA.Helper;
using System.Collections.ObjectModel;
using System.Windows.Media;

namespace BPASmartClient.CustomResource.Pages.ViewModel
{
@@ -14,21 +16,36 @@ namespace BPASmartClient.CustomResource.Pages.ViewModel
{
public DebugLogViewModel()
{
MessageLog.GetInstance.DebugLog = new Action<string>((o) =>
{
Message = MessageLog.GetInstance.DebugLogInfo;
});

//MessageLog.GetInstance.NotifyShow = new Action<string>((o) => { });
//MessageLog.GetInstance.DebugLog = new Action<string>((o) =>
// {
// Message = MessageLog.GetInstance.DebugLogInfo;
// });
}

public static string Message { get { return _mMessage; } set { _mMessage = value; OnStaticPropertyChanged(); } }
private static string _mMessage = string.Empty;
public static ObservableCollection<MessageModel> MessageModels { get; set; } = new ObservableCollection<MessageModel>();

//public static string Message { get { return _mMessage; } set { _mMessage = value; OnStaticPropertyChanged(); } }
//private static string _mMessage = string.Empty;

//public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;
//private static void OnStaticPropertyChanged([CallerMemberName] string PropName = "")
//{
// StaticPropertyChanged?.Invoke(null, new PropertyChangedEventArgs(PropName));
//}

public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;
private static void OnStaticPropertyChanged([CallerMemberName] string PropName = "")
{
StaticPropertyChanged?.Invoke(null, new PropertyChangedEventArgs(PropName));
}

}

public class MessageModel : ObservableObject
{
public string LogInfo { get { return _mLogInfo; } set { _mLogInfo = value; OnPropertyChanged(); } }
private string _mLogInfo;

public Brush Forground { get { return _mForground; } set { _mForground = value; OnPropertyChanged(); } }
private Brush _mForground;

}

}

+ 35
- 0
BPASmartClient.CustomResource/Pages/ViewModel/MainViewModel.cs View File

@@ -6,6 +6,7 @@ using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using BPASmartClient.CustomResource.Pages.Model;
using BPASmartClient.Helper;
using BPASmartClient.Model;
@@ -19,6 +20,40 @@ namespace BPASmartClient.CustomResource.Pages.ViewModel
public MainViewModel()
{
NavChangedCommand = new RelayCommand<object>(DoNavChanged);
BPA.Helper.MessageLog.GetInstance.NotifyShow = new Action<string>((o) =>
{
Application.Current.Dispatcher.Invoke(() =>
{
//ff20aefe
var temp = new MessageModel()
{
LogInfo = o,
Forground = new SolidColorBrush(Color.FromArgb(255, 32, 174, 254))
};
if (DebugLogViewModel.MessageModels.Count > 0)
DebugLogViewModel.MessageModels.Insert(0, temp);
else
DebugLogViewModel.MessageModels.Add(temp);
});
});
BPA.Helper.MessageLog.GetInstance.NotifyShowEx = new Action<string>((o) =>
{
Application.Current.Dispatcher.Invoke(() =>
{
//FFF53F62
var temp = new MessageModel()
{
LogInfo = o,
Forground = new SolidColorBrush(Color.FromArgb(255, 245, 63, 98))
};
if (DebugLogViewModel.MessageModels.Count > 0)
DebugLogViewModel.MessageModels.Insert(0, temp);
else
DebugLogViewModel.MessageModels.Add(temp);
});


});
menuModels = MenuManage.GetInstance.menuModels;
PermissionChange();
ActionManage.GetInstance.Register(new Action(() =>


+ 14
- 96
BPASmartClient.SmallBatchingSystem/App.xaml.cs View File

@@ -22,19 +22,20 @@ namespace BPASmartClient.SmallBatchingSystem
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
Json<ConfigInfoModel>.Read();
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Json<ConfigInfoModel>.Read();
Json<CommunicationPar>.Read();
MenuInit();
Control.GetInstance.Init();
//SiloServer siloServer = new SiloServer();
MainView mv = new MainView();
mv.TitleName = "黑菠萝配料系统";
Control.GetInstance.Init();
mv.TitleName = "黑菠萝自动化配料系统";
mv.Show();
//LoginView lv = new LoginView();
//var res = lv.ShowDialog();
//if (res != null && res == true)
//{
// MessageLog.GetInstance.ShowUserLog("用户登录");
mv.Show();
// Control.GetInstance.OperationLog("用户登录");
// mv.Show();
//}
//else
// mv.Close();
@@ -48,8 +49,8 @@ namespace BPASmartClient.SmallBatchingSystem
RecipeManage.Add(new SubMenumodel()
{
SubMenuName = "料仓管理",
SubMenuVisibility = Visibility.Visible,
AssemblyName = "BPASmartClient.SmallBatchingSystem",
SubMenuVisibility = Visibility.Visible,
ToggleWindowPath = "Views.SiloManagementView"
});

@@ -88,50 +89,11 @@ namespace BPASmartClient.SmallBatchingSystem
});
#endregion

//#region 参数设置
//ObservableCollection<SubMenumodel> ParSet = new ObservableCollection<SubMenumodel>();
//ParSet.Add(new SubMenumodel()
//{
// SubMenuName = "原料参数设置",
// SubMenuPermission = new Permission[] { Permission.管理员 },
// AssemblyName = "BPASmartClient.DosingSystem",
// ToggleWindowPath = "View.DeviceMaterialParView"
//});

//MenuManage.GetInstance.menuModels.Add(new MenuModel()
//{
// MainMenuIcon = "&#xe62d;",
// MainMenuName = "参数设置",
// Alias = "Parameter Set",
// subMenumodels = ParSet,
//});
//#endregion

#region 手动控制
ObservableCollection<SubMenumodel> ManualControl = new ObservableCollection<SubMenumodel>();
ManualControl.Add(new SubMenumodel()
{
SubMenuName = "手动控制",
SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.技术员 },
AssemblyName = "BPASmartClient.DosingSystem",
ToggleWindowPath = "View.ManualControlView"
});

MenuManage.GetInstance.menuModels.Add(new MenuModel()
{
MainMenuIcon = "&#xe622;",
MainMenuName = "手动控制",
Alias = "Parameter Set",
subMenumodels = ManualControl,
});
#endregion

#region 消息日志
ObservableCollection<SubMenumodel> InfoLog = new ObservableCollection<SubMenumodel>();
InfoLog.Add(new SubMenumodel()
{
SubMenuName = "操作日志",
SubMenuPermission = new Permission[] { Permission.操作员, Permission.管理员, Permission.技术员 },
AssemblyName = "BPASmartClient.CustomResource",
SubMenuVisibility = Visibility.Visible,
ToggleWindowPath = "Pages.View.UserLogView"
@@ -140,38 +102,19 @@ namespace BPASmartClient.SmallBatchingSystem
InfoLog.Add(new SubMenumodel()
{
SubMenuName = "运行日志",
SubMenuPermission = new Permission[] { Permission.操作员, Permission.管理员, Permission.技术员 },
AssemblyName = "BPASmartClient.CustomResource",
SubMenuVisibility = Visibility.Visible,
ToggleWindowPath = "Pages.View.RunLogView"
});

InfoLog.Add(new SubMenumodel()
{
SubMenuName = "报警记录",
SubMenuPermission = new Permission[] { Permission.操作员, Permission.管理员, Permission.技术员 },
AssemblyName = "BPASmartClient.CustomResource",
SubMenuVisibility = Visibility.Visible,
ToggleWindowPath = "Pages.View.AlarmView"
});

InfoLog.Add(new SubMenumodel()
{
SubMenuName = "调试日志",
SubMenuPermission = new Permission[] { Permission.操作员, Permission.管理员, Permission.技术员, Permission.技术员 },
AssemblyName = "BPASmartClient.CustomResource",
SubMenuVisibility = Visibility.Visible,
ToggleWindowPath = "Pages.View.DebugLogView"
});

InfoLog.Add(new SubMenumodel()
{
SubMenuName = "报表数据",
SubMenuPermission = new Permission[] { Permission.操作员, Permission.管理员, Permission.技术员, Permission.技术员 },
AssemblyName = "BPASmartClient.CustomResource",
ToggleWindowPath = "Pages.View.ReportView"
});

MenuManage.GetInstance.menuModels.Add(new MenuModel()
{
MainMenuIcon = "&#xe668;",
@@ -181,55 +124,28 @@ namespace BPASmartClient.SmallBatchingSystem
});
#endregion

#region 硬件设备监控
ObservableCollection<SubMenumodel> DeviceMonitor = new ObservableCollection<SubMenumodel>();
DeviceMonitor.Add(new SubMenumodel()
{
SubMenuName = "原料设备列表",
SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.技术员 },
AssemblyName = "BPASmartClient.DosingSystem",
ToggleWindowPath = "View.DeviceListView"
});

DeviceMonitor.Add(new SubMenumodel()
{
SubMenuName = "设备状态",
SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.技术员 },
AssemblyName = "BPASmartClient.DosingSystem",
ToggleWindowPath = "View.HardwareStatusView"
});

MenuManage.GetInstance.menuModels.Add(new MenuModel()
{
MainMenuIcon = "&#xe603;",
MainMenuName = "设备监控",
Alias = "Device Monitor",
subMenumodels = DeviceMonitor,
});
#endregion

#region 用户管理
ObservableCollection<SubMenumodel> UserManager = new ObservableCollection<SubMenumodel>();
UserManager.Add(new SubMenumodel()
{
SubMenuName = "用户登录",
SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.技术员 },
AssemblyName = "BPASmartClient.CustomResource",
SubMenuVisibility = Visibility.Visible,
ToggleWindowPath = "Pages.View.SubPagLoginView"
});

UserManager.Add(new SubMenumodel()
{
SubMenuName = "密码修改",
SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.技术员 },
AssemblyName = "BPASmartClient.CustomResource",
SubMenuVisibility = Visibility.Visible,
ToggleWindowPath = "Pages.View.PasswordChangeView"
});
UserManager.Add(new SubMenumodel()
{
SubMenuName = "用户管理",
SubMenuPermission = new Permission[] { Permission.管理员 },
AssemblyName = "BPASmartClient.CustomResource",
SubMenuVisibility = Visibility.Visible,
ToggleWindowPath = "Pages.View.UserManagerView"
});

@@ -245,12 +161,14 @@ namespace BPASmartClient.SmallBatchingSystem

private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
throw new NotImplementedException();
Json<ConfigInfoModel>.Save();
Json<CommunicationPar>.Save();
}

protected override void OnExit(ExitEventArgs e)
{
base.OnExit(e);
Json<CommunicationPar>.Save();
}
}
}

+ 6
- 2
BPASmartClient.SmallBatchingSystem/BPASmartClient.SmallBatchingSystem.csproj View File

@@ -5,24 +5,28 @@
<TargetFramework>net6.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWPF>true</UseWPF>
<ApplicationIcon>hbl.ico</ApplicationIcon>
</PropertyGroup>

<ItemGroup>
<None Remove="Fonts\iconfont.ttf" />
</ItemGroup>

<ItemGroup>
<Content Include="hbl.ico" />
</ItemGroup>

<ItemGroup>
<Folder Include="Images\" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="BPA.Communication" Version="1.0.19" />
<PackageReference Include="BPA.Helper" Version="1.0.15" />
<PackageReference Include="BPA.Helper" Version="1.0.17" />
<PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\BPASmart.RecipeManagement\BPASmart.RecipeManagement.csproj" />
<ProjectReference Include="..\BPASmartClient.CustomResource\BPASmartClient.CustomResource.csproj" />
<ProjectReference Include="..\BPASmartClient.Modbus\BPASmartClient.Modbus.csproj" />
</ItemGroup>


+ 33
- 12
BPASmartClient.SmallBatchingSystem/Services/Control.cs View File

@@ -9,6 +9,8 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
using BPASmartClient.CustomResource.Pages.Model;
using BPASmartClient.CustomResource.UserControls.MessageShow;
using BPASmartClient.CustomResource.UserControls;

namespace BPASmartClient.SmallBatchingSystem
{
@@ -45,18 +47,18 @@ namespace BPASmartClient.SmallBatchingSystem
{
PlcServer.GetInstance.WriteData("VW302", (ushort)temp);//设置出料口位置
PlcServer.GetInstance.WriteData("M10.0", true);//定位启动
Message($"启动定位,出料口位置:{temp}");
RunLog($"启动定位,出料口位置:{temp}");
int index = temp - 1;
if (index >= 0)
{
Message("等待定位完成");
RunLog("等待定位完成");
while (!PlcDataModel.TargetLocComplete && !IsCancel) Thread.Sleep(1);//等待定位反馈
if (IsCancel) break;
Message("定位完成");
RunLog("定位完成");
PlcServer.GetInstance.WriteData("M20.0", false);
while (PlcDataModel.TargetLocComplete && !IsCancel) Thread.Sleep(1);
if (IsCancel) break;
Message("定位完成,复位成功");
RunLog("定位完成,复位成功");
foreach (var temp1 in recipeInfo.SiloInfoModels)
{
var rest = Json<ConfigInfoModel>.Data.OutletInfoModels.FirstOrDefault(p => p.SiloInfos.FirstOrDefault(s => s.Contains(temp1.SiloName)) != null);
@@ -66,17 +68,17 @@ namespace BPASmartClient.SmallBatchingSystem
if (res != null)
{
StatusNotify(res.SiloName, Status.正在配料);
Message($"写重量地址:{GetWeightAdd(res.SiloLoc)},重量:{temp1.SiloWeight}");
RunLog($"写重量地址:{GetWeightAdd(res.SiloLoc)},重量:{temp1.SiloWeight}");
PlcServer.GetInstance.WriteData(GetWeightAdd(res.SiloLoc), (ushort)temp1.SiloWeight);
Message($"写启动信号地址:{GetStartSingleAdd(res.SiloLoc)}");
RunLog($"写启动信号地址:{GetStartSingleAdd(res.SiloLoc)}");
PlcServer.GetInstance.WriteData(GetStartSingleAdd(res.SiloLoc), true);
while (!PlcDataModel.BatchingCompleted && !IsCancel) Thread.Sleep(1);//等待出料完成
if (IsCancel) break;
Message("出料完成,复位出料完成状态");
RunLog("出料完成,复位出料完成状态");
PlcServer.GetInstance.WriteData("M4.0", false);//复位出料完成信号
while (PlcDataModel.BatchingCompleted && !IsCancel) Thread.Sleep(1);//等待出料完成信号复位成功
if (IsCancel) break;
Message("出料完成复位成功");
RunLog("出料完成复位成功");
StatusNotify(res.SiloName, Status.配料完成);
}
}
@@ -87,12 +89,12 @@ namespace BPASmartClient.SmallBatchingSystem

if (!IsCancel)
{
Message($"写入配方执行完成信号");
RunLog($"写入配方执行完成信号");
PlcServer.GetInstance.WriteData("M10.4", true);
Message("等待配方执行完成");
RunLog("等待配方执行完成");
while (!PlcDataModel.RecipeBatchingComplete && !IsCancel) Thread.Sleep(1);
if (IsCancel) break;
Message($"【{recipeInfo.RecipeName}】配方执行完成");
RunLog($"【{recipeInfo.RecipeName}】配方执行完成");
ActionManage.GetInstance.Send("GrindArenaceousCancel");
}
}
@@ -142,12 +144,31 @@ namespace BPASmartClient.SmallBatchingSystem
ActionManage.GetInstance.Send("StatusNotify", new RecipeStatus() { RawMaterialName = SiloName, Status = Status.ToString() });
}

private void Message(string info)
public void RunLog(string info)
{
BPASmartClient.CustomResource.Pages.Model.MessageLog.GetInstance.ShowRunLog(info);
Debug.WriteLine($"{DateTime.Now.ToString("HH:mm:ss")}:{info}");
}

public void OperationLog(string info)
{
BPASmartClient.CustomResource.Pages.Model.MessageLog.GetInstance.ShowUserLog(info);
Debug.WriteLine($"{DateTime.Now.ToString("HH:mm:ss")}:{info}");
}

public void DebugLog(string info)
{
BPASmartClient.Message.MessageLog.GetInstance.DebugLog(info);
}

public void NotifyPrompt(string info)
{
App.Current.Dispatcher.Invoke(() =>
{
NoticeDemoViewModel.OpenMsg(EnumPromptType.Success, App.MainWindow, "提示", info);
});
}

/// <summary>
/// 获取启动信号地址
/// </summary>


+ 8
- 3
BPASmartClient.SmallBatchingSystem/Services/PlcServer.cs View File

@@ -20,6 +20,7 @@ namespace BPASmartClient.SmallBatchingSystem

public void Connect()
{
MessageLog.GetInstance.Show($"开始连接设备,【IP = {Json<CommunicationPar>.Data.Host} 】,【 Port = {Json<CommunicationPar>.Data.Port} 】");
Communication.IsReconnect = true;
Communication.ConnectOk = new Action(() =>
{
@@ -38,7 +39,7 @@ namespace BPASmartClient.SmallBatchingSystem
PlcDataModel.BatchingCompleted = bools1[0];
}

var res2 = ReadData("M13.3", 1);//配方配料完成
var res2 = ReadData("M13.3", 1);//配方配料完成,托盘在放碗或取碗位置
if (res2 != null && res2 is bool[] bools2 && bools2.Length == 1)
{
PlcDataModel.RecipeBatchingComplete = bools2[0];
@@ -52,12 +53,16 @@ namespace BPASmartClient.SmallBatchingSystem

public void WriteData(string address, object value)
{
if (address != null && value != null)
Communication.Write(address, value);
if (Communication.Connected)
{
if (address != null && value != null)
Communication.Write(address, value);
}
}

public object ReadData(string address, int length)
{
if (!Communication.Connected) return default;
object res = null;
if (address != null)
res = Communication.Read(address, (ushort)length);


+ 2
- 0
BPASmartClient.SmallBatchingSystem/ViewModels/NewOutletViewModel.cs View File

@@ -41,6 +41,7 @@ namespace BPASmartClient.SmallBatchingSystem.ViewModels
Json<ConfigInfoModel>.Data.OutletInfoModels.ElementAt(Index).OutletName = OutletName;
Json<ConfigInfoModel>.Data.OutletInfoModels.ElementAt(Index).OutletLoc = OutletLoc;
Json<ConfigInfoModel>.Data.OutletInfoModels.ElementAt(Index).SiloInfos = SileNames;
Control.GetInstance.OperationLog($"{OutletName} 编辑完成");
}
else
{
@@ -50,6 +51,7 @@ namespace BPASmartClient.SmallBatchingSystem.ViewModels
OutletName = OutletName,
SiloInfos = SileNames
});
Control.GetInstance.OperationLog($"{OutletName} 添加成功");
}
ActionManage.GetInstance.Send("NewOutletViewClose");
});


+ 2
- 9
BPASmartClient.SmallBatchingSystem/ViewModels/NewRecipeViewModel.cs View File

@@ -12,7 +12,6 @@ namespace BPASmartClient.SmallBatchingSystem.ViewModels
{
public class NewRecipeViewModel : BaseModel
{
//int Index = -1;
public NewRecipeViewModel()
{
Json<ConfigInfoModel>.Data.SiloInfoModels.ToList()?.ForEach(item => { SileName.Add(item.SiloName); });
@@ -41,6 +40,7 @@ namespace BPASmartClient.SmallBatchingSystem.ViewModels
{
Json<ConfigInfoModel>.Data.Recipes.ElementAt(Index).SiloInfoModels.Add(item);
});
Control.GetInstance.OperationLog($"{RecipeName} 编辑完成");
}
else
{
@@ -49,6 +49,7 @@ namespace BPASmartClient.SmallBatchingSystem.ViewModels
RecipeName = RecipeName,
SiloInfoModels = SiloInfos
});
Control.GetInstance.OperationLog($"{RecipeName} 添加成功");
}
ActionManage.GetInstance.Send("NewRecipeViewModelClose");
});
@@ -66,14 +67,6 @@ namespace BPASmartClient.SmallBatchingSystem.ViewModels
public string RecipeName { get { return _mRecipeName; } set { _mRecipeName = value; OnPropertyChanged(); } }
private string _mRecipeName;

//public RelayCommand AddCommand { get; set; }

//public RelayCommand CnacelCommand { get; set; }

//public RelayCommand SaveCommand { get; set; }

//public RelayCommand<object> RemoveCommand { get; set; }

public ObservableCollection<RecipeRawMaterialInfo> SiloInfos { get; set; } = new ObservableCollection<RecipeRawMaterialInfo>();

public ObservableCollection<string> SileName { get; set; } = new ObservableCollection<string>();


+ 2
- 0
BPASmartClient.SmallBatchingSystem/ViewModels/NewSiloViewModel.cs View File

@@ -20,6 +20,7 @@ namespace BPASmartClient.SmallBatchingSystem.ViewModels
{
Json<ConfigInfoModel>.Data.SiloInfoModels.ElementAt(Index).SiloName = SiloInfoModelObj.SiloName;
Json<ConfigInfoModel>.Data.SiloInfoModels.ElementAt(Index).SiloLoc = SiloInfoModelObj.SiloLoc;
Control.GetInstance.OperationLog($"{SiloInfoModelObj.SiloName} 编辑完成");
}
else
{
@@ -28,6 +29,7 @@ namespace BPASmartClient.SmallBatchingSystem.ViewModels
SiloLoc = SiloInfoModelObj.SiloLoc,
SiloName = SiloInfoModelObj.SiloName,
});
Control.GetInstance.OperationLog($"{SiloInfoModelObj.SiloName} 添加成功");
}
ActionManage.GetInstance.Send("SiloClose");
});


+ 5
- 1
BPASmartClient.SmallBatchingSystem/ViewModels/OutletManagementViewModel.cs View File

@@ -27,7 +27,11 @@ namespace BPASmartClient.SmallBatchingSystem.ViewModels
if (!string.IsNullOrEmpty(o?.ToString()))
{
var res = Json<ConfigInfoModel>.Data.OutletInfoModels.FirstOrDefault(p => p.OutletName == o.ToString());
if (res != null) Json<ConfigInfoModel>.Data.OutletInfoModels.Remove(res);
if (res != null)
{
Json<ConfigInfoModel>.Data.OutletInfoModels.Remove(res);
Control.GetInstance.OperationLog($"{res.OutletName} 删除成功");
}
}
});



+ 32
- 9
BPASmartClient.SmallBatchingSystem/ViewModels/RecipeControlViewModel.cs View File

@@ -8,6 +8,8 @@ using BPA.Helper;
using Microsoft.Toolkit.Mvvm.ComponentModel;
using Microsoft.Toolkit.Mvvm.Input;
using BPASmartClient.SmallBatchingSystem.Views;
using BPASmartClient.CustomResource.UserControls.MessageShow;
using BPASmartClient.CustomResource.UserControls;

namespace BPASmartClient.SmallBatchingSystem.ViewModels
{
@@ -18,20 +20,41 @@ namespace BPASmartClient.SmallBatchingSystem.ViewModels
Recipes = Json<ConfigInfoModel>.Data.Recipes;
StartCommand = new RelayCommand<object>((o) =>
{
if (!string.IsNullOrEmpty(o?.ToString()))
Task.Factory.StartNew(() =>
{
int index = Array.FindIndex(Json<ConfigInfoModel>.Data.Recipes.ToArray(), p => p.RecipeName == o.ToString());
if (index >= 0 && index < Json<ConfigInfoModel>.Data.Recipes.Count)
if (PlcDataModel.RecipeBatchingComplete)
{
var data = Json<ConfigInfoModel>.Data.Recipes.ElementAt(index);
GrindArenaceousView grindArenaceousView = new GrindArenaceousView();
ActionManage.GetInstance.Send("OpenRecipeStatusMotion", data);
Control.GetInstance.MakeOrderQueue.Enqueue(data);
grindArenaceousView.ShowDialog();
if (!string.IsNullOrEmpty(o?.ToString()))
{
int index = Array.FindIndex(Json<ConfigInfoModel>.Data.Recipes.ToArray(), p => p.RecipeName == o.ToString());
if (index >= 0 && index < Json<ConfigInfoModel>.Data.Recipes.Count)
{
var data = Json<ConfigInfoModel>.Data.Recipes.ElementAt(index);
Control.GetInstance.RunLog($"下发配方:{data.RecipeName}");
GrindArenaceousView grindArenaceousView = new GrindArenaceousView();
ActionManage.GetInstance.Send("OpenRecipeStatusMotion", data);
Control.GetInstance.MakeOrderQueue.Enqueue(data);
Control.GetInstance.NotifyPrompt("配方下发成功!");
grindArenaceousView.ShowDialog();
}
}
}
}
else
{
App.Current.Dispatcher.Invoke(() =>
{
NoticeDemoViewModel.OpenMsg(EnumPromptType.Error, App.MainWindow, "错误", "配方下发失败,硬件设备状态未装备就绪!");
});
Control.GetInstance.RunLog("配方下发失败,硬件设备状态未装备就绪!");
}
});
});

DeviceInitCommand = new RelayCommand(() => { PlcServer.GetInstance.WriteData("M10.3", true); });
}

public RelayCommand DeviceInitCommand { get; set; }

public ObservableCollection<RecipeInfo> Recipes { get; set; }

public RelayCommand<object> StartCommand { get; set; }


+ 10
- 2
BPASmartClient.SmallBatchingSystem/ViewModels/RecipeViewModel.cs View File

@@ -5,6 +5,8 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BPA.Helper;
using BPASmartClient.CustomResource.UserControls;
using BPASmartClient.CustomResource.UserControls.MessageShow;
using BPASmartClient.SmallBatchingSystem.Views;
using Microsoft.Toolkit.Mvvm.ComponentModel;
using Microsoft.Toolkit.Mvvm.Input;
@@ -20,14 +22,19 @@ namespace BPASmartClient.SmallBatchingSystem.ViewModels
NewRecipeView newOutletView = new NewRecipeView();
newOutletView.ShowDialog();
});
SaveCommand = new RelayCommand(() => { Json<ConfigInfoModel>.Save(); });
SaveCommand = new RelayCommand(() => { Json<ConfigInfoModel>.Save(); Control.GetInstance.NotifyPrompt("配方保存成功"); });
RecipeInfoModels = Json<ConfigInfoModel>.Data.Recipes;
RemoveCommand = new RelayCommand<object>((o) =>
{
if (!string.IsNullOrEmpty(o?.ToString()))
{
var res = Json<ConfigInfoModel>.Data.Recipes.FirstOrDefault(p => p.RecipeName == o.ToString());
if (res != null) Json<ConfigInfoModel>.Data.Recipes.Remove(res);
if (res != null)
{
Json<ConfigInfoModel>.Data.Recipes.Remove(res);
Control.GetInstance.NotifyPrompt($"{res.RecipeName} 删除成功");
Control.GetInstance.OperationLog($"{res.RecipeName} 删除成功");
}
}
});

@@ -41,6 +48,7 @@ namespace BPASmartClient.SmallBatchingSystem.ViewModels
NewRecipeView newOutletView = new NewRecipeView();
ActionManage.GetInstance.Send("OpenNewRecipe", res);
newOutletView.ShowDialog();
Control.GetInstance.OperationLog($"{res.RecipeName} 编辑完成");
}
}
});


+ 7
- 1
BPASmartClient.SmallBatchingSystem/ViewModels/SiloManagementViewModel.cs View File

@@ -27,7 +27,12 @@ namespace BPASmartClient.SmallBatchingSystem.ViewModels
if (!string.IsNullOrEmpty(o?.ToString()))
{
var res = Json<ConfigInfoModel>.Data.SiloInfoModels.FirstOrDefault(p => p.SiloName == o.ToString());
if (res != null) Json<ConfigInfoModel>.Data.SiloInfoModels.Remove(res);
if (res != null)
{
Json<ConfigInfoModel>.Data.SiloInfoModels.Remove(res);
Control.GetInstance.NotifyPrompt($"{res.SiloName} 删除成功");
Control.GetInstance.OperationLog($"{res.SiloName} 删除成功");
}
}
});

@@ -41,6 +46,7 @@ namespace BPASmartClient.SmallBatchingSystem.ViewModels
NewSiloView newSiloView = new NewSiloView();
ActionManage.GetInstance.Send("OpenNewSilo", res);
newSiloView.ShowDialog();
Control.GetInstance.OperationLog($"{res.SiloName} 编辑完成");
}
}
});


+ 1
- 0
BPASmartClient.SmallBatchingSystem/Views/GrindArenaceousView.xaml View File

@@ -11,6 +11,7 @@
Height="450"
AllowsTransparency="True"
Background="{x:Null}"
Topmost="True"
WindowStartupLocation="CenterScreen"
WindowState="Maximized"
WindowStyle="None"


+ 23
- 12
BPASmartClient.SmallBatchingSystem/Views/RecipeControlView.xaml View File

@@ -18,15 +18,25 @@

<Grid Margin="20">

<!--<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="0.25*" />
</Grid.ColumnDefinitions>-->

<Grid Name="ggr" Margin="10">

<!--<pry:ImageBorder Width="{Binding ElementName=ggr, Path=ActualWidth}" Height="{Binding ElementName=ggr, Path=ActualHeight}" />-->

<Grid.RowDefinitions>
<RowDefinition Height="35" />
<RowDefinition />
</Grid.RowDefinitions>

<Button
Width="150"
Height="30"
Margin="10,0,10,0"
HorizontalAlignment="Right"
Command="{Binding AddCommand}"
Content="初始化"
FontSize="20"
Style="{StaticResource ImageButtonStyle}" />

<Grid
Name="ggr"
Grid.Row="1"
Margin="10">
<ListBox
Margin="5"
VerticalAlignment="Top"
@@ -36,10 +46,11 @@
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid
<!--<UniformGrid
HorizontalAlignment="Left"
VerticalAlignment="Top"
Columns="8" />
Columns="8" />-->
<WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>

@@ -48,6 +59,7 @@

<Grid
Name="tt"
Width="180"
Height="220"
Margin="5">
<Grid.RowDefinitions>
@@ -353,7 +365,6 @@
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

</Grid>
</Grid>
</UserControl>

+ 4
- 2
BPASmartClient.SmallBatchingSystem/Views/RecipeView.xaml View File

@@ -53,10 +53,11 @@
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid
<!--<UniformGrid
HorizontalAlignment="Left"
VerticalAlignment="Top"
Columns="8" />
Columns="8" />-->
<WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>

@@ -65,6 +66,7 @@

<Grid
Name="tt"
Width="180"
Height="220"
Margin="5">
<Grid.RowDefinitions>


BIN
View File


+ 1
- 1
ComputerTestDemo/ComputerTestDemo.csproj View File

@@ -10,7 +10,7 @@

<ItemGroup>
<PackageReference Include="BPA.Communication" Version="1.0.19" />
<PackageReference Include="BPA.Helper" Version="1.0.15" />
<PackageReference Include="BPA.Helper" Version="1.0.17" />
</ItemGroup>

<ItemGroup>


+ 1
- 1
DosingSystem/Model/DeviceInquire.cs View File

@@ -98,7 +98,7 @@ namespace BPASmartClient.DosingSystem.Model

public void Init()
{
//TestData();
TestData();
IpAddressLines();
DeviceDataInit();
ThreadManage.GetInstance().StartLong(new Action(() =>


+ 23
- 24
SmartClient.sln View File

@@ -173,13 +173,12 @@ EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmart.PageLoad", "BPASmart.PageLoad\BPASmart.PageLoad.csproj", "{2DB084E8-B951-4D71-A203-FD0902EBA2C6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmart.CustomResource", "BPASmart.CustomResource\BPASmart.CustomResource.csproj", "{E7CC45BF-7393-4BA7-A9AD-B1A1F5B265F3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.SmallBatchingSystem", "BPASmartClient.SmallBatchingSystem\BPASmartClient.SmallBatchingSystem.csproj", "{BA588F22-87FB-4124-AF62-CA8DC492ED7D}"
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.SmallBatchingSystem", "BPASmartClient.SmallBatchingSystem\BPASmartClient.SmallBatchingSystem.csproj", "{BA588F22-87FB-4124-AF62-CA8DC492ED7D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BPASmartClient.DosingHKProject", "BPASmartClient.DosingProject\BPASmartClient.DosingHKProject.csproj", "{6763F73A-555C-41E2-91F7-ADF26C59A946}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BPASmartClient.DosingHKProject", "BPASmartClient.DosingProject\BPASmartClient.DosingHKProject.csproj", "{6763F73A-555C-41E2-91F7-ADF26C59A946}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -1635,26 +1634,6 @@ Global
{E7CC45BF-7393-4BA7-A9AD-B1A1F5B265F3}.Release|x64.Build.0 = Release|Any CPU
{E7CC45BF-7393-4BA7-A9AD-B1A1F5B265F3}.Release|x86.ActiveCfg = Release|Any CPU
{E7CC45BF-7393-4BA7-A9AD-B1A1F5B265F3}.Release|x86.Build.0 = Release|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|ARM.ActiveCfg = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|ARM.Build.0 = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|ARM64.Build.0 = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|x64.ActiveCfg = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|x64.Build.0 = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|x86.ActiveCfg = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|x86.Build.0 = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Release|Any CPU.Build.0 = Release|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Release|ARM.ActiveCfg = Release|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Release|ARM.Build.0 = Release|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Release|ARM64.ActiveCfg = Release|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Release|ARM64.Build.0 = Release|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Release|x64.ActiveCfg = Release|Any CPU
{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
{BA588F22-87FB-4124-AF62-CA8DC492ED7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BA588F22-87FB-4124-AF62-CA8DC492ED7D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BA588F22-87FB-4124-AF62-CA8DC492ED7D}.Debug|ARM.ActiveCfg = Debug|Any CPU
@@ -1675,6 +1654,26 @@ Global
{BA588F22-87FB-4124-AF62-CA8DC492ED7D}.Release|x64.Build.0 = Release|Any CPU
{BA588F22-87FB-4124-AF62-CA8DC492ED7D}.Release|x86.ActiveCfg = Release|Any CPU
{BA588F22-87FB-4124-AF62-CA8DC492ED7D}.Release|x86.Build.0 = Release|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|ARM.ActiveCfg = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|ARM.Build.0 = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|ARM64.Build.0 = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|x64.ActiveCfg = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|x64.Build.0 = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|x86.ActiveCfg = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Debug|x86.Build.0 = Debug|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Release|Any CPU.Build.0 = Release|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Release|ARM.ActiveCfg = Release|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Release|ARM.Build.0 = Release|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Release|ARM64.ActiveCfg = Release|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Release|ARM64.Build.0 = Release|Any CPU
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2}.Release|x64.ActiveCfg = Release|Any CPU
{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
@@ -1775,8 +1774,8 @@ Global
{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}
{D5081D7B-3EBB-42C7-8FB9-A889870D08C2} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F}
{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}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution


Loading…
Cancel
Save