123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925 |
- using MV485.db;
- using MV485.Dlg;
- using MV485.helper;
- using MV485.model;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Collections.Specialized;
- using System.ComponentModel;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Imaging;
- using System.Windows.Navigation;
- using System.Windows.Shapes;
- namespace MV485.uc
- {
- /// <summary>
- /// UCMonitorData2.xaml 的交互逻辑
- /// </summary>
- public partial class UCMonitorData2 : UserControl,INotifyPropertyChanged
- {
- public event PropertyChangedEventHandler PropertyChanged;
- protected void OnPropertyChanged(string propertyName)
- {
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
- }
- private PollingManager _pollingManager;
- public int[] PageSizeOptions = new int[] { 10, 20, 50 };
- public ObservableCollection<TSlave> _slaveList { get; set; }
- public ObservableCollection<TSlaveDetail> _slaveDetailList { get; set; }
- public RWRunConfig _rwRunConfig; // = new RWRunConfig();
-
- public int SlaveRecords
- {
- get => _slaveList.Count();
- }
- private TSlave _selectedTSlave;
- public TSlave SelectedTSlave
- {
- get => _selectedTSlave;
- set
- {
- if(_selectedTSlave != value)
- {
- _selectedTSlave = value;
- OnPropertyChanged(nameof(SelectedTSlave));
- //改变明细数据
- DetailPage.InitDefaulValue();
- LoadSlaveDetailList(_selectedTSlave.SlaveId);
- ChangeSlaveInfo(_selectedTSlave);
- }
- }
- }
- private void ChangeSlaveInfo(TSlave slave)
- {
- if(slave == null)
- {
- txtSlaveInfo.Text = "";
- }
- else
- {
- txtSlaveInfo.Text = $"{slave.PortName} - {slave.BaudRate} 地址:{slave.Address}";
- }
- }
- private int _slaveDetailRecords;
- public int SlaveDetailRecords
- {
- get => _slaveDetailRecords;
- set
- {
- if(_slaveDetailRecords != value)
- {
- _slaveDetailRecords = value;
- OnPropertyChanged(nameof(SlaveDetailRecords));
- }
- }
- }
- private TSlaveDetail _selectedTSlaveDetail;
- public TSlaveDetail SelectedTSlaveDetail
- {
- get => _selectedTSlaveDetail;
- set
- {
- if(_selectedTSlaveDetail != value)
- {
- _selectedTSlaveDetail = value;
- OnPropertyChanged(nameof(SelectedTSlaveDetail));
- }
- }
- }
- public PageModel DetailPage { get; set; }
- private int _curPageSize;
- public int CurPageSize
- {
- get => _curPageSize;
- set
- {
- if(_curPageSize != value)
- {
- _curPageSize = value;
- OnPropertyChanged(nameof(CurPageSize));
- DetailPage.InitDefaulValue(CurPageSize);
- LoadSlaveDetailList(SelectedTSlave?.SlaveId ?? null);
- ConfigManager.Instance.UpdateConfig(ConfigKey.PageSize, _curPageSize.ToString());
- }
- }
- }
- public UCMonitorData2()
- {
- InitializeComponent();
- _slaveList = new ObservableCollection<TSlave>();
- dgSlave.ItemsSource = _slaveList;
- _slaveDetailList = new ObservableCollection<TSlaveDetail>();
- dgSlaveDetail.ItemsSource = _slaveDetailList;
- cmbPageSize.ItemsSource = PageSizeOptions;
- this.DataContext = this;
- _slaveList.CollectionChanged += _slaveList_CollectionChanged;
- //LoadSlaveList();
- if(int.TryParse(ConfigManager.Instance.GetConfigValue(ConfigKey.PageSize, "20"),out int curPageSize))
- {
- _curPageSize = curPageSize;
- }
- else
- {
- _curPageSize = 20;
- }
- DetailPage = new PageModel()
- {
- PageSize = _curPageSize,
- PageNumber = 1
- };
- ChangeSlaveInfo(null);
- //设置左侧的宽度
- string sLeftWidth = ConfigManager.Instance.GetConfigValue(ConfigKey.DataLeftWidth, "500");
- if(int.TryParse(sLeftWidth,out int leftWidth))
- {
- MainGrid.ColumnDefinitions[0].Width = new GridLength(leftWidth, GridUnitType.Pixel);
- }
- _rwRunConfig = new RWRunConfig();
- _rwRunConfig.RWLog += _rwRunConfig_RWLog;
- _rwRunConfig.SerialConnected += _rwRunConfig_SerialConnected;
- _rwRunConfig.SerialStatusChanged += _rwRunConfig_SerialStatusChanged;
- //string strAutoListenData = ConfigManager.Instance.GetConfigValue(ConfigKey.AutoListenData, "true");
- //bool isAutoListenData = bool.Parse(strAutoListenData);
- //chkAutoListenData.IsChecked = isAutoListenData;
- //_pollingManager = new PollingManager(!isAutoListenData);
- _pollingManager = new PollingManager(true);
- _pollingManager.SlaveDetailAdded += _pollingManager_OnAddSlaveDetail;
- _pollingManager.SlaveStatusChanged += _pollingManager_SlaveStatusChanged;
- //_pollingManager.StartPolling();
- LoadSlaveList();
- if(bool.TryParse(ConfigManager.Instance.GetConfigValue(ConfigKey.AutoListenData,"True"),out bool isAutoListen))
- {
- chkAutoListenData.IsChecked = isAutoListen;
- }
- }
- //设备的变化
- private void _slaveList_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
- {
- //throw new NotImplementedException();
- switch (e.Action)
- {
- case NotifyCollectionChangedAction.Add:
- foreach (TSlave item in e.NewItems)
- {
- //Console.WriteLine($"新增:{item}");
- //_pollingManager.AddDevice(item);
- }
- break;
- case NotifyCollectionChangedAction.Remove:
- foreach (TSlave item in e.OldItems)
- {
- //Console.WriteLine($"移除:{item}");
- }
- break;
- case NotifyCollectionChangedAction.Replace:
- //Console.WriteLine("替换操作");
- break;
- case NotifyCollectionChangedAction.Reset:
- //Console.WriteLine("集合被清空");
- break;
- }
- }
- //已经读到数据了
- private void _pollingManager_OnAddSlaveDetail(TSlaveDetail detail)
- {
- if (detail != null)
- {
- RefreshSlave(detail.SlaveId);
- }
- if (SelectedTSlave == null || detail == null || SelectedTSlave.SlaveId != detail.SlaveId) return;
- Dispatcher.BeginInvoke(new Action(() =>
- {
- if (DetailPage.PageNumber == 1)
- {
- _slaveDetailList.Insert(0, detail);
- SlaveDetailRecords++;
- DetailPage.PageCount = (int)Math.Ceiling(((double)SlaveDetailRecords / DetailPage.PageSize));
- if (_slaveDetailList.Count > DetailPage.PageSize)
- {
- for (int i = _slaveDetailList.Count - 1; i >= DetailPage.PageSize; i--)
- {
- _slaveDetailList.Remove(_slaveDetailList[i]);
- }
- }
- for(int i = 0; i < _slaveDetailList.Count; i++)
- {
- _slaveDetailList[i].Index = i + 1;
- }
- }
- }));
- }
- private void _pollingManager_SlaveStatusChanged(string slaveId, RunStatusType runStatus)
- {
- var device = _slaveList.FirstOrDefault(t => t.SlaveId == slaveId);
- if (device != null)
- {
- device.RunStatus = runStatus;
- }
- }
- private void _rwRunConfig_SerialStatusChanged(bool blConnected,string portName,int baudrate,byte address)
- {
-
- }
- private void _rwRunConfig_SerialConnected(bool blStatusChanged,string portName,int baudrate,byte address)
- {
- }
- private void _rwRunConfig_RWLog(string message)
- {
- Logger.Info(message);
- }
- private async void LoadSlaveList()
- {
- _slaveList.Clear();
- _pollingManager.RemoveAllDevice();
- try
- {
- var slaveList = await Task.Run(() =>
- {
- return DBSlave.GetAllTSlaves();
- });
- int index = 0;
- foreach(var slave in slaveList)
- {
- index++;
- slave.Index = index;
- _slaveList.Add(slave);
- }
- OnPropertyChanged(nameof(SlaveRecords));
- //await Dispatcher.BeginInvoke(new Action(() =>
- //{
- // _pollingManager.AddDevice(_slaveList); //加入所有
- //}));
- await Task.Run(() => _pollingManager.AddDevice(_slaveList));
- }
- catch(Exception ex)
- {
- MessageBox.Show(Application.Current.MainWindow,
- $"加载数据时发生错误:{ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- }
- private async void LoadSlaveDetailList(string slaveId)
- {
- _slaveDetailList.Clear();
- if (slaveId == null) return;
- try
- {
- var result = await Task.Run(() =>
- {
- //return DBSlaveDetail.GetSlaveDetailBySlaveId(slaveId);
- return DBSlaveDetail.GetPagedTSlaveDetails(DetailPage.PageNumber, DetailPage.PageSize, slaveId);
- });
- SlaveDetailRecords = result.Item1;
- DetailPage.PageCount = result.Item2;
- var detailList = result.Item3;
- int index = 0;
- foreach(var detail in detailList)
- {
- index++;
- detail.Index = index + ((DetailPage.PageNumber - 1) * DetailPage.PageSize);
- _slaveDetailList.Add(detail);
- }
- //OnPropertyChanged(nameof(SlaveDetailRecords));
- }catch(Exception ex)
- {
- MessageBox.Show(Application.Current.MainWindow,
- $"加载数据时发生错误:{ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- }
- private void BtnAddDevice_Click(object sender, RoutedEventArgs e)
- {
- DlgAddDevice dlg = new DlgAddDevice()
- {
- Owner = Application.Current.MainWindow,
- WindowStartupLocation = WindowStartupLocation.CenterOwner
- };
- if(dlg.ShowDialog() == true)
- {
- //添加到列表中
- if(dlg.NewSlaveList != null && dlg.NewSlaveList.Count > 0)
- {
- foreach(var slave in dlg.NewSlaveList)
- {
- slave.Index = _slaveList.Count + 1;
- _slaveList.Add(slave);
- _pollingManager?.AddDevice(slave);
- }//foreach
-
- OnPropertyChanged(nameof(SlaveRecords));
- }
- }
- }
- private void BtnRefreshSlave_Click(object sender, RoutedEventArgs e)
- {
- LoadSlaveList();
- }
- private void DgSlave_LoadingRow(object sender, DataGridRowEventArgs e)
- {
- // 设置第一列显示的行号,从 1 开始
- e.Row.Header = (e.Row.GetIndex() + 1).ToString();
- }
- private void BtnDelSlave_Click(object sender, RoutedEventArgs e)
- {
- Button button = sender as Button;
- if (button == null) return;
- DataGridRow row = Tools.FindAncestor<DataGridRow>(button);
- if (row == null) return;
- //获取当前行绑定的数据项
- TSlave slave = row.Item as TSlave;
- DeleteSelectedSlave(slave);
- }
- private async void DeleteSelectedSlave(TSlave slave)
- {
- if (slave == null) return;
- MessageBoxResult result = MessageBox.Show("确定要删除此条目吗?", "确认删除", MessageBoxButton.YesNo, MessageBoxImage.Question);
- if (result != MessageBoxResult.Yes) return;
- string titleInfo = "正在删除,请稍后...";
- WaitWindow waitWindow = new WaitWindow(titleInfo)
- {
- Owner = Application.Current.MainWindow,
- WindowStartupLocation = WindowStartupLocation.CenterOwner
- };
- waitWindow.Show();
- try
- {
- bool deleteSuccess = false;
- await Task.Run(() =>
- {
- deleteSuccess = DBSlave.DeleteSlaveAndDetails(slave.SlaveId);
- });
- if (deleteSuccess)
- {
- int index = _slaveList.IndexOf(slave);
- _slaveList.Remove(slave);
- for(int i = index; i < _slaveList.Count; i++)
- {
- _slaveList[i].Index = i+1;
- }
- //改变它后面的Index
- SelectedTSlave = null;
- _pollingManager?.RemoveDevice(slave.SlaveId);
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(Application.Current.MainWindow, $"删除失败:{ex.Message}", "错误",
- MessageBoxButton.OK, MessageBoxImage.Error);
- }
- finally
- {
- waitWindow.Close();
- }
- }
- private async void BtnClearData_Click(object sender, RoutedEventArgs e)
- {
- if (SelectedTSlave == null) return;
- MessageBoxResult result = MessageBox.Show("确定要清空所有数据吗?", "确认", MessageBoxButton.YesNo, MessageBoxImage.Question);
- if (result != MessageBoxResult.Yes) return;
- string titleInfo = "正在清空数据,请稍后...";
- WaitWindow waitWindow = new WaitWindow(titleInfo)
- {
- Owner = Application.Current.MainWindow,
- WindowStartupLocation = WindowStartupLocation.CenterOwner
- };
- waitWindow.Show();
- try
- {
- bool deleteSuccess = false;
- await Task.Run(() =>
- {
- deleteSuccess = DBSlaveDetail.DeleteSlaveDetailBySlaveId(SelectedTSlave.SlaveId);
- });
- if (deleteSuccess)
- {
- DetailPage.InitDefaulValue();
- _slaveDetailList.Clear();
- SlaveDetailRecords = 0;
- //RefreshSlaveCount(SelectedTSlave.SlaveId);
- RefreshSlave(SelectedTSlave.SlaveId);
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(Application.Current.MainWindow, $"删除失败:{ex.Message}", "错误",
- MessageBoxButton.OK, MessageBoxImage.Error);
- }
- finally
- {
- waitWindow.Close();
- }
- }
- private async void RefreshSlaveCount(string slaveId)
- {
- TSlave slave = await Task.Run(() =>
- {
- return DBSlave.GetVSlaveBySlaveId(slaveId);
- });
- if(slave != null)
- {
- var result = _slaveList.FirstOrDefault(s => s.SlaveId == slaveId);
- if (result != null)
- {
- result.DetailCount = slave.DetailCount;
- }
- }
- }
- private async void RefreshSlave(string slaveId)
- {
- TSlave newSlave = await Task.Run(() =>
- {
- return DBSlave.GetVSlaveBySlaveId(slaveId);
- });
- if (newSlave != null)
- {
- var oldSlave = _slaveList.FirstOrDefault(s => s.SlaveId == slaveId);
- var oldRunStatus = oldSlave.RunStatus;
- if (oldSlave != null)
- {
- //result.DetailCount = slave.DetailCount;
- //ObjectHelper.CopyMatchingFields(newSlave, oldSlave);
- //oldSlave.RunStatus = oldRunStatus;
- oldSlave.ReadInterval = newSlave.ReadInterval;
- oldSlave.ReadImageFlag = newSlave.ReadImageFlag;
- oldSlave.RunFlag = newSlave.RunFlag;
- oldSlave.LastReadTime = newSlave.LastReadTime;
- oldSlave.DetailCount = newSlave.DetailCount;
- }
- }
- }
- private void BtnDataFirstPage_Click(object sender, RoutedEventArgs e)
- {
- if (SelectedTSlave == null) return;
- if(DetailPage.PageNumber > 1)
- {
- DetailPage.PageNumber = 1;
- LoadSlaveDetailList(SelectedTSlave.SlaveId);
- }
- }
- private void BtnDataPrePage_Click(object sender, RoutedEventArgs e)
- {
- if (SelectedTSlave == null) return;
- if(DetailPage.PageNumber > 1)
- {
- DetailPage.PageNumber -= 1;
- LoadSlaveDetailList(SelectedTSlave.SlaveId);
- }
- }
- private void BtnDataNextPage_Click(object sender, RoutedEventArgs e)
- {
- if (SelectedTSlave == null) return;
- if(DetailPage.PageNumber < DetailPage.PageCount)
- {
- DetailPage.PageNumber += 1;
- LoadSlaveDetailList(SelectedTSlave.SlaveId);
- }
- }
- private void BtnDataLastPage_Click(object sender, RoutedEventArgs e)
- {
- if (SelectedTSlave == null) return;
- if(DetailPage.PageNumber < DetailPage.PageCount)
- {
- DetailPage.PageNumber = DetailPage.PageCount;
- LoadSlaveDetailList(SelectedTSlave.SlaveId);
- }
- }
- private void BtnDataSpeciPage_Click(object sender, RoutedEventArgs e)
- {
- if (SelectedTSlave == null) return;
- if(!int.TryParse(txtDataPageNumber.Text,out int pageNumber))
- {
- return;
- }
- if (pageNumber != DetailPage.PageNumber &&
- pageNumber > 0 && pageNumber <= DetailPage.PageCount)
- {
- DetailPage.PageNumber = pageNumber;
- LoadSlaveDetailList(SelectedTSlave.SlaveId);
- }
- }
- private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
- {
- // 只允许数字输入
- e.Handled = !Regex.IsMatch(e.Text, @"^\d$");
- //if (e.Text.All(char.IsDigit))
- //{
- // e.Handled = false; // 如果是数字,允许输入
- //}
- //else
- //{
- // // 如果当前输入的字符不是数字,并且是中文输入法的拼音或候选字,禁止输入
- // e.Handled = true;
- //}
- }
- private void BtnLogViewer_Click(object sender, RoutedEventArgs e)
- {
- }
- private void BtnDelSlaveDetail_Click(object sender, RoutedEventArgs e)
- {
- Button button = sender as Button;
- if (button == null) return;
- DataGridRow row = Tools.FindAncestor<DataGridRow>(button);
- if (row == null) return;
- //获取当前行绑定的数据项
- TSlaveDetail slaveDetail = row.Item as TSlaveDetail;
- DeleteSelectedSlaveDetail(slaveDetail);
- }
- private async void DeleteSelectedSlaveDetail(TSlaveDetail slaveDetail)
- {
- if (slaveDetail == null) return;
- MessageBoxResult result = MessageBox.Show("确定要删除此条目吗?", "确认删除", MessageBoxButton.YesNo, MessageBoxImage.Question);
- if (result != MessageBoxResult.Yes) return;
- string titleInfo = "正在删除,请稍后...";
- WaitWindow waitWindow = new WaitWindow(titleInfo)
- {
- Owner = Application.Current.MainWindow,
- WindowStartupLocation = WindowStartupLocation.CenterOwner
- };
- waitWindow.Show();
- try
- {
- bool deleteSuccess = false;
- await Task.Run(() =>
- {
- deleteSuccess = DBSlaveDetail.DeleteSlaveDetailByDetailId(slaveDetail.DetailId);
- });
- if (deleteSuccess)
- {
- //int index = _slaveList.IndexOf(slave);
- _slaveDetailList.Remove(slaveDetail);
- //for (int i = index; i < _slaveList.Count; i++)
- //{
- // _slaveList[i].Index = i + 1;
- //}
- //改变它后面的Index
- SelectedTSlaveDetail = null;
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(Application.Current.MainWindow, $"删除失败:{ex.Message}", "错误",
- MessageBoxButton.OK, MessageBoxImage.Error);
- }
- finally
- {
- waitWindow.Close();
- }
- }
- private void MeterImage_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
- {
- var image = sender as Image;
- if (image == null) return;
- var dataContext = image.DataContext as TSlaveDetail;
- if (dataContext == null) return;
- //var dialog = new ImageViewerWindow(dataContext.SourceImagePath)
- if (!File.Exists(dataContext.ImageFile)) return;
- //((MainWindow)Application.Current.MainWindow).overlay.Visibility = Visibility.Visible;
- DlgImage dialog = new DlgImage(dataContext.ImageFile)
- {
- Owner = Application.Current.MainWindow
- };
- //dialog.ShowDialog();
- dialog.Show();
- }
- private void BtnUpdateDevice_Click(object sender, RoutedEventArgs e)
- {
- if (SelectedTSlave == null) return;
- DlgUpdateDevice dlg = new DlgUpdateDevice(SelectedTSlave)
- {
- Owner = Application.Current.MainWindow,
- WindowStartupLocation = WindowStartupLocation.CenterOwner
- };
- if(dlg.ShowDialog() == true)
- {
- //TSlave对象已经被更改,会自动刷新,不需要调用函数刷新
- //RefreshSlave(SelectedTSlave.)
- }
- }
- private void BtnConnectTest_Click(object sender, RoutedEventArgs e)
- {
- TestConnect(SelectedTSlave);
- }
- //测试连接
- private async void TestConnect(TSlave slave)
- {
- if (slave == null) return;
- //开始通过xModem协议读取照片
- string titleInfo = "正在测试设备是否可连接";
- WaitWindow waitWindow = new WaitWindow(titleInfo)
- {
- Owner = Application.Current.MainWindow,
- WindowStartupLocation = WindowStartupLocation.CenterOwner
- };
- waitWindow.Show();
- string message = "";
- bool blConnected = false;
- try
- {
- blConnected = await Task.Run(() =>
- {
- return _rwRunConfig.ConnectTest(slave.PortName, slave.BaudRate, (byte)slave.Address, out message);
- });
- }
- catch { }
- finally
- {
- waitWindow.Close();
- }
- MessageBox.Show(Application.Current.MainWindow, message, "提示",
- MessageBoxButton.OK, blConnected ? MessageBoxImage.Information : MessageBoxImage.Error);
- }
- private bool _needImage = true;
- private async void BtnClearDataA_Click(object sender, RoutedEventArgs e)
- {
- if(SelectedTSlave == null)
- {
- return;
- }
- TSlaveDetail slaveDetail = new TSlaveDetail()
- {
- DetailId = Guid.NewGuid().ToString().Replace("-", ""),
- SlaveId = SelectedTSlave.SlaveId,
- DeviceSn = "12345678934",
- ReadTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
- SampleResult = 9872233,
- SampleTime = DateTime.Now.AddHours(-1).ToString("yyyy-MM-dd HH:mm:ss"),
- MeterType = 1,
- ImageFile = ""
- };
- if (_needImage)
- {
- _needImage = false;
- slaveDetail.ImageFile = @"C:\test_image\24050131011_20240808000918_B.jpg";
- }
- else
- {
- _needImage = true;
- }
- bool blInsert = await Task.Run(() =>
- {
- return DBSlaveDetail.InsertTSlaveDetail(slaveDetail);
- });
- if (blInsert)
- {
- _slaveDetailList.Insert(0,slaveDetail);
- SlaveDetailRecords++;
- DetailPage.PageCount = (int)Math.Ceiling(((double)SlaveDetailRecords / DetailPage.PageSize));
- //RefreshSlaveCount(SelectedTSlave.SlaveId);
- RefreshSlave(SelectedTSlave.SlaveId);
- }
- if(_slaveDetailList.Count > DetailPage.PageSize)
- {
- for(int i = _slaveDetailList.Count-1; i >= 10; i--)
- {
- _slaveDetailList.Remove(_slaveDetailList[i]);
- }
- }
- }
- private void GridSplitter_DragCompleted(object sender, System.Windows.Controls.Primitives.DragCompletedEventArgs e)
- {
- // 获取左侧和右侧列宽
- var leftWidth = MainGrid.ColumnDefinitions[0].Width;
- //var rightWidth = MainGrid.ColumnDefinitions[2].Width;
- // 如果是像素(不是*),可以这样获取实际值
- if (leftWidth.IsAbsolute)
- {
- double leftPixels = leftWidth.Value;
- //Console.WriteLine($"左宽度: {leftPixels}, 右宽度: {rightPixels}");
- // TODO: 保存这两个值(比如写入设置文件、数据库等)
- }
- //保存以上2个的值
- ConfigManager.Instance.UpdateConfig(ConfigKey.DataLeftWidth, leftWidth.Value.ToString());
- }
- private void BtnRefreshSlaveDetail_Click(object sender, RoutedEventArgs e)
- {
- if (SelectedTSlave == null) return;
- DetailPage.InitDefaulValue();
- LoadSlaveDetailList(SelectedTSlave.SlaveId);
- }
- private void MiConnectTest_Click(object sender, RoutedEventArgs e)
- {
- TestConnect(SelectedTSlave);
- }
- private void MiUpdateSlave_Click(object sender, RoutedEventArgs e)
- {
- if (SelectedTSlave == null) return;
- DlgUpdateDevice dlg = new DlgUpdateDevice(SelectedTSlave)
- {
- Owner = Application.Current.MainWindow,
- WindowStartupLocation = WindowStartupLocation.CenterOwner
- };
- if (dlg.ShowDialog() == true)
- {
- //TSlave对象已经被更改,会自动刷新,不需要调用函数刷新
- //RefreshSlave(SelectedTSlave.)
- }
- }
- private void MiDeleteSlave_Click(object sender, RoutedEventArgs e)
- {
- if (SelectedTSlave == null) return;
- DeleteSelectedSlave(SelectedTSlave);
- }
- private void MiDeleteSlaveDetail_Click(object sender, RoutedEventArgs e)
- {
- if (SelectedTSlaveDetail == null) return;
- DeleteSelectedSlaveDetail(SelectedTSlaveDetail);
- }
- private void UserControl_Unloaded(object sender, RoutedEventArgs e)
- {
- //停止数据的监听
- //_pollingManager?.StopAll();
- _pollingManager?.Pause();
- }
- private void UserControl_Loaded(object sender, RoutedEventArgs e)
- {
- //string strAutoListenData = ConfigManager.Instance.GetConfigValue(ConfigKey.AutoListenData, "true");
- //bool isAutoListenData = bool.Parse(strAutoListenData);
- //chkAutoListenData.IsChecked = isAutoListenData;
- if(_pollingManager!=null && chkAutoListenData.IsChecked == true)
- {
- _pollingManager?.Resume();
- }else if(_pollingManager != null && chkAutoListenData.IsChecked == false)
- {
- _pollingManager?.Pause();
- }
- }
- private void CheckBox_Checked(object sender, RoutedEventArgs e)
- {
- //if (_pollingManager != null)
- //{
- // _pollingManager?.Resume();
- // ConfigManager.Instance.UpdateConfig(ConfigKey.AutoListenData, true.ToString());
- //}
- }
- private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
- {
- //if (_pollingManager != null)
- //{
- // _pollingManager?.Pause();
- // ConfigManager.Instance.UpdateConfig(ConfigKey.AutoListenData, false.ToString());
- //}
- }
- private void ChkAutoListenData_Click(object sender, RoutedEventArgs e)
- {
- //if (_pollingManager != null)
- //{
- if (chkAutoListenData.IsChecked == true)
- {
- _pollingManager?.Resume();
- }
- else
- {
- _pollingManager?.Pause();
- }
- ConfigManager.Instance.UpdateConfig(ConfigKey.AutoListenData, chkAutoListenData.IsChecked.ToString());
- //}
- }
- private void BtnSetImagePath_Click(object sender, RoutedEventArgs e)
- {
- DlgSaveImagePath dlgSave = new DlgSaveImagePath()
- {
- Owner = Application.Current.MainWindow,
- WindowStartupLocation = WindowStartupLocation.CenterOwner
- };
- dlgSave.ShowDialog();
- }
- //----------------------------------------------------------
- }
- }
|