在项目对接过程中,特别是在使用DLL接口进行对接时,我们可以通过IoT-Fast(Node-Red魔改版本)封装的C#函数组件来优化这个过程。该组件提供了便捷的方法来调用DLL接口,并且支持直接编写C#代码。这种方式在业务场景中非常灵活。
举个例子,我们以胡工科技的HslCommunication动态链接库(DLL)文件为例。HSL是一个设备通信插件,它已经实现了大量的设备协议。通过使用我们封装的组件,我们可以轻松地集成HSL的协议能力。这样,我们可以更方便地与各种设备进行通信,并且可以根据业务需求进行灵活的定制和扩展。
通过优化项目对接流程,我们可以提高开发效率,减少开发成本,并且更好地满足业务需求。
文章以Hsl为例,包括调用dll库,上云,组态,共分为五个部分:
- HslCommunication介绍
简单介绍HslCommunication,并根据API文档调用Hsl的dll库。
- IoT-Fast-采集控制系统
对底层设备进行数据读取、写入的配置界面,还可以进行数据处理。
一、HslCommunication
HslCommunication组件库是一款集众多协议于一体的通讯测试工具,软件首页如下。
它的dll文件是通过C#开发的,我们便可以使用IoT-Fast通过调用Hsl的dll库,根据Hsl的API文档,来对底层设备进行通讯。
二、IoT-Fast-采集控制系统
打开IoT-Fast的采集控制系统,选择左边的节点,按住鼠标左键拖入到中间的配置栏。
根据Hsl的API协议,我们需要调用他的dll库,并且使用c#语言来编程,从左侧的逻辑控件中拖出C#函数。
选中控件然后点击右上角的帮助,可以在右侧窗口了解本控件的功能。
我们以通用协议modbus为例,打开modbus模拟器。
启动后的通讯属性,功能码是FC3,ID为1,IP是本机IP,端口502,之后往地址中随机写值。
回到IoT-Fast,双击C#函数打开配置界面,点击上方的设置调用dll。
点击加载文件,选择Hsl的dll库,文件在Hsl的安装目录下。
添加成功。
然后回到函数界面编写代码,这里就用右侧的示例进行举例,将示例复制进来。更多协议的通讯方法需要查看Hsl的API文档。
配置连接的ip,端口,设备id,还有查询的地址和长度,配置完成。
接着从左侧的通用控件中拉出定时器和调试控件。
按住白色小框可以拉出一条线连接上另一个白色小框。这样就将两个控件用线连接起来,数据是从左往右流动的。
按下图连接后点击右上角的部署按钮,将右侧的界面调到调试窗口。
点击定时器左侧的按钮,因为数据流是从左往右的,就执行了一次C#中的代码,读取了一次modbus中地址为0、长度为2的数值,然后显示在调试窗口中,结果以buffer形式输出,点击小箭头可以展开内容。
再试一下其他的地址,读取地址2、长度1的值,配置完后点一下部署按钮,每次改动配置后都需要点击部署。
点击定时器,右侧输出结果,004A转成10进制对应74,和模拟器上一致。
如此便读取成功了,我们再用另外一种方式,使地址能够从前方动态输入,同样,我们再拉出一个定时器,C#函数,调试控件,然后用线连起来,可以直接框选上方的控件,复制一个新的,如果需要删除控件按delete。
双击下方的C#函数进入配置界面,复制下方的案例,这边的配置不同的地方就是查询地址可以从前方动态输入。
使用这种方式,前方的定时器就需要配置了,双击定时器将时间戳改成JSON输出,写上{"address":"0"},就是地址0;另外如果⽅法体只想调用一次,可以将msg.type设置为subFunc。
配置如下,定时器的下方还可以设置触发周期,这里还是用手动点击的方式去触发。
完成后点击部署,点击定时器,读取成功。
前面只演示了modbus的FC3功能码的读取,其他功能码的读取或者写入,甚至其他的协议读写,大家可以根据Hsl的API文档进行尝试。数据读取到之后,就可以将数据传到云平台显示,然后再进行云组态。