C#实现数据采集系统-周期配置、功能配置

之前采集、推送周期都是写死的

在这里插入图片描述

在这里插入图片描述

现在就是新增一个需求,需要能够配置采集时间,比如我想1s采集一次,5s采集一次或者1分钟采集一次,然后定时推送也是,如此,我想设置推送的时间;

还有定时推送和变化推送功能我可以配置是否开启关闭,有时候我只需要一种推送功能即可

这样我们就可以在配置中增加这几个个参数

在设备配置类中增加采集周期

  public class DeviceLink
  {
      //...

      /// <summary>
      /// 采集周期 单位:s
      /// </summary>
      public double AcqTimeSpan { get; set; }
  }

在这里插入图片描述

增加一个服务配置类

增加推送周期,这里默认最小推送周期就是1s,所以用int;

增加定时推送和变化推送功能开关,用于配置功能的可用

 public class ServiceConfig
 {
     /// <summary>
     /// 推送周期,单位:s
     /// </summary>
     public int PushTimeSpan { get; set; }

     /// <summary>
     /// 是否定时推送
     /// </summary>
     public bool IsPushScheduled { get; set; }

     /// <summary>
     /// 是否变化推送
     /// </summary>
     public bool IsPushChanged { get; set; }
 }

在这里插入图片描述

在总的配置中,添加服务配置

在这里插入图片描述

在配置文件中同步修改

{
  "DeviceLink": {
    "UID": "device01",
    "Ip": "127.0.0.1",
    "Port": 502,
    "SlaveId": 1,
    "AcqTimeSpan": 1
  },
  "MqttConfig": {
    "Ip": "127.0.0.1",
    "Port": 1883,
    "Username": "admin",
    "Password": "12345"
  },
  "ServiceConfig": {
    "PushTimeSpan": 5,
    "IsPushScheduled": true,
    "IsPushChanged": true
  }
}


在服务中使用

都需要×1000转换成毫秒

  public DAqService(DAqOption option)
  {
      _option = option;
      deviceLink = option.DeviceLink;
      points = option.Points;
      timer = new System.Timers.Timer(_option.PushTimeSpan * 1000);//修改为配置值
      timer.Elapsed += Timer_Elapsed;
  }

在modbustcp中使用

需要定义一个变量,将其转换成毫秒

 private int _timeSpan = 1000;
 
 public ModbusTcp(DeviceLink link, List<RegisterPoint> registers)
 {
    //...
     _timeSpan = (int)(link.AcqTimeSpan * 1000);

 }
 
   /// <summary>
  /// 启动主采集线程,循环采集
  /// </summary>
  public void DoMonitor()
  {
      Task.Run(() =>
      {
          //防止重复启动
          if (IsMonitored)
              return;
          IsMonitored = true;

          while (true)
          {
              //...
              Task.Delay(_timeSpan).Wait();
          }
      });
  }

在这里插入图片描述

Soukey采摘网站数据采集软件是一款基于.Net平台的开源软件,也是网站数据采集软件类型中唯一一款开源软件。尽管Soukey采摘开源,但并不会影响软件功能的提供,甚至要比一些商用软件的功能还要丰富。Soukey采摘当前提供的主要功能如下: 1. 多任务多线程数据采集,支持POST方式; 2. 可采集Ajax页面; 3. 支持Cookie,支持手工登录采集数据; 4. 支持采集事务; 5. 支持数据自动及手工导出,导出格式为:文本、Excel、Access、MSSql、Mysql等; 6. 支持在线发布数据; 7. 支持导航网址的采集,导航深度不限; 8. 支持自动翻页; 9. 支持文件下载,可以采集图片、Flash及其他文件; 10. 支持采集结果数据的加工,包括替换、附前缀后缀、截取等操作,支持正则; 11. 采集网址定义不仅支持基本参数定义,也可外接字典数据作为网址参数,进行数据采集; 12. 支持一个任务多实例运行; 13. 提供计划任务,计划任务支持Soukey采集任务、外部可执行文件任务、数据库存储过程任务; 14. 计划任务执行周期支持每天、每周及自定义运行间隔;最小单位为:半小时; 15. 支持任务触发器,即可在采集任务完成后,自动触发执行其他任务(包括可执行文件或存储过程)。 16. 完善的日志功能系统日志、任务执行日志、出错日志等等; 17. 系统提供MINI浏览器可用于捕获Cookie或POST数据; Soukey采摘并不限制您是否商用此软件,源码完全开放,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海盗Sharp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值