首页
社区
课程
招聘
[原创] 使用JS开发Flipper Zero应用
发表于: 2024-6-1 13:01 3504

[原创] 使用JS开发Flipper Zero应用

2024-6-1 13:01
3504

Flipper Zero是一个比较有意思的电子宠物,最近发现它支持使用JS语言开发APP,简单写篇文章记录一下

固件

我的Flipper Zero固件是unleashed-firmware[1],在它的GitHub Release页面,打开Install via Web页面,使用USB将Flipper Zero与电脑连接,即可刷入该固件。

GitHub Release页面

在Web侧刷入固件

JS应用

源代码结构

拉取unleashed-firmware固件源代码后,在applications/system/js_app目录下,可以发现如下所示的目录结构,其中Scripts目录是JS APP源代码,modules目录是提供给JS APP调用的SDK的底层实现。Flipper Zero使用的JS解释引擎是MJS[3],这个解释引擎是专门为嵌入式场景设计的,实现了JS ES6标准的子集。

目录结构

JS SDK

以badusb_demo.js为例,它的部分代码如下所示,它依赖于badusb, notification, flipper, dialog等SDK模块,这些模块的实现在modules目录下的js_badusb.c,js_notification.c等文件中。目前好像没有文档统计提供了哪些JS SDK,只能自己看这些文件确定。从文件列表来看提供的SDK接口还是非常全面的。

1
2
3
4
let badusb = require("badusb");
let notify = require("notification");
let flipper = require("flipper");
let dialog = require("dialog");

上传JS应用

把Flipper Zero的SD卡取下,插入读卡器,把JS应用上传进入apps/Scripts目录即可

上传JS应用

启动JS应用

进入桌面,在Apps -> Scripts下,找到上传的JS应用文件即可执行。
启动应用

BadUSB简单扩展

简单写了个JS应用,首先按下 WIN+R ,然后输入chrome,再按ENTER键,打开CHROME浏览器,然后在地址框输入www.baidu.com,按ENTER跳转到该地址。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
let badusb = require("badusb");
let notify = require("notification");
let dialog = require("dialog");
 
badusb.setup({ vid: 0xAAAA, pid: 0xBBBB, mfr_name: "Flipper", prod_name: "Zero" });
dialog.message("BadUSB DEMO For Windows", "Press OK to start");
 
if (badusb.isConnected()) {
    notify.blink("green", "short");
    print("USB is connected");
 
    delay(1000);
    badusb.press("GUI", "r");
    delay(1000);
    badusb.println("chrome");
    badusb.press("ENTER");
 
    delay(1000);
 
    badusb.println("www.baidu.com");
 
    badusb.press("ENTER");
     
    notify.success();
} else {
    print("USB not connected");
    notify.error();
}
 
// Optional, but allows to interchange with usbdisk
badusb.quit();

参考文献

[1] https://github.com/DarkFlippers/unleashed-firmware
[2] https://github.com/DarkFlippers/unleashed-firmware/releases/tag/unlshd-072
[3] https://github.com/cesanta/mjs


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 8206
活跃值: (4161)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习下,谢谢分享!
2024-6-1 19:40
0
游客
登录 | 注册 方可回帖
返回
//