69 lines
2.0 KiB
C#
69 lines
2.0 KiB
C#
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;
|
|
|
|
|
|
// <summary>
|
|
/// 公共保存方法(用户自选文件夹)
|
|
/// </summary>
|
|
/// <param name="dataList">你的数据集合</param>
|
|
/// <param name="defaultFileName">默认文件名</param>
|
|
public static void SaveToCsv(List<dynamic> 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<string, object>)dataList[0];
|
|
sw.WriteLine(string.Join(",", firstRow.Keys));
|
|
|
|
foreach (var item in dataList)
|
|
{
|
|
var dict = (IDictionary<string, object>)item;
|
|
sw.WriteLine(string.Join(",", dict.Values));
|
|
}
|
|
}
|
|
|
|
MessageBox.Show("保存成功!\n" + filePath);
|
|
}
|
|
|
|
} |