346 lines
12 KiB
C#
346 lines
12 KiB
C#
using DM_Weight.Common;
|
|
using DM_Weight.msg;
|
|
using DM_Weight.Port;
|
|
using DM_Weight.util;
|
|
using Prism.Commands;
|
|
using Prism.Events;
|
|
using Prism.Mvvm;
|
|
using Prism.Regions;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Xml;
|
|
|
|
namespace DM_Weight.ViewModels
|
|
{
|
|
public class FridgeWindowViewModel : BindableBase, IRegionMemberLifetime, INavigationAware
|
|
{
|
|
//温度区间
|
|
private string _temperatureRange = CommonClass.ReadAppSetting("temperatureRange").ToString();
|
|
public string TemperatureRange
|
|
{
|
|
get => _temperatureRange;
|
|
set
|
|
{
|
|
SetProperty(ref _temperatureRange, value);
|
|
//更新配置文件中冰箱温度区间
|
|
CommonClass.SaveAppSetting("temperatureRange", _temperatureRange);
|
|
}
|
|
}
|
|
//冰箱2温度区间
|
|
private string _temperatureRange2 = CommonClass.ReadAppSetting("temperatureRange2").ToString();
|
|
public string TemperatureRange2
|
|
{
|
|
get => _temperatureRange2;
|
|
set
|
|
{
|
|
SetProperty(ref _temperatureRange2, value);
|
|
//更新配置文件中冰箱温度区间
|
|
CommonClass.SaveAppSetting("temperatureRange2", _temperatureRange2);
|
|
}
|
|
}
|
|
private float defaultValue = Convert.ToSingle(CommonClass.ReadAppSetting("temperatureValue"));
|
|
//温度值
|
|
private float _temperatureValue = Convert.ToSingle(CommonClass.ReadAppSetting("temperatureValue"));
|
|
public float TemperatureValue
|
|
{
|
|
get => _temperatureValue;
|
|
set => SetProperty(ref _temperatureValue, value);
|
|
}
|
|
/// <summary>
|
|
/// 根据冰箱温度控制保存按钮是否可点击
|
|
/// </summary>
|
|
private bool _isInvalid;
|
|
public bool IsInvalid
|
|
{
|
|
get => _isInvalid;
|
|
set
|
|
{
|
|
SetProperty(ref _isInvalid, value);
|
|
BtnIsEnable = !IsInvalid;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 根据冰箱温度控制保存按钮是否可用
|
|
/// </summary>
|
|
private bool _btnIsEnable = true;
|
|
public bool BtnIsEnable
|
|
{
|
|
get => _btnIsEnable;
|
|
set => SetProperty(ref _btnIsEnable, value);
|
|
}
|
|
//冰箱状态:true关;false开
|
|
private bool _fridgeState;
|
|
public bool FridgeState
|
|
{
|
|
get => _fridgeState;
|
|
set => SetProperty(ref _fridgeState, value);
|
|
}
|
|
//报警状态:true关;false开
|
|
private bool _alarmState;
|
|
public bool AlarmState
|
|
{
|
|
get => _alarmState;
|
|
set => SetProperty(ref _alarmState, value);
|
|
}
|
|
|
|
|
|
//冰箱2状态:true关;false开
|
|
private bool _fridgeState2;
|
|
public bool FridgeState2
|
|
{
|
|
get => _fridgeState2;
|
|
set => SetProperty(ref _fridgeState2, value);
|
|
}
|
|
//冰箱2报警状态:true关;false开
|
|
private bool _alarmState2;
|
|
public bool AlarmState2
|
|
{
|
|
get => _alarmState2;
|
|
set => SetProperty(ref _alarmState2, value);
|
|
}
|
|
|
|
private int _defaultLoginMode;//1开0关
|
|
|
|
private int _defaultAlarmMode;//1开0关
|
|
|
|
private float retTemperature = Convert.ToSingle(ConfigurationManager.AppSettings["temperatureValue"]);
|
|
|
|
private PortUtil _portUtil;
|
|
IEventAggregator _eventAggregator;
|
|
public FridgeWindowViewModel(PortUtil portUtil, IEventAggregator eventAggregator)
|
|
{
|
|
_portUtil = portUtil;
|
|
_eventAggregator = eventAggregator;
|
|
}
|
|
/// <summary>
|
|
/// 保存按钮
|
|
/// </summary>
|
|
//public DelegateCommand SaveCommand { get => new DelegateCommand(SaveAction, () => !IsInvalid); }
|
|
|
|
public bool KeepAlive => false;
|
|
|
|
//private async void SaveAction()
|
|
//{
|
|
// try
|
|
// {
|
|
// _portUtil.FridgeOperate = true;
|
|
|
|
// //设置温度值验证不通过则直接返回不保存
|
|
// //获取冰箱温度
|
|
// //if (_fridgeState != _defaultLoginMode.Equals(1))
|
|
// //{
|
|
// // ConfigurationManager.RefreshSection("FridgeState");
|
|
// //发送冰箱使能/失能指令
|
|
// if (_fridgeState)
|
|
// {
|
|
// await _portUtil.FridgeOff(1);
|
|
// Thread.Sleep(100);
|
|
// CommonClass.SaveAppSetting("FridgeState", "0");
|
|
// }
|
|
// else
|
|
// {
|
|
// await _portUtil.FridegOpen(1);
|
|
// Thread.Sleep(100);
|
|
// CommonClass.SaveAppSetting("FridgeState", "1");
|
|
// }
|
|
|
|
// //冰箱2 发送冰箱使能/失能指令
|
|
// if (_fridgeState2)
|
|
// {
|
|
// await _portUtil.FridgeOff(2);
|
|
// Thread.Sleep(100);
|
|
// CommonClass.SaveAppSetting("FridgeState2", "0");
|
|
// }
|
|
// else
|
|
// {
|
|
// await _portUtil.FridegOpen(2);
|
|
// Thread.Sleep(100);
|
|
// CommonClass.SaveAppSetting("FridgeState2", "1");
|
|
// }
|
|
// //}
|
|
// //温度报警设定
|
|
// //if (AlarmState != _defaultAlarmMode.Equals(1))
|
|
// //{
|
|
// //发送警报使能/失能指令
|
|
// if (_alarmState)
|
|
// {
|
|
// await _portUtil.FridgeAlarmOff(1);
|
|
// Thread.Sleep(100);
|
|
// CommonClass.SaveAppSetting("AlarmState", "0");
|
|
// }
|
|
// else
|
|
// {
|
|
// await _portUtil.FridgeAlarmOn(1);
|
|
// Thread.Sleep(100);
|
|
// CommonClass.SaveAppSetting("AlarmState", "1");
|
|
// }
|
|
|
|
// //冰箱2 发送警报使能/失能指令
|
|
// if (_alarmState2)
|
|
// {
|
|
// await _portUtil.FridgeAlarmOff(2);
|
|
// Thread.Sleep(100);
|
|
// CommonClass.SaveAppSetting("AlarmState2", "0");
|
|
// }
|
|
// else
|
|
// {
|
|
// await _portUtil.FridgeAlarmOn(2);
|
|
// Thread.Sleep(100);
|
|
// CommonClass.SaveAppSetting("AlarmState2", "1");
|
|
// }
|
|
// //}
|
|
|
|
// //if (retTemperature != TemperatureValue)
|
|
// //{
|
|
// // //设定冰箱温度
|
|
// // await _portUtil.SetFridgeTemperature(TemperatureValue);
|
|
|
|
// // CommonClass.SaveAppSetting("temperatureValue", TemperatureValue.ToString());
|
|
// //}
|
|
// //设定冰箱1温度区间
|
|
// string[] range = ConfigurationManager.AppSettings["temperatureRange"].Split('-');
|
|
// string[] newRange = TemperatureRange.Split('-');
|
|
// if (range.Length >= 2)
|
|
// {
|
|
// bool bMix = float.TryParse(range[0], out float Min);
|
|
// bool bMax = float.TryParse(range[1], out float Max);
|
|
|
|
// if (bMix && bMax)
|
|
// {
|
|
// if (Min != Convert.ToSingle(newRange[0]))
|
|
// {
|
|
// //设定冰箱温度最小值
|
|
// await _portUtil.FridgeMinSetting(Convert.ToSingle(newRange[0]),1);
|
|
// Thread.Sleep(100);
|
|
// }
|
|
// if (Max != Convert.ToSingle(newRange[1]))
|
|
// {
|
|
// Thread.Sleep(100);
|
|
// //设定冰箱温度最大值
|
|
// await _portUtil.FridgeMaxSetting(Convert.ToSingle(newRange[1]), 1);
|
|
// Thread.Sleep(100);
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// //设定冰箱2温度区间
|
|
// string[] range2 = ConfigurationManager.AppSettings["temperatureRange2"].Split('-');
|
|
// string[] newRange2 = TemperatureRange2.Split('-');
|
|
// if (range2.Length >= 2)
|
|
// {
|
|
// bool bMix = float.TryParse(range2[0], out float Min);
|
|
// bool bMax = float.TryParse(range2[1], out float Max);
|
|
|
|
// if (bMix && bMax)
|
|
// {
|
|
// if (Min != Convert.ToSingle(newRange2[0]))
|
|
// {
|
|
// //设定冰箱温度最小值
|
|
// await _portUtil.FridgeMinSetting(Convert.ToSingle(newRange2[0]), 2);
|
|
// Thread.Sleep(100);
|
|
// }
|
|
// if (Max != Convert.ToSingle(newRange2[1]))
|
|
// {
|
|
// Thread.Sleep(100);
|
|
// //设定冰箱温度最大值
|
|
// await _portUtil.FridgeMaxSetting(Convert.ToSingle(newRange2[1]), 2);
|
|
// Thread.Sleep(100);
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// _portUtil.FridgeOperate = false;
|
|
// AlertMsg alertMsg = new AlertMsg
|
|
// {
|
|
// Message = $"保存成功",
|
|
// Type = MsgType.SUCCESS
|
|
// };
|
|
// _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
|
|
|
// //_fridgeState = ReadAppSetting("FridgeState").Equals(1);
|
|
// //_defaultLoginMode = ReadAppSetting("FridgeState");
|
|
// //_defaultAlarmMode = ReadAppSetting("AlarmState");
|
|
// //_alarmState = ReadAppSetting("AlarmState").Equals(1);
|
|
// //_temperatureRange = CommonClass.ReadAppSetting("temperatureRange");
|
|
// //_temperatureValue = Convert.ToSingle(CommonClass.ReadAppSetting("temperatureValue"));
|
|
// }
|
|
// catch (Exception ex)
|
|
// {
|
|
|
|
// AlertMsg alertMsg = new AlertMsg
|
|
// {
|
|
// Message = $"保存异常{ex.ToString}",
|
|
// Type = MsgType.ERROR
|
|
// };
|
|
// _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
|
|
// _portUtil.FridgeOperate = false;
|
|
// }
|
|
//}
|
|
public FridgeWindowViewModel()
|
|
{
|
|
|
|
}
|
|
|
|
//手动实现调用配置的逻辑 规避修改配置文件后不起作用的问题
|
|
public int ReadAppSetting(string key)
|
|
{
|
|
string xPath = "/configuration/appSettings//add[@key='" + key + "']";
|
|
XmlDocument doc = new XmlDocument();
|
|
string exeFileName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
|
|
doc.Load(exeFileName + ".dll.config");
|
|
XmlNode node = doc.SelectSingleNode(xPath);
|
|
return Convert.ToInt32(node.Attributes["value"].Value);
|
|
}
|
|
|
|
public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
|
|
{
|
|
}
|
|
|
|
public void OnNavigatedTo(NavigationContext navigationContext)
|
|
{
|
|
_fridgeState = ReadAppSetting("FridgeState").Equals(0);
|
|
_defaultLoginMode = ReadAppSetting("FridgeState");
|
|
_defaultAlarmMode = ReadAppSetting("AlarmState");
|
|
_alarmState = ReadAppSetting("AlarmState").Equals(0);
|
|
|
|
GetTemperature();
|
|
}
|
|
|
|
public bool IsNavigationTarget(NavigationContext navigationContext)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public void OnNavigatedFrom(NavigationContext navigationContext)
|
|
{
|
|
|
|
}
|
|
|
|
//public void OnNavigatedTo(NavigationContext navigationContext)
|
|
//{
|
|
// GetTemperature();
|
|
//}
|
|
|
|
//public bool IsNavigationTarget(NavigationContext navigationContext)
|
|
//{
|
|
// return true;
|
|
//}
|
|
|
|
//public void OnNavigatedFrom(NavigationContext navigationContext)
|
|
//{
|
|
//}
|
|
//获取冰箱温度值,如有更改则保存更改
|
|
private async Task GetTemperature()
|
|
{
|
|
|
|
//float retT = await _portUtil.GetFridgeTemperature();
|
|
}
|
|
}
|
|
}
|