应用程序行为的工程外部实现

Engineering external implementation of application behavior

我想在一个 delphi 应用程序中执行以下操作。(10.3+)
我希望用户有可能实现他自己的“保存在选项中”的程序的逻辑行为。
与 arduino logical/program.

非常相似

例如
我创建了一个程序,用于跟踪大约 10 个热传感器的值。但它可以是任何东西。

该程序有一个定时器,在定时器事件中,以下操作正在发生。

  1. 读取传感器的值
  2. 必要时采取行动

此 class 中保存了 2 种类型的信息。
ID 名称等非更改信息和永久更改 (DATA)。
这是保存来自一个传感器的所有信息的基础 class 的示例。

type TXXX = class
  private
  public
    // info that are not changing ever
    property ID                         : Integer ...
    property SENSOR_NAME : String   ...
// info that are constantly changing
    property READ_TIMESTAMP : TDateTime ...
    property CURRENT_VALUE   : Double ...
    property VALUE_SUPREMUM  : Double    ...
    property VALUE_INFIMUM       : Double   ...
end

我需要为程序创建某种选项,当用户可以定义自己的逻辑时程序应该在满足条件时响应。
例如用户想说:

if CURRENT_VALUE > 5 and  VALUE_INFIMUM > 0.5 then begin
  "take action 1"
end

等等...

“采取行动 x”,所有行动都是硬编码的。例如 close/open 阀门。

现在这些房源4个多好像50个左右

谁能给我指明方向?

此致
拉兹万

有两种方法可以解决您的问题。

1st: 您可以使用一些脚本引擎。这就是这个组件的直接目的。您可以使用类似 Pascal Script For Delphi (https://www.remobjects.com/ps.aspx), Fast script (https://www.fast-report.com/en/product/fast-script/), TMS Scripter (https://www.tmssoftware.com/site/scriptstudiopro.asp) 等的东西

2nd: 如果您的操作和条件有限 – 您可以为其编写自己的解析器和 GUI 来处理所有这些工作人员。 制作表达式解析器,声明运算符(传感器的数字或允许的属性,或其他表达式),声明数学运算(加号,地雷...)和逻辑运算(更低,更高,等于,与,非,或)。实施它可能需要一段时间,但您可以构建非常 user-friendly 的向导来管理它。