在我们使用 STM32 或者 FPGA 采集数据的时候,需要将数据存储到SD卡中,因为数据是按照地址存储的,并且没有文件结构,所以不能直接用电脑的文件管理器读取,下面是一种读取数据的办法
实验平台
正点原子STM32F407ZG探索者
STM32源码
识别以回车结尾的数据
任何二进制数据都可以识别的
Python生成写入的数据
# %%
# 定义生成文件的大小(字节数)
file_size = 512
# 递增数据的起始值
start_value = 1
# 打开文件并写入递增数据
with open('output.bin', 'wb') as file:
# 递增循环直到达到文件大小
for i in range(file_size):
# 将递增数据写入文件(使用小端字节序)
file.write(start_value.to_bytes(1, byteorder='little'))
# 递增起始值
start_value += 1
# 如果起始值超过255,则回绕到0
if start_value > 10:
start_value = 0
运行完此代码后,将会在当前文件夹里面生成一个output.bin
的二进制文件,我们可以使用16进制的文本阅读器打开查看里面的内容
Python读取SD卡代码
使用读卡器将 SD 卡连接到电脑上,
如果弹出磁盘已损坏之类的千万不要管!!!
如果弹出磁盘已损坏之类的千万不要管!!!
如果弹出磁盘已损坏之类的千万不要管!!!
继续往下看!
import struct
disk = open(r"\\.\PhysicalDrive1","rb") # 打开磁盘0,PhysicalDrive不区分大小写
# 读取第一个扇区, 也就是磁盘主引导记录, 1扇区为512字节
data = disk.read(512)
data = struct.unpack(len(data)*'B',data)
print(data)
然后注意上方代码中的PhysicalDrive1
这里的1对应电脑的硬盘序号,可以此电脑(右键)->管理->磁盘管理中看到,这里的序号就是 PhysicalDrive
后面要跟的数字,我的电脑显示是磁盘 1
,所以写的是 1
。
验证结果
运行上面的程序即可得到结果,这里是没有解包的结果
取消注释下列代码后的结果
data = struct.unpack(len(data)*'B',data)