12

C# WPF上位机开发(内嵌虚拟机的软件开发)

 9 months ago
source link: https://blog.csdn.net/feixiaoxing/article/details/134967539
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        学习过halcon的同学都知道,它不仅有很多的图像算子可以使用,而且调试很方便。每一步骤的调试结果,都可以看到对应的显示效果。这中间,开发者可以自己调参数、写脚本,十分方便。在所有的配置都ok之后,直接导出为c、c# code,变成最终的软件输出,部署到客户的电脑上面。

        其实要做到这一点,也不是很复杂。一种比较简单的办法,就是内嵌一个lua虚拟机,把对应的函数转成lua版本。等到配置结束后,把lua解释器和对应的算法dll直接打包出去就可以了。

2c42464a100a4616afd484ffc9c534d4.png

1、安装Lua的开发包

        目前可以通过NuGet直接下载到对应的lua包,当前的软件叫NLua。在NuGet上面输入NLua直接查找,第一个显示结果就是我们需要下载的对象。直接下载就可以了。

be27dc8aae88411ba6d9cacff0fb7e2a.png

2、设计界面

        界面部分的设计比较简单,主要有两个部分,一个是按钮,一个是标签。标签的目的主要就是显示lua操作后的结果。这里又有两点,一个是c#调用lua程序,另外一个是lua调用c#程序,这两部分都是后期经常出现的场景。

3、头文件引用NLua

        头文件应用,这是基本操作。内容比较简单,直接using添加就好了。

using NLua;

4、c#调用ua

        c#调用lua的话,一般是先创建一个lua虚拟机,然后通过这个虚拟机来执行lua脚本,或者是是lua字符串。执行完毕之后,执行的结果再次返回给c#。



newCodeMoreWhite.png

5、lua调用c#

        lua调用c#的话,也不算复杂。首席我们准备一个class,以及与之匹配的函数,

        接下来如果需要执行这个函数的话,第一步先要register一下对应的类。注册完了,第二步就可以在lua脚本中调用对应的函数了。

        为了检验Add函数是不是真的是lua.DoString调用的,可以在Add函数的位置设一个断点,这样就可以double check一下。

d64985aa1ca743428730d1a73b887515.png

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK