using CCDCount.DLL;
using CCDCount.DLL.AlarmTools;
using CCDCount.DLL.Tools;
using CCDCount.MODEL.CameraClass;
using CCDCount.MODEL.ConfigModel;
using CCDCount.MODEL.PlcModel;
using CCDCountWpf.Language;
using CCDCountWpf.WpfPage;
using LogClass;
using MvCameraControl;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
namespace CCDCountWpf
{
///
/// MainWindow.xaml 的交互逻辑
///
public partial class MainWindow : Window
{
#region 变量与实例
//Uri ShowUri = null;
bool IsShow = false;
SystemMonitor monitor = new SystemMonitor();
Stopwatch SystemRunTime = new Stopwatch();
ConfigManager configManager = ConfigManager.Instance;
long InitRunTime;
#endregion
#region 窗体事件
///
/// 主窗体构造函数
///
public MainWindow()
{
Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
LOG.log("程序正在加载主界面", 6);
InitializeComponent();
//LOG.log("正在开启系统运行时间程序", 6);
//StartSystemRunTime();
SetupFullScreen();
LOG.log("绑定界面数据中", 6);
DataContext = ShowMessageBus.ShowBinding;
LOG.log("加载配置参数中", 6);
configManager.LoadConfigs();
LOG.log("初始化引用库", 6);
SDKSystem.Initialize();
LOG.log("初始化相机中", 6);
InitCameraIdentify();
LOG.log("初始化PLC参数管理功能", 6);
InitPlcManger();
LOG.log("启动界面更新线程中", 6);
StartUpdataShowDataThread();
LOG.log("相机列表显示", 6);
InitCamComboboxValue();
//LOG.log("更新数据界面参数展示", 6);
//UpdatePlcPara();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
LOG.log("开启生产界面",6);
MainPageBtn_Click(null, null);
LOG.log("生产界面开启完成", 6);
}
///
/// 退出按钮点击事件
///
///
///
private void ExitBtn_Click(object sender, RoutedEventArgs e)
{
if (MessageBox.Show("Do you want to exit the program?", "Exit confirmation", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
{
this.Close();
}
else
{
return;
}
}
///
/// 主界面按钮点击事件
///
///
///
private void MainPageBtn_Click(object sender, RoutedEventArgs e)
{
MainWindowsShowPage("Main");
//ShowUri = new Uri("WpfPage\\MainPage.xaml", UriKind.Relative);
//ShowFrame.Navigate(ShowUri);
}
///
/// 主界面按钮触屏按下事件
///
///
///
private void MainPageBtn_TouchDown(object sender, System.Windows.Input.TouchEventArgs e)
{
e.Handled = true;
MainWindowsShowPage("Main");
}
private void SettingBtn_Click(object sender, RoutedEventArgs e)
{
MainWindowsShowPage("Camera");
//ShowUri = new Uri("WpfPage\\SettingPage.xaml", UriKind.Relative);
//ShowFrame.Navigate(ShowUri);
}
private void SettingBtn_TouchDown(object sender, System.Windows.Input.TouchEventArgs e)
{
e.Handled = true;
MainWindowsShowPage("Camera");
}
private void ErrorMessageShowBtn_Click(object sender, RoutedEventArgs e)
{
MainWindowsShowPage("Error");
//ShowUri = new Uri("WpfPage\\MessagePage.xaml", UriKind.Relative);
//ShowFrame.Navigate(ShowUri);
}
private void ErrorMessageShowBtn_TouchDown(object sender, System.Windows.Input.TouchEventArgs e)
{
e.Handled = true;
MainWindowsShowPage("Error");
}
private void PlcSettingBtn_Click(object sender, RoutedEventArgs e)
{
MainWindowsShowPage("PLC");
//if(SystemAlarm.CheckAlarmStatic(AlarmMessageList.PLC连接中))
//{
// MessageBox.Show("PLC Connecting,Please Wait");
// return;
//}
//if(PlcSettingMessageBus.pLCManagement!=null && PlcSettingMessageBus.pLCManagement.IsConnect)
//{
// ShowUri = new Uri("WpfPage\\PlcSettingPage.xaml", UriKind.Relative);
// ShowFrame.Navigate(ShowUri);
//}
//else
//{
// var MessageResult = MessageBox.Show("尚未连接PLC,是否重连","重连确认",MessageBoxButton.YesNo);
// if(MessageResult == MessageBoxResult.Yes)
// {
// InitPlcManger();
// if (PlcSettingMessageBus.pLCManagement != null && PlcSettingMessageBus.pLCManagement.IsConnect)
// {
// ShowUri = new Uri("WpfPage\\PlcSettingPage.xaml", UriKind.Relative);
// ShowFrame.Navigate(ShowUri);
// }
// }
//}
}
private void PlcSettingBtn_TouchDown(object sender, System.Windows.Input.TouchEventArgs e)
{
e.Handled = true;
MainWindowsShowPage("PLC");
}
private void HistoryDataBtn_Click(object sender, RoutedEventArgs e)
{
MainWindowsShowPage("History");
//ShowUri = new Uri("WpfPage\\HistoryDataPage.xaml", UriKind.Relative);
//ShowFrame.Navigate(ShowUri);
}
private void HistoryDataBtn_TouchDown(object sender, System.Windows.Input.TouchEventArgs e)
{
e.Handled = true;
MainWindowsShowPage("History");
}
private void UserMessageBtn_Click(object sender, RoutedEventArgs e)
{
MainWindowsShowPage("User");
}
private void UserMessageBtn_TouchDown(object sender, System.Windows.Input.TouchEventArgs e)
{
e.Handled = true;
MainWindowsShowPage("User");
}
///
/// 窗体关闭事件
///
///
///
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
StopSystemRunTime();
configManager.SaveConfigs(ShowMessageBus.ShowBinding.FormulationName);
SDKSystem.Finalize();
if (MessageBus.NowSettingLoadMainThread != null)
{
MessageBus.NowSettingLoadMainThread.DisposeCamera();
}
StopUpdataShowDataThread();
Environment.Exit(0);
}
private void MenuBtn_Click(object sender, RoutedEventArgs e)
{
HeardPanel.Visibility = HeardPanel.Visibility == Visibility.Visible ? Visibility.Hidden : Visibility.Visible;
}
private void KeyBoardBtn_Click(object sender, RoutedEventArgs e)
{
OnScreenKeyboard.KeyBoardShow();
}
private void AuditTrailShowBtn_Click(object sender, RoutedEventArgs e)
{
MainWindowsShowPage("Audit");
//ShowUri = new Uri("WpfPage\\AuditTrailPage.xaml", UriKind.Relative);
//ShowFrame.Navigate(ShowUri);
}
private void AuditTrailShowBtn_TouchDown(object sender, System.Windows.Input.TouchEventArgs e)
{
e.Handled = true;
MainWindowsShowPage("Audit");
}
private void SwitchLanguageBtn_Click(object sender, RoutedEventArgs e)
{
MessageBus.LanguageIndex++;
LanguageManager.ChangeLanguage(LanguageManager.LanguageList[MessageBus.LanguageIndex % LanguageManager.LanguageList.Count]);
}
#endregion
#region 私有方法
private void InitCameraIdentify()
{
LOG.log("判断ConFig数量", 6);
if(configManager.SaveConfigModel == null)
{
MessageBox.Show("Camera has not been added yet. Please proceed to the configuration page to set up the camera");
//return;
}
LOG.log("判断当前主线程是否运行", 6);
if (MessageBus.NowSettingLoadMainThread != null)
{
MessageBus.NowSettingLoadMainThread.StopMianThread();
}
LOG.log("重新加载MainThread", 6);
MessageBus.NowSettingLoadMainThread = (new MainThreadClass(configManager.SaveConfigModel.ShuLiConfigClass, configManager.SaveConfigModel.CameraConfig));
MessageBus.NowSettingLoadMainThread.FormulationName = configManager.SaveConfigModel.ConfigName;
MessageBus.NowSettingLoadMainThread.IsLoadFormulation = configManager.SaveConfigModel.IsFormulation;
LOG.log("尝试通讯连接", 6);
//MessageBus.NowSettingLoadMainThread.ConnectModbus("127.0.0.1");
//MessageBus.NowSettingLoadMainThread.ConnectModbus("192.168.1.88");
LOG.log("加载相机", 6);
MessageBus.NowSettingLoadMainThread.LoadCamera();
}
///
/// 启动更新显示数据线程
///
private void StartUpdataShowDataThread()
{
IsShow = true;
BitmapImage ThumbnailImage1 = null;
const int targetMsPerFrame = 100; // 20FPS=50ms
Stopwatch renderSW = new Stopwatch();
Stopwatch HeartSW = new Stopwatch();
Task.Run(async () =>
{
while (IsShow)
{
renderSW.Restart();
try
{
await Task.Run(() =>
{
UpdataShuLiShowData();
UpdateMonitorMessage();
UpdateFaultLogMessage();
UpdateFaultErrorMessage();
});
await Application.Current.Dispatcher.InvokeAsync(() =>
{
if (MessageBus.NowSettingLoadMainThread == null)
{
LOG.log(string.Format("{0}:当前未加载识别流程", "IdentifyCameraForm-StartShowImageThread"));
Thread.Sleep(100);
return;
}
else
{
//MessageBus.NowSettingLoadMainThread.GetShowImage(1000, out Bitmap image1);
MessageBus.NowSettingLoadMainThread.GetShowImage(1000, configManager.SaveConfigModel.CameraConfig.Width, out Bitmap image1);
if (image1 == null)
{
//LOG.log(string.Format("{0}:相机一获取图片为空", "IdentifyCameraForm-StartShowImageThread"));
return;
}
ThumbnailImage1 = ConvertToBitmapImage(image1);
ShowMessageBus.ShowBinding.BitmapImage = ThumbnailImage1;
}
if (MessageBus.NowSettingLoadMainThread != null)
{
if (MessageBus.NowSettingLoadMainThread.IsDebug)
{
Bitmap Splicebitmap = MessageBus.NowSettingLoadMainThread.GetCamImageOnce();
if (Splicebitmap != null)
{
ShowMessageBus.ShowBinding.DebugImage = ConvertToBitmapImage(Splicebitmap);
}
}
else
{
if (ThumbnailImage1 != null)
{
ShowMessageBus.ShowBinding.DebugImage = ThumbnailImage1;
}
}
}
});
}
catch (Exception ex)
{
LOG.error("MainWindow-StartUpdataShowDataThread:" + ex.Message);
}
//进行精准20帧控制
int elapsed = (int)renderSW.ElapsedMilliseconds;
//Console.WriteLine(elapsed);
if (elapsed < targetMsPerFrame)
{
//Console.WriteLine($"主显示线程休眠,休眠时间:{targetMsPerFrame - elapsed}");
Thread.Sleep(targetMsPerFrame - elapsed);
}
//Thread.Sleep(50);
}
});
Task.Run(async () =>
{
while (true)
{
HeartSW.Restart();
if (PlcSettingMessageBus.pLCManagement!=null)
{
if(!PlcSettingMessageBus.pLCManagement.HeartMessage())
{
SystemAlarm.AlarmAlert(AlarmMessageList.心跳异常,
"Heart Error",
"心跳异常",
"MainWindows-StartUpdataShowDataThread");
SystemAlarm.AlarmAlert(AlarmMessageList.PLC通讯连接失败,
"PLC communication connection failed",
"PLC通讯连接失败",
"MainWindows-StartUpdataShowDataThread");
}
else
{
SystemAlarm.AlarmCancel(AlarmMessageList.心跳异常);
SystemAlarm.AlarmCancel(AlarmMessageList.PLC通讯连接失败);
}
}
UpdatePlcAlarmMessage();
HeartSW.Stop();
int elapsed = (int)HeartSW.ElapsedMilliseconds;
if (elapsed < targetMsPerFrame)
{
await Task.Delay(500 - elapsed);
}
}
});
}
///
/// 停止更新显示数据线程
///
private void StopUpdataShowDataThread()
{
IsShow = false;
}
///
/// 更新数粒显示数据
///
private void UpdataShuLiShowData()
{
ushort BottingCount = 0;
if (MessageBus.NowSettingLoadMainThread == null) return;
if (MessageBus.NowSettingLoadMainThread.ShuLiState)
{
Application.Current.Dispatcher.Invoke(() =>
{
ShowMessageBus.ShowBinding.CameraStaticColor = MessageBus.NowSettingLoadMainThread.CameraRunStatic == true
? System.Windows.Media.Brushes.Green : System.Windows.Media.Brushes.Red;
ShowMessageBus.ShowBinding.CamRunStatic = MessageBus.NowSettingLoadMainThread.CameraRunStatic == true
? "Run" : "Stop";
});
}
else
{
Application.Current.Dispatcher.Invoke(() =>
{
ShowMessageBus.ShowBinding.CameraStaticColor = System.Windows.Media.Brushes.Yellow;
ShowMessageBus.ShowBinding.CamRunStatic = "Vision obstruction";
});
}
ShowMessageBus.ShowBinding.AllActiveNum = MessageBus.NowSettingLoadMainThread.HistoryActiveNum.ToString();
ShowMessageBus.ShowBinding.AllOkNum = MessageBus.NowSettingLoadMainThread.OkHistoryNum.ToString();
ShowMessageBus.ShowBinding.AllNgNum = MessageBus.NowSettingLoadMainThread.NgHistoryNum.ToString();
ShowMessageBus.ShowBinding.ShuLiSpeed = MessageBus.NowSettingLoadMainThread.GetOneSecondActiveNum().ToString();
if(PlcSettingMessageBus.pLCManagement != null && PlcSettingMessageBus.pLCManagement.IsConnect)
{
PlcSettingMessageBus.pLCManagement.ReadBottingCount(out BottingCount);
ShowMessageBus.ShowBinding.BottingCountSpeed = PlcSettingMessageBus.pLCManagement.BottingSpeed.ToString();
}
ShowMessageBus.ShowBinding.BottingCount = BottingCount;
}
///
/// 更新监控信息
///
private void UpdateMonitorMessage()
{
ShowMessageBus.ShowBinding.RamMonitor = monitor.GetAvailableMemory() > 1024 ? $"可用内存: {monitor.GetAvailableMemory() / 1024:0.00}GB" : $"可用内存: {monitor.GetAvailableMemory()}MB";
ShowMessageBus.ShowBinding.CPUMonitor = $"CPU: {monitor.GetCpuUsage():0.00}%";
}
///
/// 更新故障日志信息
///
private void UpdateFaultLogMessage()
{
ShowMessageBus.ShowBinding.ErrMessageShowList = FaultLog.GetAllErrMessage().OrderByDescending(o=>o.DateTime).Take(1000).ToList();
}
private void UpdateFaultErrorMessage()
{
SystemAlarm.AllVisionAlarmCancel(30000);
ShowMessageBus.ShowBinding.AlarmMessShowList = SystemAlarm.GetAlarm();
}
private void UpdatePlcAlarmMessage()
{
if(PlcSettingMessageBus.pLCManagement==null) return;
PlcAlarmModelClass alarm = PlcSettingMessageBus.pLCManagement.ReadAllAlarm();
if (alarm != null)
{
if (alarm.PressSwitch)
{
SystemAlarm.AlarmAlert(AlarmMessageList.气压压力检测开关报警,
"PressSwitch",
"气压压力检测开关报警",
"MainWindow-UpdatePlcAlarmMessage");
}
else
{
SystemAlarm.AlarmCancel(AlarmMessageList.气压压力检测开关报警);
}
if (alarm.E_Stop)
{
SystemAlarm.AlarmAlert(AlarmMessageList.急停开关按下报警,
"E_Stop",
"急停开关按下报警",
"MainWindow-UpdatePlcAlarmMessage");
}
else
{
SystemAlarm.AlarmCancel(AlarmMessageList.急停开关按下报警);
}
if (alarm.MachineUpLimit)
{
SystemAlarm.AlarmAlert(AlarmMessageList.触发上限位报警,
"MachineUpLimit",
"触发上限位报警",
"MainWindow-UpdatePlcAlarmMessage");
}
else
{
SystemAlarm.AlarmCancel(AlarmMessageList.触发上限位报警);
}
if (alarm.MachineDownLimit)
{
SystemAlarm.AlarmAlert(AlarmMessageList.触发下限位报警,
"MachineDownLimit",
"触发下限位报警",
"MainWindow-UpdatePlcAlarmMessage");
}
else
{
SystemAlarm.AlarmCancel(AlarmMessageList.触发下限位报警);
}
if (alarm.MachineInverterError)
{
SystemAlarm.AlarmAlert(AlarmMessageList.升降变频器报警,
"MachineInverterError",
"升降变频器报警",
"MainWindow-UpdatePlcAlarmMessage");
}
else
{
SystemAlarm.AlarmCancel(AlarmMessageList.升降变频器报警);
}
if (alarm.BeltsInverterError)
{
SystemAlarm.AlarmAlert(AlarmMessageList.传送带变频器报警,
"BeltsInverterError",
"传送带变频器报警",
"MainWindow-UpdatePlcAlarmMessage");
}
else
{
SystemAlarm.AlarmCancel(AlarmMessageList.传送带变频器报警);
}
if(alarm.WaitingForReset)
{
SystemAlarm.AlarmAlert(AlarmMessageList.等待复位,
"WaitingForReset",
"等待复位",
"MainWindow-UpdatePlcAlarmMessage");
}
else
{
SystemAlarm.AlarmCancel(AlarmMessageList.等待复位);
}
if (alarm.DoorOpenAlarm)
{
SystemAlarm.AlarmAlert(AlarmMessageList.门开报警,
"DoorOpenAlarm",
"门开报警",
"MainWindow-UpdatePlcAlarmMessage");
}
else
{
SystemAlarm.AlarmCancel(AlarmMessageList.门开报警);
}
if (alarm.FillingValveMotorl)
{
SystemAlarm.AlarmAlert(AlarmMessageList.罐装阀伺服报警,
"FillingValveMotorl",
"罐装阀伺服报警",
"MainWindow-UpdatePlcAlarmMessage");
}
else
{
SystemAlarm.AlarmCancel(AlarmMessageList.罐装阀伺服报警);
}
if (alarm.MaterialShortageShutdown)
{
SystemAlarm.AlarmAlert(AlarmMessageList.设备缺料停机,
"MaterialShortageShutdown",
"设备缺料停机",
"MainWindow-UpdatePlcAlarmMessage");
}
else
{
SystemAlarm.AlarmCancel(AlarmMessageList.设备缺料停机);
}
if (alarm.InBottleScrewMotorlError)
{
SystemAlarm.AlarmAlert(AlarmMessageList.传动轴伺服报警,
"InBottleScrewMotorlError",
"传动轴伺服报警",
"MainWindow-UpdatePlcAlarmMessage");
}
else
{
SystemAlarm.AlarmCancel(AlarmMessageList.传动轴伺服报警);
}
if (alarm.BottleJamSignal)
{
SystemAlarm.AlarmAlert(AlarmMessageList.堵瓶停机,
"BottleJamSignal",
"堵瓶停机",
"MainWindow-UpdatePlcAlarmMessage");
}
else
{
SystemAlarm.AlarmCancel(AlarmMessageList.堵瓶停机);
}
if (alarm.MissingBottleSignal)
{
SystemAlarm.AlarmAlert(AlarmMessageList.缺瓶停机,
"MissingBottleSignal",
"缺瓶停机",
"MainWindow-UpdatePlcAlarmMessage");
}
else
{
SystemAlarm.AlarmCancel(AlarmMessageList.缺瓶停机);
}
if (alarm.PLCCameraHeartErrorSignal)
{
SystemAlarm.AlarmAlert(AlarmMessageList.心跳异常,
"Heart Error",
"心跳异常",
"MainWindow-UpdatePlcAlarmMessage");
}
else
{
SystemAlarm.AlarmCancel(AlarmMessageList.心跳异常);
}
if (alarm.CameraNotRunSignal)
{
SystemAlarm.AlarmAlert(AlarmMessageList.视觉未启动,
"VisionNotRunSignal",
"视觉未启动",
"MainWindow-UpdatePlcAlarmMessage");
}
else
{
SystemAlarm.AlarmCancel(AlarmMessageList.视觉未启动);
}
if (alarm.ParticleCacheOverflowSignal)
{
SystemAlarm.AlarmAlert(AlarmMessageList.颗粒缓存超限,
"ParticleCacheOverflow",
"颗粒缓存超限",
"MainWindow-UpdatePlcAlarmMessage");
}
else
{
SystemAlarm.AlarmCancel(AlarmMessageList.颗粒缓存超限);
}
}
}
// Bitmap 转 BitmapImage 的辅助方法
private BitmapImage ConvertToBitmapImage(Bitmap bitmap)
{
using (MemoryStream memory = new MemoryStream())
{
bitmap.Save(memory, System.Drawing.Imaging.ImageFormat.Png);
memory.Position = 0;
var bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.DecodePixelWidth = 1200; // 设置目标分辨率宽度
bitmapImage.DecodePixelHeight = 600; // 保持宽高比
bitmapImage.StreamSource = memory;
bitmapImage.EndInit();
return bitmapImage;
}
}
///
/// 初始化相机选择框
///
private void InitCamComboboxValue()
{
MessageBus.CameraClass.GetCameraList(out List CameraInfoList);
if (CameraInfoList.Count > 0)
{
ShowMessageBus.ShowBinding.CameraItems.Clear();
ShowMessageBus.ShowBinding.CameraItems.Add(new CameraCoboxItem() { Name = "请选择相机", SNValue = "" });
foreach (var item in CameraInfoList)
{
ShowMessageBus.ShowBinding.CameraItems.Add(new CameraCoboxItem()
{
Name = item.DeviceName + "_" + item.DeviceSN,
SNValue = item.DeviceSN
});
}
}
}
///
/// 初始化PLC管理(包括PLC的数据信息更新线程)
///
public async void InitPlcManger()
{
await Task.Run(() => {
//string ipAddress = "192.168.1.88";
string ipAddress = "127.0.0.1";
SystemAlarm.AlarmAlert(AlarmMessageList.PLC连接中,
$"PLC Connecting, target IP:{ipAddress}",
$"PLC连接中, IP地址:{ipAddress}",
"DLL:MainThreadClass-InitPlcManger");
PlcSettingMessageBus.pLCManagement = new PLCManagementClass(ipAddress);
SystemAlarm.AlarmCancel(AlarmMessageList.PLC连接中);
UpdatePlcPara();
UpdateCameraState();
});
}
public void UpdateCameraState()
{
if(PlcSettingMessageBus.pLCManagement!=null&&PlcSettingMessageBus.pLCManagement.IsConnect)
{
PlcSettingMessageBus.pLCManagement.WriteCameraRunState(0);
}
}
private void UpdatePlcPara()
{
var ParaValue = PlcSettingMessageBus.pLCManagement.ReadAllPara();
if (ParaValue == null) return;
//PlcSettingMessageBus.PlcMessageShowBindage.FillingModel =
// ParaValue.FillingMode;
PlcSettingMessageBus.PlcMessageShowBindage.BeltsSpeed =
ParaValue.BeltsSpeed;
PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable1H_FillingSpeed =
ParaValue.ShakeTable1H_FillingSpeed;
PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable2H_FillingSpeed =
ParaValue.ShakeTable2H_FillingSpeed;
PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable3H_FillingSpeed =
ParaValue.ShakeTable3H_FillingSpeed;
//PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable1M_FillingSpeed =
// ParaValue.ShakeTable1M_FillingSpeed;
//PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable2M_FillingSpeed =
// ParaValue.ShakeTable2M_FillingSpeed;
//PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable3M_FillingSpeed =
// ParaValue.ShakeTable3M_FillingSpeed;
//PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable1L_FillingSpeed =
// ParaValue.ShakeTable1L_FillingSpeed;
//PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable2L_FillingSpeed =
// ParaValue.ShakeTable2L_FillingSpeed;
//PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable3L_FillingSpeed =
// ParaValue.ShakeTable3L_FillingSpeed;
//PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable1H_CacheSpeed =
// ParaValue.ShakeTable1H_CacheSpeed;
//PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable2H_CacheSpeed =
// ParaValue.ShakeTable2H_CacheSpeed;
//PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable3H_CacheSpeed =
// ParaValue.ShakeTable3H_CacheSpeed;
//PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable1M_CacheSpeed =
// ParaValue.ShakeTable1M_CacheSpeed;
//PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable2M_CacheSpeed =
// ParaValue.ShakeTable2M_CacheSpeed;
//PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable3M_CacheSpeed =
// ParaValue.ShakeTable3M_CacheSpeed;
//PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable1L_CacheSpeed =
// ParaValue.ShakeTable1L_CacheSpeed;
//PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable2L_CacheSpeed =
// ParaValue.ShakeTable2L_CacheSpeed;
//PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable3L_CacheSpeed =
// ParaValue.ShakeTable3L_CacheSpeed;
//PlcSettingMessageBus.PlcMessageShowBindage.FillingH_SpeedRatio =
// ParaValue.FillingH_SpeedRatio;
//PlcSettingMessageBus.PlcMessageShowBindage.FillingM_SpeedRatio =
// ParaValue.FillingM_SpeedRatio;
//PlcSettingMessageBus.PlcMessageShowBindage.FillingL_SpeedRatio =
// ParaValue.FillingL_SpeedRatio;
//PlcSettingMessageBus.PlcMessageShowBindage.CacheH_SpeedRatio =
// ParaValue.CacheH_SpeedRatio;
//PlcSettingMessageBus.PlcMessageShowBindage.CacheM_SpeedRatio =
// ParaValue.CacheM_SpeedRatio;
//PlcSettingMessageBus.PlcMessageShowBindage.CacheL_SpeedRatio =
// ParaValue.CacheL_SpeedRatio;
PlcSettingMessageBus.PlcMessageShowBindage.ScrewJogSpeed =
ParaValue.ScrewJogSpeed.ToString();
PlcSettingMessageBus.PlcMessageShowBindage.InBottleSpeed =
ParaValue.InBottleSpeed.ToString();
PlcSettingMessageBus.PlcMessageShowBindage.BottlePosSpeed =
ParaValue.BottlePosSpeed.ToString();
PlcSettingMessageBus.PlcMessageShowBindage.BottlePosPosition =
ParaValue.BottlePosPosition.ToString();
PlcSettingMessageBus.PlcMessageShowBindage.FillingValveOpenSpeed =
ParaValue.FillingValveOpenSpeed.ToString();
PlcSettingMessageBus.PlcMessageShowBindage.FillingValveOpenPosition =
ParaValue.FillingValveOpenPosition.ToString();
PlcSettingMessageBus.PlcMessageShowBindage.FillingValveCloseSpeed =
ParaValue.FillingValveCloseSpeed.ToString();
PlcSettingMessageBus.PlcMessageShowBindage.FillingValveClosePosition =
ParaValue.FillingValveClosePosition.ToString();
//PlcSettingMessageBus.PlcMessageShowBindage.FillingValveCacheSpeed =
// ParaValue.FillingValveCacheSpeed.ToString();
//PlcSettingMessageBus.PlcMessageShowBindage.FillingValveCachePosition =
// ParaValue.FillingValueCachePosition.ToString();
PlcSettingMessageBus.PlcMessageShowBindage.FillingValveJogSpeed =
ParaValue.FillingValueJogSpeed.ToString();
PlcSettingMessageBus.PlcMessageShowBindage.MachineDelayFunneDownTime =
ParaValue.MachineDelayFunneDownTime;
PlcSettingMessageBus.PlcMessageShowBindage.MachineDelayFunneUpTime =
ParaValue.MachineDelayFunneUpTime;
PlcSettingMessageBus.PlcMessageShowBindage.MachineDelayFillingValveOpenTime =
ParaValue.MachineDelayFillingValveOpenTime;
PlcSettingMessageBus.PlcMessageShowBindage.MachineDelayFillingValveCloseTime =
ParaValue.MachineDelayFillingValveCloseTime;
PlcSettingMessageBus.PlcMessageShowBindage.MachineDelayInBottleTime =
ParaValue.MachineDelayInBottleTime;
PlcSettingMessageBus.PlcMessageShowBindage.BottValueSet =
ParaValue.BottValueSet;
PlcSettingMessageBus.PlcMessageShowBindage.ValveDelytime =
ParaValue.ValveDelytime;
PlcSettingMessageBus.PlcMessageShowBindage.CacheShutdownValue =
ParaValue.CacheShutdownValue;
//PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable1_TestSpeed =
// ParaValue.ShakeTable1_TestSpeed;
//PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable2_TestSpeed =
// ParaValue.ShakeTable2_TestSpeed;
//PlcSettingMessageBus.PlcMessageShowBindage.ShakeTable3_TestSpeed =
// ParaValue.ShakeTable3_TestSpeed;
PlcSettingMessageBus.PlcMessageShowBindage.MissingDelaytime =
ParaValue.MissingDelaytime;
PlcSettingMessageBus.PlcMessageShowBindage.BottleJamDelaytime =
ParaValue.BottleJamDelaytime;
PlcSettingMessageBus.PlcMessageShowBindage.EliminateCylinderDelayTime =
ParaValue.EliminateCylinderDelayTime;
PlcSettingMessageBus.PlcMessageShowBindage.EliminateCylinderHoldingTime =
ParaValue.EliminateCylinderHoldingTime;
PlcSettingMessageBus.PlcMessageShowBindage.MaterialShortageStoppageDelayTime =
ParaValue.MaterialShortageStoppageDelayTime;
PlcSettingMessageBus.PlcMessageShowBindage.MissBottleRestart =
ParaValue.MissBottleReSestart;
PlcSettingMessageBus.PlcMessageShowBindage.BottleStopPassTime =
ParaValue.BottleStopPassTime;
PlcSettingMessageBus.PlcMessageShowBindage.BuzzerTime =
ParaValue.BuzzerTime;
PlcSettingMessageBus.PlcMessageShowBindage.CacheDecelerateProportion =
ParaValue.CacheDecelerateProportion;
}
private void StartSystemRunTime()
{
string localDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string systemRunTimePath = Path.Combine(localDataPath, "CCDCount\\SystemRunTime.XML");
if (File.Exists(systemRunTimePath))
{
var systemMessage = XmlStorage.DeserializeFromXml(systemRunTimePath);
InitRunTime = systemMessage.SystemRunTime;
TimeSpan timeSpan = TimeSpan.FromTicks(InitRunTime);
}
SystemRunTime.Start();
}
private void StopSystemRunTime()
{
string localDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string systemruntimefoundPath = Path.Combine(localDataPath, "CCDCount");
if (!Directory.Exists(systemruntimefoundPath))
{
Directory.CreateDirectory(systemruntimefoundPath);
}
string systemRunTimePath = Path.Combine(systemruntimefoundPath, "SystemRunTime.XML");
SystemRunTime.Stop();
long ticks = SystemRunTime.ElapsedTicks;
XmlStorage.SerializeToXml(new SystemMessageConfigModel()
{
SystemRunTime = ticks + InitRunTime
}, systemRunTimePath);
}
private void SetupFullScreen()
{
// 隐藏标题栏和边框
this.WindowStyle = WindowStyle.None;
// 禁止调整大小
this.ResizeMode = ResizeMode.NoResize;
// 设置为最顶层窗口
//this.Topmost = true;
// 最大化窗口
this.WindowState = WindowState.Maximized;
// 隐藏任务栏(可选)
this.Top = 0;
this.Left = 0;
this.Width = SystemParameters.PrimaryScreenWidth;
this.Height = SystemParameters.PrimaryScreenHeight;
}
private void MainWindowsShowPage(string PageName)
{
Page pageToNavigate = null;
switch (PageName)
{
case "Main":
pageToNavigate = new MainPage(); // 替换为你实际的页面类名
break;
case "History":
pageToNavigate = new HistoryDataPage();
break;
case "Camera":
pageToNavigate = new SettingPage();
break;
case "PLC":
if (SystemAlarm.CheckAlarmStatic(AlarmMessageList.PLC连接中))
{
MessageBox.Show("PLC Connecting,Please Wait");
return;
}
if (PlcSettingMessageBus.pLCManagement != null && PlcSettingMessageBus.pLCManagement.IsConnect)
{
pageToNavigate = new PlcSettingPage();
//ShowUri = new Uri("WpfPage\\PlcSettingPage.xaml", UriKind.Relative);
//ShowFrame.Navigate(ShowUri);
}
else
{
var MessageResult = MessageBox.Show("尚未连接PLC,是否重连", "重连确认", MessageBoxButton.YesNo);
if (MessageResult == MessageBoxResult.Yes)
{
InitPlcManger();
if (PlcSettingMessageBus.pLCManagement != null && PlcSettingMessageBus.pLCManagement.IsConnect)
{
pageToNavigate = new PlcSettingPage();
//ShowUri = new Uri("WpfPage\\PlcSettingPage.xaml", UriKind.Relative);
//ShowFrame.Navigate(ShowUri);
}
}
}
break;
case "Error":
pageToNavigate = new MessagePage();
break;
case "Audit":
pageToNavigate = new AuditTrailPage();
break;
case "User":
if (MessageBus.NowLoginUserMessage != null)
{
if (!MessageBus.NowLoginUserMessage.IsAdmin)
{
MessageBox.Show("权限不足");
}
else
{
pageToNavigate = new UserManagementPage();
//ShowUri = new Uri("WpfPage\\UserManagementPage.xaml", UriKind.Relative);
//ShowFrame.Navigate(ShowUri);
}
}
else
{
MessageBox.Show("请先登录");
}
break;
}
if (pageToNavigate != null)
{
// 确保在主线程执行导航
Dispatcher.Invoke(() =>
{
ShowFrame.Navigate(pageToNavigate);
});
}
}
#endregion
}
}