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);
    }

}