具体技术细节
[0009] 有鉴于此,本发明的目的在于提出一种基于物联网嵌入式图形化编程开发方法,通过图形化编程的方式,降低了编程的入门门槛,使得学生能够更容易理解编程逻辑和概念,使得物联网项目快速落地,显著提高了嵌入式系统的开发效率、降低了开发难度,并增强了系统的可维护性和可靠性,为嵌入式开发人员提供了更强大和灵活的工具。
[0010] 为了实现上述的技术目的,本发明所采用的技术方案为:
[0011] 本发明提供了一种基于物联网嵌入式图形化编程开发方法,包括如下步骤:
[0012] 步骤1、创建包含Blockly框架的图形化编程系统应用,并在图形化编程系统应用上添加依赖库和进行页面布局和初始化配置;
[0013] 步骤2、在所述图形化编程系统应用上构建不同功能的图形块组件,并确定所需图形块:
[0014] S1、构建ModbusRTU功能的图形块组件,根据ModbusRTU工业协议的工作业务流程进行任务型图形块的需求分析,确定所需图形块,所需图形块包含任务型图形块和语句型图形块;
[0015] S2、构建串口‑Rs485功能的图形块组件,根据串口‑Rs485通信的工作流程进行任务型图形块的需求分析,确定所需图形块,所需图形块包含任务型图形块和语句型图形块;
[0016] S3、构建NetManage功能的图形块组件,根据设备网络网口的通信方式进行任务型图形块的需求分析,确定所需图形块,所需图形块包含任务型图形块和语句型图形块;
[0017] S4、构建Home Assistant功能的图形块组件,根据Home Assistant平台的通信API进行任务型图形块的需求分析,确定所需图形块,所需图形块包含任务型图形块和语句型图形块;
[0018] S5、构建ThingsBoard功能的图形块组件,根据ThingsBoard平台的通信API进行任务型图形块的需求分析,确定所需图形块,所需图形块包含任务型图形块和语句型图形块;
[0019] S6、构建输入输出控制功能的图形块组件,根据GPIO输入输出控制过程进行任务型图形块的需求分析,确定所需图形块,所需图形块包含任务型图形块和语句型图形块;
[0020] 步骤3、结合具体业务需求,并通过S1到S6中确定的所需图形块进行自由组合搭建业务场景,通过图形化编程完成程序开发;
[0021] 步骤4、将图形化编程后的程序下载到设备进行运行。
[0022] 进一步的,所述步骤1具体包括:
[0023] 步骤11、创建图形化编程系统应用,在所述图形化编程系统应用中添加Blockly框架和相关依赖库,使用NPM运行命令来安装Blockly框架和相关依赖库;
[0024] 步骤12、对Blockly框架进行配置:
[0025] Blockly框架的基础配置:引入Blockly框架,在项目的HTML文件中导入Blockly框架的JavaScript文件;
[0026] 添加基本的工作区:在HTML文件中定义一个div元素,用来放置Blockly工作区,并初始化配置,包括网格大小、滚动条和工具箱位置;
[0027] 设置工具箱:设计和添加工具箱,包括Blockly框架支持的基本块;
[0028] 添加实时预览:设置预览窗口,显示生成代码的实时效果;
[0029] 步骤13、通过pnpm build编译构建工程,如果没有报错,则通过web服务器启动前端web应用,启动后,通过浏览器访问网址,在本地验证Blockly框架的开发环境是否成功导入,验证成功后,进入步骤14;
[0030] 步骤14、将Blockly框架的核心脚本文件blockly_compressed.js添加到应用程序代码中进行加载;
[0031] 步骤15、注入可调整尺寸的工作区:将blocklyDiv元素放在blocklyArea元素上并从blocklyDiv元素中删除任何height和width样式并添加绝对定位;
[0032] 步骤16、将注入脚本替换为将blocklyDiv置于blocklyArea上的脚本,代码生成器生成代码并导入Blockly框架/JavaScript文件;
[0033] 步骤17、引入Blockly框架之后,再引入代码生成包括python_compressed.js的文件描述;至此完成了图形化编程系统应用的初始化配置。
[0034] 进一步的,所述步骤S1具体包括:
[0035] 步骤S11、构建ModbusRTU_Tools图形块类;
[0036] 步骤S12、在所述ModbusRTU_Tools图形块类中加入ModbusRTU协议的功能函数图形块,包括:功能码01图形块read_coils、功能码02图形块read_discrete_inputs、功能码03图形块read_holding_registers、功能码04图形块read_input_registers、功能码05图形块write_single_coil、功能码06图形块write_single_registers和功能码16图形块write_multi_registers;
[0037] 所述功能码01图形块read_coils:向绑定的串口发送slave_address、起始地址和数据长度,之后读取1路或多路开关量线圈输出状态;
[0038] 所述功能码02图形块read_discrete_inputs:向绑定的串口发送slave_address、起始地址和数据长度,之后读取1路或多路开关量输入状态;
[0039] 所述功能码03图形块read_holding_registers:向绑定的串口发送slave_address、起始地址和数据长度,之后读取多路保持寄存器的数据;
[0040] 所述功能码04图形块read_input_registers:向绑定的串口发送slave_address、起始地址和数据长度,之后读取多路输入寄存器的数据;
[0041] 所述功能码05图形块write_single_coil:向绑定的串口发送slave_address、起始地址和写入的数据开或者关,写开关量输出;
[0042] 所述功能码06图形块write_single_registers:向绑定的串口发送slave_address、起始地址和写入的数据,写单路寄存器;
[0043] 所述功能码16图形块write_multi_registers:向绑定的串口发送slave_address、起始地址和写多路的数据,写多路寄存器操作;
[0044] 步骤S13、初始化该ModbusRTU_Tools图形块类,并初始化ModbusRTU协议绑定的串口,根据ModbusRTU协议的节点支持的功能码进行相关的功能码操作,并根据判断CRC校验成功与否来获取相应的协议数据;
[0045] 步骤S14、编程人员通过拖动具体的小任务模块进行参数配置,与ModbusRTU协议的节点进行通信;
[0046] 步骤S15、对于非预知型或者相对复杂的任务,编程人员通过语句性编程图形块进行逻辑组合,以合成具体的需求。
[0047] 进一步的,所述步骤S2具体包括:
[0048] 步骤S21、构建串口‑Rs485图形块类,用于提供串口通信的功能;
[0049] 步骤S22、在所述串口‑Rs485图形块类中加入uartInit图形块、uart_control_485_pin图形块、uart_set_callback图形块、uartWrite图形块、uartRead图形块和uart_callback_fun图形块;
[0050] 所述uartInit图形块用于串口初始化,通过uartInit图形块设置串口波特率、数据位、奇偶校验和停止位、硬件控制流;
[0051] 所述uart_control_485_pin图形块用于设置rs‑485收发引脚控制;
[0052] 所述uart_set_callback图形块用于设置串口回调函数;
[0053] 所述uartWrite图形块用于控制串口数据发送;
[0054] 所述uartRead图形块用于控制串口数据接收;
[0055] 所述uart_callback_fun图形块用于执行串口接收回调函数;
[0056] 步骤S23、编程人员通过拖动具体的小任务模块进行参数配置,完成串口数据收发;
[0057] 步骤S24、对于非预知型或者相对复杂的任务,编程人员通过语句性编程图形块进行逻辑组合,以合成具体的需求。
[0058] 进一步的,所述步骤S3具体包括:
[0059] 步骤S31、构建NetManage_Tools图形块类,用于管理不同的通信方式,包括通过有线的方式连接网络和无线SIM卡4G通信的方式连接网络;
[0060] 步骤S32、在所述NetManage_Tools图形块类中加入eth_set_DHCP_mode图形块、eth_set_Static_mode图形块、sim_status图形块、wait_connect图形块和reconnect图形块;
[0061] 所述eth_set_DHCP_mode图形块用于将设备设置使用动态IP,从路由器获取IP,通过路由器接入网络;
[0062] 所述eth_set_Static_mode图形块用于将设备设置为使用静态IP,通过路由器接入网络;
[0063] 所述sim_status图形块用于读取SIM卡状态;
[0064] 所述wait_connect图形块用于4G拨号上网并等待网络连接完成;
[0065] 所述reconnect图形块用于当有插入SIM卡且拨号失败时,进行重新连接网络;
[0066] 步骤S33、编程人员通过拖动具体的小任务模块进行参数配置,并连接到网络;
[0067] 步骤S34、对于非预知型或者相对复杂的任务,编程人员通过语句性编程图形块进行逻辑组合,以合成具体的需求。
[0068] 进一步的,所述步骤S4:
[0069] 步骤S41、构建Home Assistant图形块类,支持MQTT通信;
[0070] 步骤S42、在所述Home Assistant图形块类中加入init图形块、set_callback图形块、publish图形块、subscribe图形块、wait_msg图形块、add_actuator_to_HA图形块、add_sensor_to_HA图形块和add_binary_to_HA图形块;
[0071] 所述init图形块用于初始化并创建MQTT客户端与服务器的连接;
[0072] 所述set_callback图形块用于设置回调;
[0073] 所述publish图形块用于发布消息到对应topic主题;
[0074] 所述subscribe图形块用于订阅MQTT主题;
[0075] 所述wait_msg图形块用于阻塞等待服务器消息响应,获取MQTT连接状态;
[0076] 所述add_actuator_to_HA图形块用于向Home Assistant平台添加执行器实体;
[0077] 所述add_sensor_to_HA图形块用于向Home Assistant平台添加传感器实体;
[0078] 所述add_binary_to_HA图形块用于向Home Assistant平台添加二元传感器实体;
[0079] 步骤S43、编程人员通过拖动具体的小任务模块进行参数配置,并连接到Home Assistant平台;
[0080] 步骤S44、对于非预知型或者相对复杂的任务,编程人员通过语句性编程图形块进行逻辑组合,以合成具体的需求。
[0081] 进一步的,所述步骤S5具体包括:
[0082] 步骤S51、构建ThingsBoard图形块类,支持Mqtt通信,用于MQ遥测传输;
[0083] 步骤S52、在所述ThingsBoard图形块类中加入init图形块、set_callback图形块、shed_telemetry图形块和send_rpc_reply图形块;
[0084] 所述init图形块用于初始化并创建MQTT客户端与服务器的连接;
[0085] 所述set_callback图形块用于设置回调;
[0086] 所述shed_telemetry图形块用于发布遥测数据到ThingsBoard平台;
[0087] 所述send_rpc_reply图形块用于回复服务端下发的RPC命令请求;
[0088] 步骤S53、编程人员通过拖动具体的小任务模块进行参数配置,并连接到ThingsBoard平台;
[0089] 步骤S54、对于非预知型或者相对复杂的任务,编程人员通过语句性编程图形块进行逻辑组合,以合成具体的需求。
[0090] 进一步的,所述步骤S6具体包括:
[0091] 步骤S61、构建GPIO输入输出控制图形块类;
[0092] 步骤S62、在所述GPIO输入输出控制图形块类中加入machine.Pin图形块、set_dir图形块和get_dir图形块;
[0093] 所述machine.Pin图形块用于初始化GPIO引脚,并设置是否上下拉和默认电平;
[0094] 所述set_dir图形块用于设置machine.Pin初始化完成pin的引脚的输入和输出模式;
[0095] 所述get_dir图形块用于获取引脚当前的输入和输出模式,之后即可调用gpio.read图形块或者gpio.write图形块来读取或者设置gpio输出高低电平;
[0096] 步骤S63、编程人员通过拖动具体的小任务模块进行参数配置,并控制GPIO;
[0097] 步骤S64、对于非预知型或者相对复杂的任务,编程人员通过语句性编程图形块进行逻辑组合,以合成具体的需求。
[0098] 本发明还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述的一种基于物联网嵌入式图形化编程开发方法。
[0099] 本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述的一种基于物联网嵌入式图形化编程开发方法。
[0100] 采用上述的技术方案,本发明与现有技术相比,其具有的有益效果为:
[0101] 1、开发效率提升和大大降低学习难度:图形化编程系统应用中封装了大量的代码图形块,每个图形块底层封装了相关功能接口,减少了开发者编写底层代码的需求,降低学习曲线和技术门槛,帮助初学者建立编程思维和信心;开发者不需要深入掌握编程语言的语法,可以通过直观的方式设计逻辑流程,通过图形化的编程拖拉拽的方式,迅速完成功能模块的组合,这对初学者或非技术人员特别友好,能够快速上手并大大提高了代码开发周期和调试的效率。增强系统可视化以及减少代码错误,能够有效提升开发者的工作效率,尤其适用于复杂系统的快速迭代和原型开发。
[0102] 2、底层硬件抽象和模块化设计:图形化编程系统应用提供了硬件平台的抽象层,并基于Micropython语言封装成不同的图形块,使得开发者能够在统一的接口下进行模块化开发。通过这种方式,能够更容易地在不同平台上复用代码模块,并且支持硬件的快速替换和扩展。
[0103] 3、可扩展性与未来技术支持:图形化编程系统应用在设计上具有良好的可扩展性,可以通过插件或自定义模块的方式快速支持新的硬件平台和技术,这为开发者提供了应对未来技术变革的能力,延长了平台的使用寿命。
法律保护范围
涉及权利要求数量10:其中独权3项,从权-3项
1.一种基于物联网嵌入式图形化编程开发方法,其特征在于,包括如下步骤:
步骤1、创建包含Blockly框架的图形化编程系统应用,并在图形化编程系统应用上添加依赖库和进行页面布局和初始化配置;
步骤2、在所述图形化编程系统应用上构建不同功能的图形块组件,并确定所需图形块:
S1、构建ModbusRTU功能的图形块组件,根据ModbusRTU工业协议的工作业务流程进行任务型图形块的需求分析,确定所需图形块,所需图形块包含任务型图形块和语句型图形块;
S2、构建串口‑Rs485功能的图形块组件,根据串口‑Rs485通信的工作流程进行任务型图形块的需求分析,确定所需图形块,所需图形块包含任务型图形块和语句型图形块;
S3、构建NetManage功能的图形块组件,根据设备网络网口的通信方式进行任务型图形块的需求分析,确定所需图形块,所需图形块包含任务型图形块和语句型图形块;
S4、构建Home Assistant功能的图形块组件,根据Home Assistant平台的通信API进行任务型图形块的需求分析,确定所需图形块,所需图形块包含任务型图形块和语句型图形块;
S5、构建ThingsBoard功能的图形块组件,根据ThingsBoard平台的通信API进行任务型图形块的需求分析,确定所需图形块,所需图形块包含任务型图形块和语句型图形块;
S6、构建输入输出控制功能的图形块组件,根据GPIO输入输出控制过程进行任务型图形块的需求分析,确定所需图形块,所需图形块包含任务型图形块和语句型图形块;
步骤3、结合具体业务需求,并通过S1到S6中确定的所需图形块进行自由组合搭建业务场景,通过图形化编程完成程序开发;
步骤4、将图形化编程后的程序下载到设备进行运行。
2.如权利要求1所述的一种基于物联网嵌入式图形化编程开发方法,其特征在于,所述步骤1具体包括:
步骤11、创建图形化编程系统应用,在所述图形化编程系统应用中添加Blockly框架和相关依赖库,使用NPM运行命令来安装Blockly框架和相关依赖库;
步骤12、对Blockly框架进行配置:
Blockly框架的基础配置:引入Blockly框架,在项目的HTML文件中导入Blockly框架的JavaScript文件;
添加基本的工作区:在HTML文件中定义一个div元素,用来放置Blockly工作区,并初始化配置,包括网格大小、滚动条和工具箱位置;
设置工具箱:设计和添加工具箱,包括Blockly框架支持的基本块;
添加实时预览:设置预览窗口,显示生成代码的实时效果;
步骤13、通过pnpm build编译构建工程,如果没有报错,则通过web服务器启动前端web应用,启动后,通过浏览器访问网址,在本地验证Blockly框架的开发环境是否成功导入,验证成功后,进入步骤14;
步骤14、将Blockly框架的核心脚本文件blockly_compressed.js添加到应用程序代码中进行加载;
步骤15、注入可调整尺寸的工作区:将blocklyDiv元素放在blocklyArea元素上并从blocklyDiv元素中删除任何height和width样式并添加绝对定位;
步骤16、将注入脚本替换为将blocklyDiv置于blocklyArea上的脚本,代码生成器生成代码并导入Blockly框架/JavaScript文件;
步骤17、引入Blockly框架之后,再引入代码生成包括python_compressed.js的文件描述;至此完成了图形化编程系统应用的初始化配置。
3.如权利要求1所述的一种基于物联网嵌入式图形化编程开发方法,其特征在于,所述步骤S1具体包括:
步骤S11、构建ModbusRTU_Tools图形块类;
步骤S12、在所述ModbusRTU_Tools图形块类中加入ModbusRTU协议的功能函数图形块,包括:功能码01图形块read_coils、功能码02图形块read_discrete_inputs、功能码03图形块read_holding_registers、功能码04图形块read_input_registers、功能码05图形块write_single_coil、功能码06图形块write_single_registers和功能码16图形块write_multi_registers;
所述功能码01图形块read_coils:向绑定的串口发送slave_address、起始地址和数据长度,之后读取1路或多路开关量线圈输出状态;
所述功能码02图形块read_discrete_inputs:向绑定的串口发送slave_address、起始地址和数据长度,之后读取1路或多路开关量输入状态;
所述功能码03图形块read_holding_registers:向绑定的串口发送slave_address、起始地址和数据长度,之后读取多路保持寄存器的数据;
所述功能码04图形块read_input_registers:向绑定的串口发送slave_address、起始地址和数据长度,之后读取多路输入寄存器的数据;
所述功能码05图形块write_single_coil:向绑定的串口发送slave_address、起始地址和写入的数据开或者关,写开关量输出;
所述功能码06图形块write_single_registers:向绑定的串口发送slave_address、起始地址和写入的数据,写单路寄存器;
所述功能码16图形块write_multi_registers:向绑定的串口发送slave_address、起始地址和写多路的数据,写多路寄存器操作;
步骤S13、初始化该ModbusRTU_Tools图形块类,并初始化ModbusRTU协议绑定的串口,根据ModbusRTU协议的节点支持的功能码进行相关的功能码操作,并根据判断CRC校验成功与否来获取相应的协议数据;
步骤S14、编程人员通过拖动具体的小任务模块进行参数配置,与ModbusRTU协议的节点进行通信;
步骤S15、对于非预知型或者相对复杂的任务,编程人员通过语句性编程图形块进行逻辑组合,以合成具体的需求。
4.如权利要求1所述的一种基于物联网嵌入式图形化编程开发方法,其特征在于,所述步骤S2具体包括:
步骤S21、构建串口‑Rs485图形块类,用于提供串口通信的功能;
步骤S22、在所述串口‑Rs485图形块类中加入uartInit图形块、uart_control_485_pin图形块、uart_set_callback图形块、uartWrite图形块、uartRead图形块和uart_callback_fun图形块;
所述uartInit图形块用于串口初始化,通过uartInit图形块设置串口波特率、数据位、奇偶校验和停止位、硬件控制流;
所述uart_control_485_pin图形块用于设置rs‑485收发引脚控制;
所述uart_set_callback图形块用于设置串口回调函数;
所述uartWrite图形块用于控制串口数据发送;
所述uartRead图形块用于控制串口数据接收;
所述uart_callback_fun图形块用于执行串口接收回调函数;
步骤S23、编程人员通过拖动具体的小任务模块进行参数配置,完成串口数据收发;
步骤S24、对于非预知型或者相对复杂的任务,编程人员通过语句性编程图形块进行逻辑组合,以合成具体的需求。
5.如权利要求1所述的一种基于物联网嵌入式图形化编程开发方法,其特征在于,所述步骤S3具体包括:
步骤S31、构建NetManage_Tools图形块类,用于管理不同的通信方式,包括通过有线的方式连接网络和无线SIM卡4G通信的方式连接网络;
步骤S32、在所述NetManage_Tools图形块类中加入eth_set_DHCP_mode图形块、eth_set_Static_mode图形块、sim_status图形块、wait_connect图形块和reconnect图形块;
所述eth_set_DHCP_mode图形块用于将设备设置使用动态IP,从路由器获取IP,通过路由器接入网络;
所述eth_set_Static_mode图形块用于将设备设置为使用静态IP,通过路由器接入网络;
所述sim_status图形块用于读取SIM卡状态;
所述wait_connect图形块用于4G拨号上网并等待网络连接完成;
所述reconnect图形块用于当有插入SIM卡且拨号失败时,进行重新连接网络;
步骤S33、编程人员通过拖动具体的小任务模块进行参数配置,并连接到网络;
步骤S34、对于非预知型或者相对复杂的任务,编程人员通过语句性编程图形块进行逻辑组合,以合成具体的需求。
6.如权利要求1所述的一种基于物联网嵌入式图形化编程开发方法,其特征在于,所述步骤S4:
步骤S41、构建Home Assistant图形块类,支持MQTT通信;
步骤S42、在所述Home Assistant图形块类中加入init图形块、set_callback图形块、publish图形块、subscribe图形块、wait_msg图形块、add_actuator_to_HA图形块、add_sensor_to_HA图形块和add_binary_to_HA图形块;
所述init图形块用于初始化并创建MQTT客户端与服务器的连接;
所述set_callback图形块用于设置回调;
所述publish图形块用于发布消息到对应topic主题;
所述subscribe图形块用于订阅MQTT主题;
所述wait_msg图形块用于阻塞等待服务器消息响应,获取MQTT连接状态;
所述add_actuator_to_HA图形块用于向Home Assistant平台添加执行器实体;
所述add_sensor_to_HA图形块用于向Home Assistant平台添加传感器实体;
所述add_binary_to_HA图形块用于向Home Assistant平台添加二元传感器实体;
步骤S43、编程人员通过拖动具体的小任务模块进行参数配置,并连接到Home Assistant平台;
步骤S44、对于非预知型或者相对复杂的任务,编程人员通过语句性编程图形块进行逻辑组合,以合成具体的需求。
7.如权利要求1所述的一种基于物联网嵌入式图形化编程开发方法,其特征在于,所述步骤S5具体包括:
步骤S51、构建ThingsBoard图形块类,支持Mqtt通信,用于MQ遥测传输;
步骤S52、在所述ThingsBoard图形块类中加入init图形块、set_callback图形块、shed_telemetry图形块和send_rpc_reply图形块;
所述init图形块用于初始化并创建MQTT客户端与服务器的连接;
所述set_callback图形块用于设置回调;
所述shed_telemetry图形块用于发布遥测数据到ThingsBoard平台;
所述send_rpc_reply图形块用于回复服务端下发的RPC命令请求;
步骤S53、编程人员通过拖动具体的小任务模块进行参数配置,并连接到ThingsBoard平台;
步骤S54、对于非预知型或者相对复杂的任务,编程人员通过语句性编程图形块进行逻辑组合,以合成具体的需求。
8.如权利要求1所述的一种基于物联网嵌入式图形化编程开发方法,其特征在于,所述步骤S6具体包括:
步骤S61、构建GPIO输入输出控制图形块类;
步骤S62、在所述GPIO输入输出控制图形块类中加入machine.Pin图形块、set_dir图形块和get_dir图形块;
所述machine.Pin图形块用于初始化GPIO引脚,并设置是否上下拉和默认电平;
所述set_dir图形块用于设置machine.Pin初始化完成pin的引脚的输入和输出模式;
所述get_dir图形块用于获取引脚当前的输入和输出模式,之后即可调用gpio.read图形块或者gpio.write图形块来读取或者设置gpio输出高低电平;
步骤S63、编程人员通过拖动具体的小任务模块进行参数配置,并控制GPIO;
步骤S64、对于非预知型或者相对复杂的任务,编程人员通过语句性编程图形块进行逻辑组合,以合成具体的需求。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至8任一项所述的一种基于物联网嵌入式图形化编程开发方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至8任一项所述的一种基于物联网嵌入式图形化编程开发方法。