OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7410|回复: 10

使用FATFS将txt电子书显示在LCD上

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2021-2-27
在线时间
4 小时
发表于 2021-5-19 14:03:48 | 显示全部楼层 |阅读模式
1金钱
txt中有很多空行,在LCD上不能保证每页(算上空格的)字数相等,有些页字多有些字少,目前还没有太好的思路。

最佳答案

查看完整内容[请看2#楼]

问题已经解决。 我的问题可能描述的不太清楚,我再说一遍: 我是调用的Show_Str函数直接显示的buff里面全部的内容(其实质也是一个汉字一个汉字的显示),只是LCD屏上会根据f_read的参数len显示len个长度的数据,由于数据里面回车较多,所以最后一个字符的位置不易确定,因此在显示时即使这句话没显示完,由于到了len,后半截就会空着。 如图,最后一行“不过”到了长度len,后面的内容就不显示了。 我的解决思路: 读取 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2021-2-27
在线时间
4 小时
 楼主| 发表于 2021-5-19 14:03:49 | 显示全部楼层
本帖最后由 白斩鸡 于 2021-5-20 14:45 编辑

问题已经解决。
我的问题可能描述的不太清楚,我再说一遍:
我是调用的Show_Str函数直接显示的buff里面全部的内容(其实质也是一个汉字一个汉字的显示),只是LCD屏上会根据f_read的参数len显示len个长度的数据,由于数据里面回车较多,所以最后一个字符的位置不易确定,因此在显示时即使这句话没显示完,由于到了len,后半截就会空着。

IMG_20210520_143503.jpg
如图,最后一行“不过”到了长度len,后面的内容就不显示了。
我的解决思路:
读取文件时使用较大的len,确保读取的内容能够填满一页。
在显示的函数Show_Str里面记录显示的数据字节数,得出buff的指针偏移量,换页时移动指针即可。
也就是说,每次读取都是读取大于一页的长度,而指针偏移则以显示的内容长度为准。

回复

使用道具 举报

4

主题

896

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4310
金钱
4310
注册时间
2019-9-4
在线时间
897 小时
发表于 2021-5-19 15:16:52 | 显示全部楼层
用二维数组呢,一个数组当作一页,存满即为一页。
回复

使用道具 举报

7

主题

480

帖子

0

精华

高级会员

Rank: 4

积分
773
金钱
773
注册时间
2021-4-15
在线时间
304 小时
发表于 2021-5-19 15:21:51 | 显示全部楼层
论坛上有大佬做过这个好像!应该挺难的吧!
日常敲键--头秃一片
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8465
金钱
8465
注册时间
2020-5-11
在线时间
3904 小时
发表于 2021-5-19 16:11:48 | 显示全部楼层
为啥要让每页字数相等?
很久以前我做过一个简单的,不记得有这问题啊。
IMG_20120915_115425.jpg IMG_20120915_115405.jpg
专治疑难杂症
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2021-2-27
在线时间
4 小时
 楼主| 发表于 2021-5-19 20:19:15 | 显示全部楼层
LcwSwust 发表于 2021-5-19 16:11
为啥要让每页字数相等?
很久以前我做过一个简单的,不记得有这问题啊。

我用的是10.1寸的LCDRGB屏,换行的话就会出现后面的空白部分占LCD屏的位置,而数据缓存区里只有1个/r/n,就不太容易确定这一页的内容在什么缓存区的什么位置结束。请问您这个是如何实现的,是没有换行吗还是使用了一些方法。另外非常感谢您的回复!
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2021-2-27
在线时间
4 小时
 楼主| 发表于 2021-5-19 20:20:59 | 显示全部楼层
A571157242 发表于 2021-5-19 15:16
用二维数组呢,一个数组当作一页,存满即为一页。

问题好像不是数据存储,是LCD的显示问题。换行之后后面一片空白占了LCD屏的位置,而在数组里面也只是一个\r\n吧,就不容易去匹配。感谢回复!
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2021-2-27
在线时间
4 小时
 楼主| 发表于 2021-5-19 20:23:14 | 显示全部楼层
日渐秃兀 发表于 2021-5-19 15:21
论坛上有大佬做过这个好像!应该挺难的吧!

感谢提醒!我去学习一下
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8465
金钱
8465
注册时间
2020-5-11
在线时间
3904 小时
发表于 2021-5-20 08:32:21 | 显示全部楼层
白斩鸡 发表于 2021-5-19 20:19
我用的是10.1寸的LCDRGB屏,换行的话就会出现后面的空白部分占LCD屏的位置,而数据缓存区里只有1个/r/n, ...

看了下程序,没有处理换行。
但是我觉得换行也不难啊,往屏上显示时就知道最后一个字的位置了。

专治疑难杂症
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2021-5-21 02:00:31 | 显示全部楼层
LcwSwust 发表于 2021-5-19 16:11
为啥要让每页字数相等?
很久以前我做过一个简单的,不记得有这问题啊。

这个很有年代感啊
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8465
金钱
8465
注册时间
2020-5-11
在线时间
3904 小时
发表于 2021-5-21 09:23:47 | 显示全部楼层

是啊,2012年做的,手艺粗糙了点,NOKIA5110液晶屏现在还有5片。
专治疑难杂症
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 21:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表