Mind+软件用户扩展库详细教程

Mind+是一款拥有自主知识产权的国产青少年编程软件,支持Arduino、micro:bit、掌控板等各种开源硬件,兼容Scratch3.0,支持AI与IoT功能,只需要拖动图形化程序块即可完成编程,还可以使用Python/C/C++等高级编程语言,让大家轻松体验创造的乐趣。

提示:尽管用户库增加非常简单,但依然建议有一定代码基础的用户进行操作,若有需要增加的模块而不懂代码,依然可以给官方反馈需要增加的模块。

使用用户库请先升级Mind+到V1.6.2RC2.0及以上版本。

详细说明:

enumxxxx{//%引脚描述内容定义,需要翻译的菜单项需要定义到menu文件中//%引脚生成代码定义}//%color="#xxxx"整个扩展block的外观定义,通过//%后的描述内容定义namespacexxxx{//%block="xxx[xxx]"blockType="xxx"第一个block的外观定义描述内容//%block其他描述内容exportfunctionxxxx(parameter:any,block:any){//单个block的生成代码定义,通过函数描述生成代码的位置及内容//生成的代码位置及内容描述}//%block="xxx[xxx]"blockType="xxx"第二个block的外观定义描述内容//%block其他描述内容exportfunctionxxxx(parameter:any,block:any){//生成的代码位置及内容描述}//%block="xxx[xxx]"blockType="xxx"第N个block的外观定义描述内容//%block其他描述内容exportfunctionxxxx(parameter:any,block:any){//生成的代码位置及内容描述}}以一个block的定义为例说明main.ts中的代码如下:

//%block="whenpress[BUTTON]"blockType="hat"//%BUTTON.shadow="dropdown"BUTTON.options="BTN"BUTTON.defl="BTN.A"exportfunctionmyBlock(parameter:any,block:any){letbutton=parameter.BUTTON.code;Generator.addInclude('Mylibraray','#include');Generator.addObject(`libraray`,`MY_Libraray`,`libraray;`);Generator.addEvent("functionName","String","functionName","Stringmessage,int8_terror",true);Generator.addSetup("libraray.begin",`libraray.begin(${button});`);Generator.addSetup(`libraray.callback`,`libraray.callback(functionName);`);Generator.addCode('libraray.start();')}效果:

在namespace前面的描述词可以指定整个用户库的颜色和icon信息,所有的block定义都需要在namespace大括号中。

//%color="#AA278D"iconWidth=50iconHeight=40namespacemodule{...}创建一个TypeScript命名空间,所有的图形块都写在里面,还可以设置模块的整体颜色以及icon的尺寸,对于图形风格设置应该包含在//%描述符中。所有的风格设置不是必须的,如果没有设置这些参数,系统将会按照默认的风格展示,//%所包含的内容可以写在一行或多行。

通过blockType关键词可以设置block的整体外观。

//%block="setthelinewidthto[WIDTH]pixels"blockType="command"exportfunctionsetBrightness(parameter:any,block:any){...}定义一个方形的图形块,//%所包含的内容可以写在一行或多行。

1.8.0RC3.0及以上版本新增功能

注:色盘控件传入16进制颜色值,如需拆分成RGB三个10进制值,可查看本文最后常见问题中的方法。

Generator是提供生成代码的工具,它被内置在mindplus解释器中,通过Generator.来调用以控制生成代码的规范。

在全局区添加include.

例如:

注意:172RC2.0以下版本不支持。

添加#define代码。

在全局区添加对象

在setup中添加代码。特别注意:使用此函数生成的代码只会生成在setup中,并会生成在其他语句前,且无法生成在函数或其他事件程序中,若非必须,请使用addCode生成代码

在setup或者loop中添加代码,没有返回值的代码添加(一般为方形,帽子形)。

在setup或者loop中添加代码,有返回值的代码添加(一般为圆形,菱形)。

例如:Generator.addCode(["libraray.read()",Generator.ORDER_UNARY_POSTFIX]);

全局区定义一个回调函数

例如:Generator.addEvent("addEvent","void","function","intx,inty");

此代码可以返回当前选择的主控板型号,根据此可以实现同一block在不同主控板生成不同代码。注:如果要在某些主板下屏蔽某积木,只需要在block外观定义阶段增加board参数即可,详情见3.2.1-block外观定义

if(Generator.board==='arduino'){//如果是arduinouno板,生成如下代码 Generator.addSetup("GTSerialSetup",`${ser}.begin(9600);`);}elseif(Generator.board==='esp32'){//如果是掌控板,生成如下代码 Generator.addSetup("GTSerialSetup",`${ser}.begin(9600,${rx},${tx});`);}主控列表

参考3.1节主控列表

parameter是shadow传入参数,它被内置在mindplus解释器中,通过parameter.来调用获取shadow动态传入的参数。

//%block="show[STR]onthe[LINE]line"blockType="command"//%STR.shadow="string"STR.defl=hello//%LINE.shadow="dropdownRound"LINE.options="LINE"LINE.defl="LINE.1"exportfunctionprintln(parameter:any,block:any){letstr=parameter.STR.codeletline=parameter.LINE.codeGenerator.addInclude('oled12864','#include');Generator.addObject(`myoled`,`OLED_12864`,`myoled;`);Generator.addSetup(`myoled.begin`,`myoled.begin();`);Generator.addCode(`myoled.setCursorLine(${line});\n\tmyoled.printLine(${str});`);}其中,parameter.STR.code即可获取STR这个输入框输入的内容。

目前parameter有四个输入参数可选,根据此4个参数,可以灵活调整生成的代码。

此文件可放置图片类的资源文件。

"files":[ "_locales/zh-cn.json", "_images/icon.svg", "libraries/oled12864/oled12864.cpp", "libraries/oled12864/oled12864.h", "libraries/oled12864/qrcode.c", "libraries/oled12864/qrcode.h" ]

THE END
1.如何通过C++开发实现图形界面应用程序?图形界面应用程序是我们日常生活中经常使用的一种软件,它可以提供直观、友好的界面,让用户更方便地使用计算机。C++是一种功能强大的编程语言,也可以用于开发图形界面应用程序。本文将介绍通过C++开发图形界面应用程序的基本步骤,并以一个简单的计算器应用程序为例进行演示。 https://blog.csdn.net/fb98237834/article/details/144331183
2.菜单编辑器(C++)MicrosoftLearn为菜单栏上的新菜单指定名称后,新项框移到右边(让你可以添加其他菜单)。 此时另一个新项框在第一个菜单下面打开,你可以向其中添加菜单命令。 “新建项”框,焦点在你键入菜单名称后转移 备注 要在菜单栏上创建单项菜单,请将“弹出”属性设置为 False。 https://learn.microsoft.com/zh-cn/cpp/windows/menu-editor
3.补充3:C++Builder程序中菜单工具的设计一、引言 菜单栏、工具栏是现代软件常用界面,使用C++Builder编写菜单、工具十分方便,本节介绍编写菜单、工具程序的基本方法。常用的菜单有两种:主菜单(MainMenu)和弹出菜单(PopupMenu)主讲教师:主讲教师:张鹏祥 补充3:菜单、补充3:菜单、工具软件的编写3:菜单 二、主菜单的设计方法 1、启动C++Builder集成环境,https://wenku.baidu.com/view/bba73ee7a2c7aa00b52acfc789eb172dec639950.html
4.UnrealEngine4游戏开发入门经典虚幻引擎4是被许多专业游戏开发者和独立游戏开发者使用的一个强大的游戏引擎。当你首次使用像虚幻引擎这样的工具时,弄清楚该从哪里开始可能是一项艰巨的任务。本书为你提供了一个起点,介绍虚幻引擎4的界面、工作流以及许多编辑器和工具。本书将帮助你建立一个强大的基础,并且激发你进一步研究虚幻引擎和游戏设计的兴趣https://labs.epubit.com/bookDetails?id=N6999
5.使用C++WinForm如何创建菜单栏问答在C++ WinForm 中创建菜单栏,可以按照以下步骤操作:1. 打开 Visual Studio,创建一个新的 C++ WinForm 应用程序项目。2. 在 WinForm 窗体设计器https://www.yisu.com/ask/82824471.html
6.实验指导C语言程序设计教学运行与管理2.进入Visual C++,并新建一个C++源程序文件。 3.熟悉Visual C++的集成环境,了解各菜单项有哪些子菜单。 4.输入下面的程序(教材中的例1.1),注意区分大小写。 #include void main() { printf("This is a C program.\n"); } 编译并运行程序。 https://www.gxtcmu.edu.cn/ggxy/jysjs1/xxglyxxxtjysyxxxgcjyshs/jxyhygl2/cyycxsj/content_29231
7.菜鸟教程Docker 是一个开源的应用容器引擎,基于 Go 语言 【学习 Ruby】 一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言 【学习 Java】 一种可以撰写跨平台应用软件的面向对象的程序设计语言 【学习 C】 一门通用计算机编程语言 【学习 C++】 C++是在C语言的基础上开发的一种通用编程语言 【学习 Perl】https://www.runoob.com/
8.利用C++Builder定制系统菜单学习C++Builder的资料真的很少,下面是从一本书中学到的,不知对大家有没有帮助,拿出来给大家看看: 通常在应用程序的主窗体中,利用鼠标左键点击左上角的图标,会弹出一个菜单,称之为“系统菜单”。 在窗体中并没有系统菜单对应的组件,所以有时我们需要定制系统菜单时就比较麻烦。具体可以能过下面的步骤实现: http://m.it168.com/articleq_180998.html
9.java多级分类菜单设计java分类imking的技术博客Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。 1. 2. 3. 3、Java 和 C++ 的区别? 都是面向对象的语言,都支持封装、继承和多态。 https://blog.51cto.com/u_13446/7261125