• sales

    +86-0755-88291180

FLASH File System Operation

FLASH File System Operation

The slave board used by the robotic arm loses data after power-off. To save certain data and prevent it from being lost during power off, you can write this data into a file and store it in the Flash file system. Simply write the file to Flash before power-off, ensuring the file remains intact after power is restored, and then read the file upon powering up.

The JSON commands in this chapter are designed for manipulating files stored in the ESP32 FLASH, including scanning files, creating new files, editing file content, and reading file content. Files are retained even after power-off. If you re-upload the demo to RoArm-M2-S, you can also choose to save Flash files in the Arduino IDE.


Scan FLASH Files

{"T":200}
  • 200: indicates this command is CMD_SCAN_FILES for scanning all file folders of the current Flash file system.

The returned data is shown below:

>>>---=== 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"}

The returned values include the file name of each file folder and the first line of contents. This file folder will display the full file name. If you create a new file with a suffix, it will be displayed too. Files with the suffix .mission are mission files, which can store some commands for batch operation of the robotic arm.

  • boot.mission: the task file that can automatically run after booting the robotic arm. If there is no file like this after startup, it will automatically generate one. All the rest of the JSON commands can be added to this file to configure the steps that need to be executed automatically after powering up;
  • mission_a.mission is the case of testing the generated task file, which does not represent the mission_a.mission file is on RoArm-M2.
  • wifiConfig.json is for storing WiFi-related configuration files. If the file is not scanned after startup, it will automatically generate and set a hotspot in the default AP mode. For more details, you can refer to RoArm-M2-S WIFI Configuration.

New File Folder

{"T":201,"name":"file.txt","content":"inputContentHere."}
  • 201: indicates this command is CMD_CREATE_FILE for creating a file folder.
  • name: the file name to be created, which must be input the full file name. If you want to create a file with the suffix, the suffix must be ".txt" as shown above.
  • content: the content of the first line in the file.

Read the File Content

{"T":202,"name":"mission_a.mission"}
  • 202: indicates this command is CMD_READ_FILE for reading a file content.
  • name: the file name to be read. The full filename must be entered, if you created the file with a suffix, the filename must include the suffix.

The return content is as follows, the return content will be labeled out the line number (the following is an example, it does not mean that you will have the file mission_a.mission in your RoArm-M2):

{"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. ^^^ ^^^ ^^^

The actual file contents in the mission_a.mission file are as follows:

{"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}

Delete File

{"T":203,"name":"file.txt"}
  • 203: this command is CMD_DELETE_FILE for deleting the specified file.
  • name: the file name to be deleted, and you need to input the full file name here.

Edit FLASH File

Add The New Content At the End of File

{"T":204,"name":"file.txt","content":"inputContentHere."}
  • 204: This command, CMD_APPEND_LINE, is used to add a line of input to the end of the specified file.
  • name: The name of the file to be edited must be entered in full.
  • content: The content to be added.

Inserts Content at A Specified Number of Lines

{"T":205,"name":"file.txt","lineNum":3,"content":"content"}
  • 205: this command is CMD_INSERT_LINE for inserting a line in the specified line of the designated file.
  • name: the file name to be edited, and you need to input the full file name.
  • lineNum: Specify the line number for inserting new content. The first line of the file is considered line number 1. For example, if the lineNum is set to 3, the original third line will become the fourth line, and the newly added content will be inserted as the third line.
  • content: the content to be inserted.

Replace the Content of the Specified Line

{"T":206,"name":"file.txt","lineNum":3,"content":"Content"}
  • 206: this command is CMD_REPLACE_LINE for replacing the content of the specified line in the specified file.
  • name: the file name to be edited, which should be edited as the full file name with a suffix.
  • lineNum: Specify the line number of the content to be replaced. For example, the lineNum value here is 3, it represents the content of the third line that will be replaced.
  • content: the content to be replaced.

Read the Content of the Specified Line Number

{"T":207,"name":"file.txt","lineNum":3}
  • 207: this command is CMD_READ_LINE for reading the content of the specified line number in the specified file folder.
  • name: the file name to be read, which should be input the full file name.
  • lineNum: the specified line number to be read.

Delete the Content of the Specified Line in the File

{"T":208,"name":"file.txt","lineNum":3}
  • 208: this command is CMD_DELETE_LINE for deleting the content of the specified line number of the specified file.
  • name: the file name to be edited, which should be input the full file name.
  • lineNum: the line number to be deleted. For example, the lineNum is 3 meaning the original third line will be deleted and the content of the subsequent lines will shift up by one line.


TAG: Raspberry Pi Camera Module 3 Sensor Assembly IMX708 Official Original 11.9MP Camera Raspberry Pi Mipi ESP32-C5 WIFI6 Development Board ESP32-C5-WROOM-1 N16R4/N16R8 Programmable Keyboard Raspberry Pi Prism LuckFox Pico plus RS485 to Ethernet Arduino MLX90641 Raspberry Pi Camera OV5647 Camera (F) Raspberry Pi Pico 1.54inch LCD display 240&times;240 IPS 1.54 inch screen Jetson Nano Development 2.66inch e-Paper e-link Module 360x184 4-Color Red Yellow Black White For Arduino Raspberry Pi STM32 Jetson Tutorial Information Wiki Program Code User Guide SpotPear Milk-V Duo S Usage of USB Type A interface Raspberry Pi 5 AI kit Hailo8 26Tops PCIe to M.2 NVMe HAT Plus For Pi5 Omni-Directional Lidar SpotPear ESP32 C3 ESP32 C3 1.44inch LCD Raspberry Pi MLX90640 Industrial Isolated RS485 TO ETH (C) RJ45 Converter Wall/Rail-Mount For Modbus