LabVIEW表达式计算----.NET版


前言

LabVIEW计算器可利用自身的加减乘除及其他算法完成,但如果需要实现一些高级数学语言,代码就略显臃肿,本次案例我们引入开源的 C# 表达式解释器库---- DynamicExpresso.Core,作者 Davide Icardi。这个库可以很好的替我们完成一些计算。


一、DynamicExpresso.Core是什么?

DynamicExpresso.Core​ 是一个开源的 C# 表达式解释器库,功能大致是:

你把一段字符串表达式传进去(例如 “x + y * 2”)

它在运行时解析成 Expression Tree → 执行

常用与一些动态公式计算、规则引擎、低代码/可配置表达式求值等应用场景。例如博主本次应用在用户自主配置测试流程平台的软件中,用户通过定义变量及常量进行运算后使轴运动到用户指定位置。

二、使用步骤

1.引入库

将封装好的dll下载到工程文件目录下,选择构造器节点进行引用。
然后使用调用节点,选择Eval方法。
讲算式表达式链接上去。然后把结果从.net转成变体,变体转数据,即可得到计算结果。

2.变量引入

在实际编程场景中,定然会存在许多使用到参数的场景,例如相机高度等参数,如果某一测试过程中,需要使用该参数进行动态计算,例如:相机高度*当前视觉返回系数作为某一直线轴运动距离。这时我们可以用到该动态库的参数功能。你可以定义相机高度为a,视觉返回系数为b,在表达式中可直接写,a * b 计算。

3.常用数学变量


.NET 的 Math 类提供了丰富的静态方法用于数学计算,可以在 DynamicExpresso 表达式中直接使用。以下是一些常用函数的总结:

函数/算式 说明 示例
Math.Sqrt(x) 计算平方根 Math.Sqrt(9) → 3
Math.Pow(x, y) 计算 x 的 y 次幂 Math.Pow(2, 3) → 8
Math.Abs(x) 计算绝对值 Math.Abs(-5) → 5
Math.Sin(x) 计算正弦值(x 为弧度) Math.Sin(Math.PI/2) → 1
Math.Cos(x) 计算余弦值(x 为弧度) Math.Cos(0) → 1
Math.Tan(x) 计算正切值(x 为弧度) Math.Tan(Math.PI/4) → 1
Math.Log(x) 计算自然对数(以 e 为底) Math.Log(Math.E) → 1
Math.Log10(x) 计算常用对数(以 10 为底) Math.Log10(100) → 2
Math.Exp(x) 计算 e 的 x 次幂 Math.Exp(1) → e ≈ 2.718
Math.Floor(x) 向下取整 Math.Floor(3.7) → 3
Math.Ceiling(x) 向上取整 Math.Ceiling(3.2) → 4
Math.Round(x) 四舍五入 Math.Round(3.5) → 4
Math.Max(x, y) 返回较大值 Math.Max(5, 9) → 9
Math.Min(x, y) 返回较小值 Math.Min(5, 9) → 5
Math.PI 圆周率 π 的常量 Math.PI → 3.14159…
Math.E 自然常数 e 的常量 Math.E → 2.71828…

使用示例:

// 在 DynamicExpresso 表达式中使用
var interpreter = new Interpreter();
var result = interpreter.Eval("Math.Sqrt(16) + Math.Pow(2, 3)"); // 4 + 8 = 12

注意事项:

  1. 所有三角函数参数默认使用弧度制
  2. 函数名区分大小写,必须使用 Math. 前缀
  3. 可以在表达式中组合多个数学函数,如 Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2))

总结VI概览

以上就是今天要讲的内容,本文仅仅简单介绍了DynamicExpresso.Core的使用,更多用法可自行探索

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐