| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- using CommunityToolkit.Mvvm.ComponentModel;
- using ivf_tl_Entity.ComEntitys;
- using ivf_tl_Entity.DebugEntitys;
- using ivf_tl_Entity.DTO;
- using ivf_tl_Entity.GlobalEnums;
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Configuration;
- using System.DirectoryServices.ActiveDirectory;
- using System.Linq;
- using System.Security.Principal;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- namespace ivf_tl_Operate.ViewModel
- {
- public partial class BufferDebugViewModel : ObservableObject
- {
- public event Action<string> MessageEvent;
- private ComBin comBin = null;
- /// <summary>
- /// 仪器设置
- /// </summary>
- public TLSetting tLSetting = new TLSetting();
- [ObservableProperty]
- private HouseInfo currentHouse = null;
- /// <summary>
- /// 仪器温度1
- /// </summary>
- [ObservableProperty]
- private decimal temperature1 = 0m;
- /// <summary>
- /// 仪器温度2
- /// </summary>
- [ObservableProperty]
- private decimal temperature2 = 0m;
- /// <summary>
- /// 压力
- /// </summary>
- [ObservableProperty]
- private decimal bufferBottlePressure = 0m;
- [ObservableProperty]
- private int ledLight = 0;
- [ObservableProperty]
- private ObservableCollection<string> messageInfoList = new ObservableCollection<string>();
- private void ExLog(Exception ex, string name)
- {
- AppData.Instance.LogHelper.ExceptionLog(ex, $"HouseDebugPageViewModel.{name}", LogEnum.RunException);
- }
- private void ErrorLog(string message, LogEnum logType)
- {
- AppData.Instance.LogHelper.TLLog($"HouseDebugPageViewModel.{message}", logType);
- }
- public void Start(ref string errora)
- {
- try
- {
- SerialBin serialBin = new SerialBin();
- serialBin.TLLogEvent += AppData.Instance.LogHelper.TLLog;
- serialBin.ExceptionLogEvent += AppData.Instance.LogHelper.ExceptionLog;
- serialBin.HouseLogEvent += AppData.Instance.LogHelper.HouseLog;
- var errorList = serialBin.UpdataCamera();
- AppData.Instance.LogHelper.TLLog($"ccdidsn:{JsonConvert.SerializeObject(serialBin.CCDidSn)}", LogEnum.RunRecord);
- if (errorList.Any())
- {
- errora = $"获取相机Id和CCDSN错误{JsonConvert.SerializeObject(errorList)}";
- AppData.Instance.LogHelper.TLLog(errora, LogEnum.RunRecord);
- return;
- }
- errorList = serialBin.Start(ConfigurationManager.AppSettings["autoFocus"].ToString());
- AppData.Instance.LogHelper.TLLog($"舱室信息:{JsonConvert.SerializeObject(serialBin.SerialModels)}", LogEnum.RunRecord);
- AppData.Instance.LogHelper.TLLog($"E方数据:{JsonConvert.SerializeObject(serialBin.HouseEEPROInfos)}", LogEnum.RunRecord);
- if (errorList.Any())
- {
- errora = $"获取串口信息错误{JsonConvert.SerializeObject(errorList)}";
- AppData.Instance.LogHelper.TLLog(errora, LogEnum.RunRecord);
- return;
- }
- var modelCount = serialBin.SerialModels.Count;
- if (modelCount != 11)
- {
- string messageinfo = $"检测到{modelCount}个模块,是否继续运行?";
- MessageBoxResult aaa = MessageBox.Show(messageinfo, "提示", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No, MessageBoxOptions.DefaultDesktopOnly);
- if (aaa != MessageBoxResult.Yes)
- {
- errora = "结束";
- return;
- }
- }
- List<int> listIntRunHoues = serialBin.SerialModels.Select(x => x.houseSn).ToList();
- TLInitData tLInitData = new TLInitData();
- tLInitData.tlSn = $"NEO-1-{serialBin.TLNum}";
- tLInitData.dayLighting = serialBin.dayLighting;
- tLInitData.softwareVersion = "V2.0.0";
- tLInitData.verticalMotorPulseMax = 125000;
- tLInitData.houseLinkDataList = serialBin.SerialModels.OrderBy(x => x.houseSn).ToList();
- foreach (var item in serialBin.HouseEEPROInfos)
- {
- item.tlSn = tLInitData.tlSn;
- }
- tLInitData.houseEEPROInitDTOList = serialBin.HouseEEPROInfos.OrderBy(x => x.houseSn).ToList();
- AppData.Instance.LogHelper.TLLog($"舱室信息:{JsonConvert.SerializeObject(tLInitData)}", LogEnum.RunRecord);
- SettingDataApiData settingDataApiData = AppData.Instance.HttpHelper.GetSettingDataApi(tLInitData);
- if (settingDataApiData == null)
- {
- errora = $"{tLInitData.tlSn}获取仪器设置失败";
- return;
- }
- AppData.Instance.LogHelper.TLLog(JsonConvert.SerializeObject(settingDataApiData), LogEnum.RunRecord);
- tLSetting = AppData.Instance.ConvertHelper.ConvertToTLSetting(settingDataApiData.tlInfo, settingDataApiData.tlSetting);
- CurrentHouse = settingDataApiData.houseList.FirstOrDefault(x => x.houseSn == 11);
- if (CurrentHouse == null)
- {
- errora = $"{tLInitData.tlSn}获取缓冲瓶信息失败";
- return;
- }
- }
- catch (Exception ex)
- {
- AppData.Instance.LogHelper.ExceptionLog(ex, $"缓冲瓶调试模式初始化", LogEnum.RunException);
- errora = $"缓冲瓶调试模式初始化异常:{ex.Message}";
- }
- }
- public async Task ComHouseInit()
- {
- await Task.Run(async () =>
- {
- try
- {
- comBin = new ComBin(CurrentHouse.houseSn, CurrentHouse.housePort);
- comBin.CommandLogEvent += ComBin_CommandLogEvent;
- comBin.ErrorLogEvent += ComBin_ErrorLogEvent;
- comBin.ExceptionLogEvent += ComBin_ExceptionLogEvent;
- comBin.AddMessageInfoEvent += AddMessageInfo;
- var openPort = comBin.OpenPort();
- if (openPort)
- {
- AddMessageInfo($"[{currentHouse.houseSn}][{currentHouse.housePort}]缓冲瓶串口打开成功");
- }
- else
- {
- AddMessageInfo($"[{currentHouse.houseSn}][{currentHouse.housePort}]缓冲瓶串口打开失败");
- return;
- }
- CustomProtocol custom = new CustomProtocol();
- comBin.ShakeHandsWait(custom);
- RedL();
- var a = comBin.BufferBottleState(custom);
- BufferBottlePressure = a.Item1;
- Temperature1 = a.Item2;
- Temperature2 = a.Item3;
- return;
- }
- catch (Exception ex)
- {
- AppData.Instance.LogHelper.ExceptionLog(ex, "缓冲瓶调试模式初始化", LogEnum.RunException);
- AddMessageInfo($"初始化异常:{ex.Message}");
- return;
- }
- });
- }
- public bool ComHouseUnit()
- {
- try
- {
- if (comBin != null) AddMessageInfo($"[{currentHouse.houseSn}][{currentHouse.housePort}]缓冲瓶串口卸载结果:{comBin.ClosePort()}");
- comBin = null;
- return true;
- }
- catch (Exception ex)
- {
- AppData.Instance.LogHelper.ExceptionLog(ex, "缓冲瓶卸载", LogEnum.RunException);
- AddMessageInfo($"缓冲瓶卸载异常:{ex.Message}");
- return false;
- }
- }
- public void BufferState()
- {
- CustomProtocol custom = new CustomProtocol();
- var a = comBin.BufferBottleState(custom);
- BufferBottlePressure = a.Item1;
- Temperature1 = a.Item2;
- Temperature2 = a.Item3;
- }
- public void Are()
- {
- CustomProtocol custom = new CustomProtocol();
- comBin.BufferBottleAerationWait(custom);
- }
- /// <summary>
- /// 进气阀打开时间
- /// </summary>
- /// <param name="newValue"></param>
- public void writeE(int newValue)
- {
- CustomProtocol custom = new CustomProtocol();
- comBin.WriteEEPROOpenIntakeTimeBufferWait(custom, newValue);
- CurrentHouse.inletValveOpeningTime = newValue;
- AddMessageInfo($"进气阀打开时间保存服务器结果:{AppData.Instance.HttpHelper.LightsUpdateApi(tLSetting.tlSn, LedLight, CurrentHouse.inletValveOpeningTime)}");
- }
- /// <summary>
- /// 设置灯光亮度
- /// </summary>
- /// <param name="newValue"></param>
- public void writeL(int newValue)
- {
- CustomProtocol custom = new CustomProtocol();
- comBin.WriteEEPROMLightNumWait(custom, newValue);
- LedLight = newValue;
- AddMessageInfo($"灯光亮度保存服务器结果:{AppData.Instance.HttpHelper.LightsUpdateApi(tLSetting.tlSn, LedLight, CurrentHouse.inletValveOpeningTime)}");
- }
- public void RedL()
- {
- CustomProtocol custom = new CustomProtocol();
- LedLight = comBin.ReadEEPROMLightNumWait(custom);
- }
- private void ComBin_ExceptionLogEvent(Exception exception, string arg2, string arg3, LogEnum @enum)
- {
- AppData.Instance.LogHelper.ExceptionLog(exception, $"{arg2}{arg3}", @enum);
- }
- private void ComBin_ErrorLogEvent(string arg1, LogEnum @enum)
- {
- AppData.Instance.LogHelper.TLLog(arg1, @enum);
- }
- private void ComBin_CommandLogEvent(int arg1, DateTime time, string arg3, LogEnum @enum)
- {
- AppData.Instance.LogHelper.HouseLog(arg1, time, arg3, @enum);
- }
- public void AddMessageInfo(string mess)
- {
- MessageEvent?.Invoke(mess);
- }
- }
- }
|