上周我们发射了一枚火箭,其中 Arduino 将传感器的数据保存在一个 csv 文件中。每 30 秒使用该程序myFile.close()
并创建一个新文件。但即使降落伞展开,当火箭触地时 SD 也会断开连接,因此文件永远不会关闭。所以我丢失了 30 秒的飞行数据,我想恢复至少一部分。我有文件,但它是空的。
值得注意的是,每个文件都是 60Mo,而我的 RAM 是 8Mo(teensy 4.1),所以我知道至少有一部分数据在其中。
有人知道可以保存我的数据的软件吗?
答案1
正如@Gantendo 所暗示的,你可能想要对 SD 卡进行原始转储。在 Linux 下,你可以使用 dd 或 ddrescue 执行此操作。因此,如果 SD 卡是 /dev/sdb,你可以这样做
dd if=/dev/sdb of=/path/to/dump.file
然后您就可以解析原始图像的副本。
我猜接下来需要编写一个程序来读取原始转储并提取您能找到的数据。我猜,具体如何操作取决于 CSV 文件的确切格式/详细信息。
您可以使用 Linux 下的“strings”命令“快速启动”该过程,该命令可以在输入中搜索具有指定最小长度的可读字符串(并将其转储到另一个文件)。这至少可以帮助您识别候选行。当然,还有很多其他可能性,并且可能还有更好的方法来实现这一点,具体取决于数据的格式。(如果您提供数据文件格式的具体信息,stackexchange.com 上的好心人可能会帮助您解决这里的问题。如果可以使用标准系统工具完成,我们也可以提供帮助,但这可能超出了本文的范围)