864|2

1517

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【 STM32MP135F-DK测评】文件读写功能及数据提取 [复制链接]

本帖最后由 jinglixixi 于 2024-1-15 20:10 编辑

在绣花机的仿真系统中,涉及到花样文件的读取及参数的提取,若是在裸机系统这项工作是比较费事的,它关系到文件系统的管理,文件的读写的多方面的内容。

但在LINUX系统下,处理这样的问题要简单了许多。

为此,就在STM32MP135F-DK测评板的LINUX系统下对文件的功能加以测试和体验。

1)读取文件

待读取的文件如图1所示,读取文件的程序如图2所示。在程序执行后,其结果如图3所示。

 

图1 文件内容

 

 

图2 程序内容

 

 

图3 执行结果

 

在程序中,所使用的语句其作用如下:

(1)open()函数,其作用是打开文件并返回文件对象,它通常用有两个参数。其第一个参数是一个标识文件名的字符串,第二个参数是由有限的字母组成的字符串,用于描述文件将会被如何使用,即工作模式。

其可选的工作模式有:'r'表示只对文件进行读取;'w',表示只对文件进行写人,该操作会使原有文件被覆盖;'a'表示以追加方式打开文件;'r+'表示以读写方式打开文件。

(2)函数f.readline(),其作用是从文件中读取一行内容,字符串结尾会自动加上一个换行符( \n ),只有当文件最后一行没有以换行符结尾时,这一操作才会被忽略。这样返回值就不会被混淆,如果如果 f.readline() 返回一个空字符串,那就表示到达了文件末尾,如果是一个空行,就会描述为 '\n',一个只包含换行符的字符串。

(3)函数f.read(),其作用是读取指定数量的文件内容,并以字符串形式返回其内容,参数size 是可选的数值,以指定字符串长度。如果没有指定 size 或者指定为负数,就会读取并返回整个文件。

 

2)按字节读取

再实际应用中,所读取的数据不一定都是字符串,为此就需要以字节为单位进行读取。

例如对于BMP 或 EXE 这样的文件,就需要以二进制模式来打开。其工作模式有 'rb', 'wb', 'r+b' 等组合。

对于花样文件,它与BMP位图文件的格式是较为相似的,也是分为前导部分和数据体,但它的数据体又较之位图的更复杂。花样文件的前导部分,其数据格式如图4所示。

 

 

图4 前导数据格式

 

DST格式的花样文件,其数据体的数据结构如图5所示。

 

图5数据体的结构

 

为测试以二进制方式读取数据,则测试程序如图6所示,它的执行结果如图7所示,说明它与字符串方式读取是有区别的,可以该方式来文件中的数据。

 

图6程序内容

 

 

图7 测试结果

 

3)写入文件

在通常的检测系统中,往往需要对采集的数据加以记录和保存,这就涉及文件的写入处理。

测试数据记录的程序见图8所示,图9和图10是其执行结果。

 

图8 测试程序

 

 

图9 执行结果

 

 

图10 文件内容

 

因此利用文件的写入处理,完成可以承担数据记录的功效。

 

4)文件定位

在文件的使用中,还常常涉及定位读取的问题,例如在字库中读取指定字符的字模,就需要按字符的编码换算出字模的所在位置来快速读取。

使用函数f.seek()即可起到快速定位的作用,其读取的测试文件如图11所示。

 

图11 文件内容

 

相应的测试程序如图12所示,经测试其执行结果如图13所示,说明能起到定位读取的作用。

 

图12 测试程序

 

 

图13 执行结果

 

5)关闭文件

在完成文件的使用后,需使用函数f.close() 来关闭它并释放其占用的所有系统资源。

 

这样在LINUX系统下,在指定了U盘文件的目录后即可实现花样文件的参数提取。

 

此帖出自stm32/stm8论坛

最新回复

敢问博主是在哪家电控公司就职呢,大豪?   详情 回复 发表于 2024-6-11 10:56
点赞 关注
 

回复
举报

21

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

敢问博主是在哪家电控公司就职呢,大豪?

此帖出自stm32/stm8论坛

点评

没有,是高校。  详情 回复 发表于 2024-6-12 09:02
 
 

回复

1517

帖子

1

TA的资源

五彩晶圆(初级)

板凳
 
zhgongzuoshi 发表于 2024-6-11 10:56 敢问博主是在哪家电控公司就职呢,大豪?

没有,是高校。

此帖出自stm32/stm8论坛
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表