ModbusRtuDemo.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System;
  2. using ProjectBase.Data.Logs;
  3. using SIMDP.Device;
  4. using ProjectBase.Util;
  5. namespace SIMDP.Project
  6. {
  7. class ModbusRtuDemo : ModbusRtu
  8. {
  9. #region 重写父类函数
  10. public override void actionStart()
  11. {
  12. }
  13. public override void actionStop()
  14. {
  15. }
  16. public override void actionTimer()
  17. {
  18. try
  19. {
  20. if (!port.IsOpen)
  21. port.Open();
  22. // 轮询监控节点
  23. foreach (var p in monitorPoints)
  24. {
  25. object value;
  26. if (!Read(p, out value)) continue;
  27. if (!value.Equals(p.value))
  28. {
  29. p.value = value;
  30. if (p.proc != null)
  31. p.proc.Invoke(this, new object[] { value });
  32. }
  33. }
  34. port.Close();
  35. redis.Publish<string>(SysEnvironment.OpcDataChannel, "");
  36. }
  37. catch (Exception ex)
  38. {
  39. LogHelper.log.Error("actionTimer发生异常,将断开重连:" + ex.Message);
  40. Disconnect();
  41. }
  42. }
  43. #endregion
  44. #region 自定义功能
  45. public void 数据更新(object value)
  46. {
  47. LogHelper.log.Debug("数据更新Start, value=" + value.ToString());
  48. }
  49. #endregion
  50. }
  51. }