using Microsoft.Win32; using Modbus.Device; using System; using System.Collections.Generic; using System.IO; using System.Net.Sockets; using System.Text; using System.Windows; using 头罩视野.Services.Data; using static 头罩视野.TestDataStore; public static class ModbusHelper { // 全局唯一连接,所有页面共用 public static TcpClient TcpClient => ModbusResourceManager.Instance.TcpClient; // 统一连接方法(全项目只调用一次) public static bool Connect(string ip, int port = 502) { return ModbusResourceManager.Instance.Init(ip, port); } // 判断是否连接成功 public static bool IsConnected => TcpClient != null && TcpClient.Connected; // /// 公共保存方法(用户自选文件夹) /// /// 你的数据集合 /// 默认文件名 public static void SaveToCsv(List dataList, string defaultFileName) { if (dataList == null || dataList.Count == 0) { MessageBox.Show("无数据可保存!"); return; } // 选择文件夹 var folderDialog = new OpenFolderDialog { Title = "请选择保存路径" }; if (folderDialog.ShowDialog() != true) return; string folderPath = folderDialog.FolderName; string filePath = Path.Combine(folderPath, defaultFileName); // 写入 CSV using (var sw = new StreamWriter(filePath, false, Encoding.UTF8)) { var firstRow = (IDictionary)dataList[0]; sw.WriteLine(string.Join(",", firstRow.Keys)); foreach (var item in dataList) { var dict = (IDictionary)item; sw.WriteLine(string.Join(",", dict.Values)); } } MessageBox.Show("保存成功!\n" + filePath); } }