alielie
2025-04-10 6bcafc823e836ecd5790f87178a906333699f868
Plugin.TestResult/SingleCell.xaml.cs
@@ -1,10 +1,12 @@
using Plugin.TestResult_WPF.Constant;
using HMI.Util;
using Plugin.TestResult_WPF.Constant;
using Plugin.TestResult_WPF.Model;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.IO;
using System.Runtime.CompilerServices;
using System.Windows;
using System.Windows.Controls;
@@ -42,13 +44,15 @@
            InitializeComponent();
        }
        public SingleCell(string parentName, int index, int maxSize)
        public SingleCell(string parentName, int index, int maxSize, string iniFile)
        {
            this.parentName = parentName;
            this.index = index;
            this.maxSize = maxSize;
            this.countIniPath = iniFile;
            DataContext = this;
            InitializeComponent();
            LoadProbeCount();
        }
        private string _parentName;
@@ -102,7 +106,7 @@
        private ConcurrentQueue<Info> queue = new ConcurrentQueue<Info>();
        private ObservableCollection<Info> _infos;
        private ObservableCollection<Info> _infos = new ObservableCollection<Info>();
        public ObservableCollection<Info> infos
        {
@@ -114,12 +118,44 @@
            }
        }
        private string countIniPath;
        /// <summary>
        /// 探针寿命
        /// </summary>
        private int probeCount;
        public int ProbeCount
        {
            get => probeCount;
            set
            {
                RaiseAndSetIfchanged(ref probeCount, value);
            }
        }
        public void LoadProbeCount()
        {
            string temp = IniFileHelper.ReadIniData($"{title}", "ProbeCount", "", countIniPath);
            if (!string.IsNullOrEmpty(temp))
            {
                int count = Convert.ToInt32(temp);
                ProbeCount = count;
            }
        }
        private void UpdateProbeCount(int count)
        {
            ProbeCount = count;
            IniFileHelper.WriteIniData($"{title}", "ProbeCount", ProbeCount.ToString(), countIniPath);
            if (window != null) window.UpdateProbeCount(ProbeCount);
        }
        private void UserControl_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (window == null)
            {
                window = new InfoWindow(title, infos);
                window = new InfoWindow(title, infos, electricChart, ProbeCount);
                window.Closed += Window_Closed;
                window.ClearProbeCountEvent += Window_ClearProbeCountEvent;
                window.Owner = Window.GetWindow(this);
                window.Show();
            }
@@ -127,6 +163,11 @@
            {
                window.Activate();
            }
        }
        private void Window_ClearProbeCountEvent(object sender, EventArgs e)
        {
            UpdateProbeCount(0);
        }
        private void Window_Closed(object sender, EventArgs e)
@@ -137,12 +178,10 @@
        public void SetStatus(string status)
        {
            this.status = status;
        }
        public void SetInfos(List<Info> infos)
            if (status == "testing")
        {
            this.infos = new ObservableCollection<Info>(infos);
            if (window != null) window.UpdateSource(this.infos);
                UpdateProbeCount(ProbeCount + 1);
            }
        }
        public void SetInfos(Info info)
@@ -183,5 +222,47 @@
            if (window != null) window.UpdateSource(this.infos);
        }
        private Chart electricChart = new Chart("电流曲线(A)", false, 20);
        public void AddElectricData(double data)
        {
            electricChart.AddData(data);
        }
        public void ClearElectricData()
        {
            electricChart.Clear();
        }
        public void SaveElectricDataToCSV(string filePath)
        {
            try
            {
                List<double> datas = electricChart?.GetSingleData();
                FileInfo fi = new FileInfo(filePath);
                if (!fi.Directory.Exists)
                {
                    fi.Directory.Create();  //文件不存在,创建文件
                }
                using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
                using (StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8))
                {
                    string title = "电流数据(A)";
                    sw.WriteLine(title);
                    if (datas != null)
                    {
                        for (int i = 0; i < datas.Count; i++)
                        {
                            sw.WriteLine(datas[i].ToString());
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
    }
}