我正在创建一个在STM32F429微控制器上运行的GUI,用C语言编写。
我遇到的问题是如何管理文本视图的滚动。我有一个带ASCII字符的数据缓冲区,我想管理换行符(\ n,ASCII代码10),这样它就会在文本框中给出一个新行。
以下是向后滚动一行时的缓冲区的一个小示例,没有滚动并向前滚动一行:http://i.stack.imgur.com/4eK7w.png。绿色框是开始指针,红色框是结束指针。蓝色框显示一行文本(最多6个字符)。
向前滚动一行:
这个很容易。
向后滚动一行:
这是我遇到麻烦的。
通过查看表格,很容易看出启动指针需要移动2步,结束指针5步,我认为这是因为我们可以看到所有数据(即我们知道过去和未来)。但这是否意味着我们必须通过所有以前的数据来知道行的位置?
如果有人对如何解决这个问题有任何想法,我将非常感激!
修改 添加了另一个示例图片:http://i.stack.imgur.com/FKCNg.png
答案 0 :(得分:0)
我认为有必要返回所有数据。你需要回到最近的两个' \ n'字符。
将开始指针移动到上一行的开头: