C# Modbus设备信息加载的实现方式(1)

Modbus设备信息加载的实现方式有很多种,这里讨论一种实现,思路比代码重要,具体类大家可以按自己的要求构建。

Load窗体事件中:

复制代码
GlobalProperties.Device = LoadDevice(GroupPath, DevicePath, VariablePath);

具体的实现为, 这样所有的设备,参数

cs 复制代码
        /// <summary>
        /// 添加设备信息
        /// </summary>
        /// <param name="groupPath"></param>
        /// <param name="devicePath"></param>
        /// <param name="variablePath"></param>
        /// <returns></returns>
        private Device LoadDevice(string groupPath, string devicePath, string variablePath)
        {
            if (!File.Exists(groupPath))
            {
                GlobalProperties.AddLog(1, "通信组文件不存在");
                return null;
            }
            List<Group> GpList = LoadGroup(groupPath, variablePath);
            if (GpList != null && GpList.Count > 0)
            {
                try
                {
                    return new Device()
                    {
                        IPAddress = IniHelper.ReadDefult("设备参数", "IP地址", "", devicePath),
                        Port = Convert.ToInt32(IniHelper.ReadDefult("设备参数", "端口号", "502", devicePath)),
                        CurrentRecipe = IniHelper.ReadDefult("配方参数", "当前配方", "", devicePath),
                        GroupList = GpList,
                    };
                }
                catch (Exception ex)
                {
                    GlobalProperties.AddLog(1, "通信组加载失败:" + ex.Message);
                    return null;
                }
            }
            else
            {
                return null;
            }
        }

通信组及通信变量解析:

cs 复制代码
/// <summary>
/// 通信组及通信变量解析
/// </summary>
/// <param name="groupPath"></param>
/// <param name="variablePath"></param>
/// <returns></returns>
private List<Group> LoadGroup(string groupPath, string variablePath)
{
    //判断文件是否存在
    if (!File.Exists(groupPath))
    {
        GlobalProperties.AddLog(1, "通信组文件不存在");
        return null;
    }
    if (!File.Exists(variablePath))
    {
        GlobalProperties.AddLog(1, "通信变量文件不存在");
        return null;
    }
    //解析通信组
    List<Group> GpList = null;
    try
    {
        GpList = MiniExcel.Query<Group>(groupPath).ToList();
    }
    catch (Exception ex)
    {
        GlobalProperties.AddLog(1, "通信组加载失败:" + ex.Message);
        return null;
    }
    //解析变量组,把variable添加到每个group中
    List<Variable> VarList = null;
    try
    {
        VarList = MiniExcel.Query<Variable>(variablePath).ToList();
    }
    catch (Exception ex)
    {
        GlobalProperties.AddLog(1, "通信变量加载失败:" + ex.Message);
        return null;
    }
    if (VarList != null && GpList != null)
    {
        foreach (var group in GpList)
        {
            group.VarList = VarList.FindAll(c => c.GroupName == group.GroupName).ToList();
        }
        return GpList;
    }
    else
    {
        return null;
    }
}

C# Modbus设备信息加载的实现方式(2)-CSDN博客

https://blog.csdn.net/danielli/article/details/139994130?utm_relevant_index=8

相关推荐
q***46526 小时前
基于SpringBoot和PostGIS的各省与地级市空间距离分析
java·spring boot·spring
狂团商城小师妹6 小时前
JAVA国际版同城服务同城信息同城任务发布平台APP源码Android + IOS
android·java·ios
后端小张6 小时前
【JAVA 进阶】Spring Boot 自动配置原理与自定义 Starter 实战
java·spring boot·后端·spring·spring cloud·自定义·原理
Zzzzmo_6 小时前
Java数据结构:二叉树
java·数据结构·算法
多多*7 小时前
一个有 IP 的服务端监听了某个端口,那么他的 TCP 最大链接数是多少
java·开发语言·网络·网络协议·tcp/ip·缓存·mybatis
网硕互联的小客服7 小时前
Windows2008 如何禁用FSO?
运维·服务器·网络·windows·安全
Kay_Liang7 小时前
Spring IOC核心原理与实战技巧
java·开发语言·spring boot·spring·ioc·依赖注入·控制反转
不惑_7 小时前
[特殊字符] 在 Windows 上设置 SQLite
数据库·windows·sqlite
Mr.wangh7 小时前
单例模式&阻塞队列详解
java·开发语言·单例模式·多线程·阻塞队列
O败者食尘D7 小时前
【C#】使用Enigma将Winform或WPF打包成一个exe
c#