| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 在Arduino上运行 “脚本语言解释器” 的几种方案 -> 正文阅读 |
|
[嵌入式]在Arduino上运行 “脚本语言解释器” 的几种方案 |
很早以前,我就想在Arduino上运行脚本解释器了,通过长时间的摸索也找到了几个将脚本解释器放在Arduino上的运行的方案,下面我会逐一列出一、“脚本解释器”的通俗解释在平时编写arduino程序时,我们都是编写的C/C++语言程序。可是Arduino开发板认识这些C/C++程序吗?很显然是不认识的,所以才需要Arduino软件来将这些源代码“翻译”成Arduino认识的二进制指令才能上传到Arduino执行。这个过程叫做编译,在你点击“上传”按钮的时候就会自动完成。 我们要做的脚本解释器实现的就是一个翻译功能,它能将我们编写的高级语言程序翻译Arduino认识的指令进而直接执行,这样我们就不需要Arduino软件了,只需要通过串口不断的向Arduino发送代码,Arduino里面的脚本解释器就能不断的读取代码并自动翻译执行了。你也可以将代码存储到sd卡里面,Arduino直接读取sd卡里面的代码就可以执行。 PS:其实我们平时用的python就是一种脚本解释器,它能将python代码不断翻译成CPU认识的指令并执行。(当然,我们在arduino上制作的脚本解释器肯定不会有python那么强大的,arduino那仅仅几十K的ROM也不允许我们做出很厉害的解释器) 如果您到此步你依然不知道什么是脚本解释器的话,建议您还是不继续阅读下去了,或者是先去搜索一波,网上的很多文章讲的都非常好。 二、Arduino上的“脚本解释器”是什么样的首先我们来看arduino有多大的存储空间,就以arduino uno来看其Flash只有32KB,RAM也只有仅仅的2KB,所以为了能在这么小的空间里面容纳一个脚本解释器,此解释器必须要足够小。所以像python、javascript、lua解释器那种是不可能的了。(如果你想在MCU上运行python解释器,那么建议使用esp8266等开发板,我之前有一篇文章专门讲了这个) 三、几种方案(排名越靠前的代表越推荐)1、Bitlash:(语法类似于C,帮助文档比较全)Bitlash是一个专门针对于arduino的脚本解释器,帮助文档比较完善(相比于下面推荐的解释器)所以非常推荐。Bitlash可以从串口接收脚本命令并运行。 Bitlash的特性主要有:
这里只是简单的列举了Bitlash的部分特性,其实Bitlash最主要的还是具有完善的帮助文档,这一点我觉得才是最重要的,同时Bitlash占用的ROM也很低,所以非常推荐。 如果想使用Bitlash的话可以去官网下载,同时官网有非常多的教程和文档,地址为:
2、elk:(可嵌入的javascript的脚本引擎,易于扩展)elk是一个微小的可嵌入的javascript的脚本引擎,它并不是完成的javascript(就arduino那点存储空间来看,表示很理解) elk仅仅实现了while,if等控制语句,同时支持函数定义和对象,不支持数组。elk的api比较简单易懂,可以使用api导入自定义的函数来实现对arduino的底层控制 ? ? ? 如果想使用elk的话可以去github上下载,地址为:
或者也可以直接在Arduino里面搜索elk库就可以使用了,如下,此库带有一些示例可以直接上传到Arduino即可运行: ? 3、自己写一个哈哈,你没看错,就是自己写一个解释器。如果只是实现简单的流程控制的话,自己写一个的难度不是很难的。 我自己写了一个仅仅支持简单的while、if、for语句的微型解释器,说实话自己写的话真的能加深一些算法的理解,帮助还是很大的。 PS:由于目前还不完善,就等我调试好后放在下一期来讲吧 ? 四、写在最后除了上述讲到的Bitlash、ELK,网上还有很多开源大佬编写的解释器,不过如果是在arduino uno上面运行的话个人还是推荐前面两个,所以在这里就不一一列举啦,同时如果你的开发板是stm32性能比较强的MCU的话呢,推荐去试试Lua语言,Lua语言其本身就设计为一种可以嵌入的语言,所以其解释器也非常小,网上有很多将Lua移植到stm32的案例。 本文只是简单的列举了几个方案,之后我打算出一些具体的教程,可能也是对解释器比较感兴趣吧哈哈,另外文章中难免会存在疏忽和错误,也欢迎大家批评指正。觉得有帮助的话点个赞呗~ |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 12:22:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |