IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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的特性主要有:

  1. arduino很多的库函数在bitlash里面都有对应的,例如引脚控制、PWM输出、millis函数、数学函数。
  2. 函数定义、if、while、switch等语句
  3. 支持C语言里面大多数的运算符
  4. 支持后台运行自定义函数,并且能将自定义函数存储到EEPROM中
  5. 提供用于扩展的API(个人觉得已经很完善了,几乎不用扩展了)

这里只是简单的列举了Bitlash的部分特性,其实Bitlash最主要的还是具有完善的帮助文档,这一点我觉得才是最重要的,同时Bitlash占用的ROM也很低,所以非常推荐。

如果想使用Bitlash的话可以去官网下载,同时官网有非常多的教程和文档,地址为:

http://bitlash.net/

2、elk:(可嵌入的javascript的脚本引擎,易于扩展)

elk是一个微小的可嵌入的javascript的脚本引擎,它并不是完成的javascript(就arduino那点存储空间来看,表示很理解) elk仅仅实现了while,if等控制语句,同时支持函数定义和对象,不支持数组。elk的api比较简单易懂,可以使用api导入自定义的函数来实现对arduino的底层控制

? ? ? 如果想使用elk的话可以去github上下载,地址为:

https://github.com/cesanta/elk

或者也可以直接在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例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 11:03:47  更:2022-01-24 11:05:39 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码