APP下载

基于图形化编程平台Mixly的第三方库的研究与实现

2021-09-16余鹏

科技资讯 2021年15期

摘  要:在创客教育理念和人工智能共同的推动下,中小学信息技术教学计划逐渐增加编程素养的训练内容。作为课程指导老师,如何与时俱进地为课堂引进新技术成了亟待解决的难题。该文主要研究图形化编程软件Mixly图形块转换为C语言源码的基本原理,以及通过分析官方库文件,总结智能器件第三方库五步开发步骤:第一,定义第三方库及图形块的基本信息;第二,定义图形块的样式;第三,可编程芯片驱动程序设计;第四,实现图形块转换成C语言;第五,导入Mixly开发平台。

关键词:图形化编程  Arduino  Mixly  单片机教学

中图分类号:TP319                        文献标识码:A文章编号:1672-3791(2021)05(c)-0043-05

Research and Implementation of the Third Party Library Based on the Graphical Programming Platform Mixly

YU Peng

(Guangxi Vocational & Technical Institute of Industry, Nanning, Guangxi Zhuang Autonomous Region, 530000  China)

Abstract: Under the joint promotion of maker education concept and artificial intelligence, the training content of programming literacy is gradually increased in the information technology teaching plan of primary and secondary schools. As a course instructor, how to keep pace with the times for the classroom to introduce new technology has become a problem to be solved. This paper mainly studies the basic principle of graphics programming software Mixly graphics block into C language source code, and summarizes the five steps of the third-party library development of intelligent devices by analyzing the official library files: First, the basic information of the third-party library and the graph block is defined; Secondly, the style of the graph block is defined; Third, the driver design of programmable chip; Fourth, realize the conversion of graph block into C language; Fifth, import the Mixly development platform.

Key Words: Graphic programming; Arduino; Mixly; MCU teaching

随着新技术的发展和创客教育理念的普及,中小学信息技术课在国家政策的引导下逐渐增加编程素养的训练内容。然而,微控制器传统的编程模式还是基于国外微处理器开发平台以及C语言,甚至汇编语言等程序设计语言,这对中高职层次以上的学生也是一道不低的门槛[1]。教育技术研究团队另辟途径,以谷歌、麻省理工学院开源图形化编程工具为内核,二次开发适合国内青少年思维习惯的图形化编程软件,这些软件将一条条深奥的指令、函数、器件功能变换成图形块,青少年创客用类似搭建乐高积木的方式,通过拖拽图形块实现创意设计。这种设计理念有效降低了技术门槛,节约了开发者学习时间,让青少年创客可以更专注于创意设计的实现[2]。

目前,图形化编程工具领域主要分为两大流派,即麻省理工学院的Scratch和谷歌的Blockly。北京师范大学傅骞团队以Blockly为内核引擎,开发了Mixly图形化编程软件,该软件支持以Arduino为主控板的图形化编程,特别适合没有编程基础的初学者;该软件也支持厂商或者有一定编程基础的开发者开发电子器件第三方库文件,这项功能极大地拓展了Mixly器件的普适性[3],该文主要研究Mixly第三方库的实现方案。

1  Mixly第三方库的实现方案

Mixly的生态系统是傅骞开发团队最重要的设计理念。Mixly实现图形化编程的基本原理是把图形块对应的程序转化成C语言,再通过Arduino IDE下载至Arduino微处理器。笔者通过分析官方库文件,总结了五步開发过程:第一,定义第三方库及图形块的基本信息;第二,定义图形块的样式;第三,驱动程序设计;第四,实现图形块转换成C语言;第五,导入Mixly。下面以四位一体数码管显示模块为例,介绍该模块第三方库的开发过程。

1.1 定义第三方库及图形块的基本信息

开发第三方库一般从.xml文件开始,该文件主要提供第三方库的基本信息、导入Mixly的文件及其路径、图形块的框架及其属性。其开发过程具体如下。

(1)找到Mixly安装文件夹并在mylib里新建第三方库文件夹demo,在此文件夹下新建tm1650.xml文件。

(2)在tm1650.xml文件里编辑本库文件的基本信息、导入Mixly的文件及其路径,如图1所示。

图1中1~6行为注释,提示该次库开发定义的4个文件,7、8行为导入Mixly的文件及其路径。

(3)定义图形块的框架及其属性见图2。

图2中category标签定义第三方库的ID、名称,该名称显示在Mixly界面的左边栏。block标签定义图形块的框架及其属性,其中block type标注图形块的功能名称;value标签定义图形块的参数节点,此次开发的四位数码管模块使用tm1650接口芯片与主控板通信,根据tm1650的工作原理,该图形块定义5个参数节点,第1个节点为tm1650的命令参数,第2个节点为最高位数码管显示代码,第3个节点为次高位数码管显示代码,第4个节点为次低位数码管显示代码,第5个节点为最低位数码管显示代码,其中value name定义节点参数名,传递参数值。shadow type定义节点类型,常见的类型有pins_digital、pins_analog、pins_pwm、pins_interrupt、inout_highlow、math_number、text等,field name为节点数据名。

1.2 定义图形块的样式

第三方库文件夹demo里新建文件夹block,而后在block里新建tm1650.js文件,该文件主要定义图形块的颜色、样式、文字、图标等信息,代码具体见图3。

图3中Blockly.Blocks.demo.HUE定义图形块颜色,取值范围0~360,建议取值区别于Mixly其他功能模块;appendField(Blockly.LEDSIG+' tm1650')创建图形块名称,语言变量Blockly.LEDSIG的内容设置在demo\language\tm1650\zh-hans.js(如图4所示),' tm1650'为图形块直接显示的字符串;appendTitle(Blockly.COMMAND)设置节点标题名称,Blockly.COMMAND为语言变量;appendValueInput('COMMAND')创建输入参数;setCheck(Number),设置输入类型检查。

图3中第22行到第24行设置图形块的样式,setPreviousStatement()设置是否与上一图形块连接,可选参数true或者false;setNextStatement()设置是否可以与下一图形块连接,可选参数true或者false;setInputsInline()设置图形块为单行或多行显示,可选参数true或者false;除了这三者,还可以选用setOutput(Boolean, type)等其他图形块样式设置函数。

1.3 器件驱动程序设计

Mixly图形块对应的源代码实质上还是C语言编写的符号程序。器件驱动程序应提前通过Mixly根目录附带的Arduino IDE编辑、下载、调试,器件初始化程序、功能函数调试完毕后[4],将驱动程序的头文件以及程序文件另存至demo\tm1650,具体见图5、图6。

根据Mixly运行机制,符号源代码图形化的头文件应按图8中规定格式编制;程序文件应包含"Arduino.h",且每个函数名前按固定格式添加"demo_tm1650:: "字段[5]。

1.4 實现图形块转换成C语言

图形块转化成C语言源码通过demo\generator\tm1650.js文件实现,如图7所示。

图7中第5行设置程序包含的头文件;第6行设置宏定义;第7行到第11行,获取图形块的参数值并赋值给对应的变量;第12行,调取函数tm1650ioinit(),并将其设置在void setup()集合;第13行,调取函数init_tm1650,并将其设置在void loop()集合,其中'+val+','+SIG3+','+SIG2+','+SIG1+','+SIG0+'实现将图形块获取的参数值传递给被调用函数的实参[6]。

至此,四位一体数码管显示模块第三方库文件全部开发完毕,文件结构如图8所示。

1.5 Mixly导入第三方库

单击Mixly界面下方的“导入库”标签,在弹出的对话框中选择并打开第三方库根目录的tm1650.xml文件,图形块及图形块对应的代码如图9所示。该项操作步骤也可以提前在第三步前进行,便于查看第三方库开发过程中编写的代码实现的效果。

2  结语

在电子信息技术高速发展的时代背景下,Mixly凭借开源和开放的态度迅速建立良好的三方生态系统。Mixly图形化编程有效降低了青少年应用Arduino实现创意设计的技术门槛,让电子创客更关注创意的实现,更好地培养青少年创新思维能力。

参考文献

[1] 蔡金苹.单片机技术在智能电子产品中的应用探讨[J].科技创新导报,2019,16(28):97-98.

[2] 叶险峰,李锡华,施红军.基于Arduino平台的电子电路设计实验教学实践[J].实验科学与技术,2020,18(2):68-72.

[3] 傅骞,解博超,郑娅峰.基于图形化工具的编程教学促进初中生计算思维发展的实证研究[J].电化教育研究,2019,40(4):122-128.

[4] 余鹏.基于STM32嵌入式微处理器的舰船网络通信系统设计[J].舰船科学技术,2020,42(24):133-135.

[5] 褚晓辉,贾文,尚国力,等.语音控制的可变形机器人[J].科技创新导报,2020,17(14):106-108,110.

[6] 余鹏.基于工程技术教育理念的电子应用技术课程教学改革[J].现代职业教育,2020(1):74-75.