在labview官方论坛中,我找到一个issue有关于在labview中使用容器ActiveX或者com+以浏览器方式打开网页,并且调用网页中的JavaScript函数,或者获取网页中的数据。在中文社区中基本没见到关于JavaScript调用的详细的帖子,我给自己做个备忘,也方便他人吧。labview中先要了解事件处理架构,代码如下:(引用于:exampleConnectivityActiveXActiveX Event Callback.vi)
注意:vi reference is a strict VI reference to the callback VI. vi reference must match exactly the data from the registered event and the callback VI must be reentrant.上面这段话:首先是严格的类型引用(可以不严格,只是会非常麻烦,很多时候逻辑上没得问题,就是报错,应该是框架要求的这个属性.)labview中注册ActiveX控件的回调事件处理Vi或函数
其次必须满足事件响应数据(我理解是事件通用数据变体varints to data事件返回变体用户参数等,变体可以理解为void类型的指针,显式转换为什么数据类型读取为什么样的数据.),最后必须是重载的SubVi.这里的三操作步骤如下图:
图一是vi的严格类型引用设置:
图一
图二是创建SubVi满足事件回调Vi的形参和返回值接口(Vi完全可以理解为一个函数嘛)
这里注意创建了之后可以打开,相对应的前面板和程序面板,此时没有保存可手动保存一下,并且它的属性是设置的reentrants.
图三是设置Vi的属性为可重载(官方帮助说明:labview的vi重载说明-英文有中文的但是我没保存链接,时间充裕可以找哈)
到这里基本知识解决了.其次就是怎么调用JavaScript function了.可以参考下面那个链接,我就是这么学习过来的.一个错误关于labview调用JavaScript function出错
第一步找ActiveX容器的细节问题如下:
第二步后面板的事件注册细节(注册事件最好要先于navigate2方法,我就因为先navigate2了然后经过定时循环结构中的refresh方法后再去注册回调SubVi,然后重来不回调我的SubVi,程序编译调试啥都没问题,就是运行结果不对.最后还是从本文第一幅图发现这里有蹊跷!!!)
第三步SubVi的细节
最后这个图里关键的地方在第一个顺序框中.为此我放大的图片上来.并给出一个字符串"javascript:alter(10)"调用alter函数输出数值10.这个就给我们在浏览器的URL栏输入相对应的JavaScript调用命令一个道理.哎亏我还是半个前端,这都没想到.白忙活两个星期才解决这么简单的一个问题.
这里也打开一扇门,可以去用其他对象.不一定是webbrowser对象了.前面图片中把对象说成类了,我就不回头改了,都深夜1:32了.睡了.
在labview官方论坛中,我找到一个issue有关于在labview中使用容器ActiveX或者com+以浏览器方式打开网页,并且调用网页中的JavaScript函数,或者获取网页中的数据。在中文社区中基本没见到关于JavaScript调用的详细的帖子,我给自己做个备忘,也方便他人吧。labview中先要了解事件处理架构,代码如下:(引用于:exampleConnectivityActiveXActiveX Event Callback.vi)
注意:vi reference is a strict VI reference to the callback VI. vi reference must match exactly the data from the registered event and the callback VI must be reentrant.上面这段话:首先是严格的类型引用(可以不严格,只是会非常麻烦,很多时候逻辑上没得问题,就是报错,应该是框架要求的这个属性.)labview中注册ActiveX控件的回调事件处理Vi或函数
其次必须满足事件响应数据(我理解是事件通用数据变体varints to data事件返回变体用户参数等,变体可以理解为void类型的指针,显式转换为什么数据类型读取为什么样的数据.),最后必须是重载的SubVi.这里的三操作步骤如下图:
图一是vi的严格类型引用设置:
图一
图二是创建SubVi满足事件回调Vi的形参和返回值接口(Vi完全可以理解为一个函数嘛)
这里注意创建了之后可以打开,相对应的前面板和程序面板,此时没有保存可手动保存一下,并且它的属性是设置的reentrants.
图三是设置Vi的属性为可重载(官方帮助说明:labview的vi重载说明-英文有中文的但是我没保存链接,时间充裕可以找哈)
到这里基本知识解决了.其次就是怎么调用JavaScript function了.可以参考下面那个链接,我就是这么学习过来的.一个错误关于labview调用JavaScript function出错
第一步找ActiveX容器的细节问题如下:
第二步后面板的事件注册细节(注册事件最好要先于navigate2方法,我就因为先navigate2了然后经过定时循环结构中的refresh方法后再去注册回调SubVi,然后重来不回调我的SubVi,程序编译调试啥都没问题,就是运行结果不对.最后还是从本文第一幅图发现这里有蹊跷!!!)
第三步SubVi的细节
最后这个图里关键的地方在第一个顺序框中.为此我放大的图片上来.并给出一个字符串"javascript:alter(10)"调用alter函数输出数值10.这个就给我们在浏览器的URL栏输入相对应的JavaScript调用命令一个道理.哎亏我还是半个前端,这都没想到.白忙活两个星期才解决这么简单的一个问题.
这里也打开一扇门,可以去用其他对象.不一定是webbrowser对象了.前面图片中把对象说成类了,我就不回头改了,都深夜1:32了.睡了.
举报