RoArm-M2-S FLASH文件系统操作
来自Waveshare Wiki
FLASH文件系统操作
机械臂所使用的下位机驱动板在掉电后会损失数据,如果想保存一些数据使其不会随着掉电丢失,可将这些数据写入文件储存于Flash文件系统中,只需在掉电前将文件写入Flash,这样掉电后文件不会丢失,上电后读取文件即可。
本章的JSON指令用于操作存储在 ESP32 FLASH 中的文件,包括扫描文件、新建文件、编辑文件内容、读取文件内容等。掉电后文件不会丢失,若您重新给RoArm-M2-S上传程序,也可在Arduino IDE中选择保留Flash文件。
扫描FLASH文件
{"T":200}
- 200:表示这条指令为 CMD_SCAN_FILES,用来扫描当前 Flash 文件系统中的全部文件。
返回的数据如下:
>>>---=== File Name and First line ===---<<< [file]: [boot.mission] [first line]: {"name":"boot","intro":"these cmds run automatically at boot."} >>>---=== File Name and First line ===---<<< [file]: [mission_a.mission] [first line]: {"name":"mission_a","intro":"test mission created in flash."} >>>---=== File Name and First line ===---<<< [file]: [wifiConfig.json] [first line]: {"wifi_mode_on_boot":3,"sta_ssid":"JSBZY-2.4G","sta_password":"waveshare0755","ap_ssid":"RoArm-M2","ap_password":"12345678"}
返回值包括每个文件的文件名和文件内的第一行内容,此处的文件名会显示出完整的文件名,若您创建新的文件是带有后缀的,则也会显示。后缀为 .mission 的文件即为任务文件,可以储存一些指令用于机械臂批量操作。
- boot.mission 是机械臂开机自动运行的任务文件,开机过程中如果发现没有该文件则会自动创建一个,其余全部 JSON 指令都可以添加到该文件中来配置开机后需要自动执行的步骤;
- mission_a.mission 是测试创建的任务文件案例,并不代表您的 RoArm-M2 中会有 mission_a.mission 这个文件;
- wifiConfig.json 用于储存 wifi 相关配置的文件,开机时如果没有扫描到该文件会自动新建,并使用默认的 AP 模式来建立热点,有关 wifiConfig.json 的具体信息会在RoArm-M2-S_WIFI配置中介绍。
新建文件
{"T":201,"name":"file.txt","content":"inputContentHere."}
- 201:表示这条指令为CMD_CREATE_FILE,用来新建一个文件。
- name:要新建的文件名称,必须输入完整的文件名称,若您要创建一个.txt后缀的文件,则文件名必须带.txt后缀,如上。
- content:该文件的第一行的内容。
读取文件内容
{"T":202,"name":"mission_a.mission"}
- 202:表示这条指令为CMD_READ_FILE,用来读取某一个文件的内容。
- name:要读取的文件名称,必须输入完整的文件名,若您创建时的文件是带后缀的,则输入的文件名必须包含后缀。
返回内容如下,返回内容会标注出来行号(以下是案例,并不代表您的RoArm-M2中会有mission_a.mission这个文件):
{"T":202,"name":"mission_a.mission"} ---=== File Content ===--- reading file: [mission_a.mission] starts: [lineNum: 1 ] - {"name":"mission_a","intro":"test mission created in flash."} [lineNum: 2 ] - {"T":104,"x":235,"y":0,"z":234,"t":3.14,"spd":0.25} [lineNum: 3 ] - {"T":104,"x":104.3172406,"y":-112.6415887,"z":65.13450799,"t":2.448233337,"spd":0.25} [lineNum: 4 ] - {"T":114,"led":155} [lineNum: 5 ] - {"T":104,"x":-163.7763876,"y":-138.2353466,"z":105.0922663,"t":2.466641107,"spd":0.5} [lineNum: 6 ] - {"T":114,"led":0} [lineNum: 7 ] - {"T":114,"led":255} [lineNum: 8 ] - {"T":104,"x":156.428798,"y":40.20501586,"z":76.68339473,"t":3.052621768,"spd":0.25} [lineNum: 9 ] - {"T":111,"cmd":3000} [lineNum: 10 ] - {"T":114,"led":0} [lineNum: 11 ] - {"T":1,"mode":1} ^^^ ^^^ ^^^ reading file: mission_a.mission ends. ^^^ ^^^ ^^^
案例mission_a.mission 文件中实际的文件内容如下:
{"name":"mission_a","intro":"test mission created in flash."} {"T":104,"x":235,"y":0,"z":234,"t":3.14,"spd":0.25} {"T":104,"x":104.3172406,"y":-112.6415887,"z":65.13450799,"t":2.448233337,"spd":0.25} {"T":114,"led":155} {"T":104,"x":-163.7763876,"y":-138.2353466,"z":105.0922663,"t":2.466641107,"spd":0.5} {"T":114,"led":0} {"T":114,"led":255} {"T":104,"x":156.428798,"y":40.20501586,"z":76.68339473,"t":3.052621768,"spd":0.25} {"T":111,"cmd":3000} {"T":114,"led":0} {"T":1,"mode":1}
删除文件
{"T":203,"name":"file.txt"}
- 203:这条指令为CMD_DELETE_FILE,用来删除指定文件。
- name:要删除的文件名称,必须输入完整的文件名。
编辑FLASH文件
在文件的末尾新增一行内容
{"T":204,"name":"file.txt","content":"inputContentHere."}
- 204:这条指令为CMD_APPEND_LINE,用来在指定文件的末尾增加一行输入的内容。
- name:要编辑的文件名称,必须输入完整的文件名。
- content:要增加的内容。
在文件中指定行数插入内容
{"T":205,"name":"file.txt","lineNum":3,"content":"content"}
- 205:这条指令为CMD_INSERT_LINE,用来在指定文件中的指定行数处插入一行输入的内容。
- name:要编辑的文件名称,必须输入完整的文件名。
- lineNum:指定新内容插入的行数,文件第一行的lineNum为1;例如这里lineNum的值为3,原有的第三行会变成第四行,新加入的内容会作为第3行。
- content:要插入的内容。
替换文件中指定行数的内容
{"T":206,"name":"file.txt","lineNum":3,"content":"Content"}
- 206:这条指令为CMD_REPLACE_LINE,用来替换指定文件中的指定行数的内容。
- name:要编辑的文件名称,必须输入完整带后缀的文件名。
- lineNum:指定要替换内容的行数,例如这里lineNum的值为3,代表原本第3行的内容会被替换。
- content:输入要替换后的内容。
读取文件中指定行数的内容
{"T":207,"name":"file.txt","lineNum":3}
- 207:这条指令为CMD_READ_LINE,用来读取指定文件中的指定行数的内容。
- name:要读取的文件名称,必须输入完整的文件名。
- lineNum:要读取的指定行数。
删除文件中指定行的内容
{"T":208,"name":"file.txt","lineNum":3}
- 208:这条指令为CMD_DELETE_LINE,用来删除指定文件的指定行数的内容。
- name:要编辑的文件名称,必须输入完整的文件名。
- lineNum:要删除的行数,例如这里lineNum的行数为3,代表第3行的内容将被删除,那么之后行数的内容将会递进一行。
RoArm-M2-S 教程目录
RoArm-M2-S 使用教程
- RoArm-M2-S_Web端使用
- RoArm-M2-S_开发工具使用
- RoArm-M2-S_JSON指令含义
- RoArm-M2-S_WIFI配置
- RoArm-M2-S_机械臂控制
- RoArm-M2-S_末端关节设置
- RoArm-M2-S_FLASH文件系统操作
- RoArm-M2-S_步骤录制和重现
- RoArm-M2-S_ESP-NOW控制
- RoArm-M2-S_Python串口通信控制
- RoArm-M2-S_Python HTTP请求通信