Easymodbus 在 Quartz.net 类中给出连接错误

Posted

技术标签:

【中文标题】Easymodbus 在 Quartz.net 类中给出连接错误【英文标题】:Easymodbus gives connection error in Quartz.net class 【发布时间】:2022-01-04 09:17:07 【问题描述】:

朋友们,我正在从具有名为 EasyModbus 的库的设备中提取数据。我想使用Quartz 库每小时自动提取这些数据。问题是,虽然我可以正常提取数据,但当我在类中使用相同的代码时,会出现连接错误。 我在主要形式中提取数据没有任何问题。在Quartz 类中使用它时,我只会遇到连接错误。

public class Gorev : IJob // Quartz.Net

    string address = "10.100.135.20";
    public ModbusClient modbus = new ModbusClient(); // EasyModbus
    
    public bool ModbusConnect() // Modbus Connection
    
        if (modbus.Connected == false)
        
            modbus.Connect(address, 502);
            return modbus.Connected; // Return True
        
        else
        
            modbus.Disconnect();
            return modbus.Connected; // Retunn False
        
    
    public Task Execute(IJobExecutionContext context)
    
        int[] frekans = modbus.ReadHoldingRegisters(0x009E, 1); //Connected Error
        return Task.CompletedTask;
    

【问题讨论】:

【参考方案1】:

您没有在 ModbusClient 构造函数中指定参数:

public ModbusClient modbus = new ModbusClient(address, 502); // then modbus.Connect() without parameter

【讨论】:

我通过从主窗体调用 ModbusConnect() 方法来建立连接。

以上是关于Easymodbus 在 Quartz.net 类中给出连接错误的主要内容,如果未能解决你的问题,请参考以下文章

Quartz.NET笔记 More About Jobs & JobDetails

第十三节: 总结Quartz.Net几种部署模式(IISExe服务部署借助TopSelf服务类)

如何在 Quartz.NET 作业中注入 NavigationManager?

如何使用 Quartz.Net 开始计划作业?

Quartz.Net线程处理用到的两个Attribute

TopShelf+Quartz.net实现基于window服务的定时调度