1
我创建一个GUI来在STM32F429微控制器上运行,它是用C写自定义GUI - 滚动文本查看
我遇到的问题是如何管理滚动的文本视图。我有一个带有ASCII字符的数据缓冲区,我想要管理换行符(\ n,ASCII码10),以便在文本框中输入新行。
下面是一个小例子,当滚动回滚一行时,不滚动并向前滚动一行:http://i.stack.imgur.com/4eK7w.png。绿框是开始指针,红框是结束指针。蓝色框显示一行文字(最多6个字符)。
向前滚动一行:
这个人是很容易的。
- 将开始指针移动到下一个“\ n”char或6个位置(不管先到哪里)之后。
- 将结束指针移动到下一个“\ n”字符或6个位置(不管先来)。
向后滚动一行:
这是我遇到的麻烦之一。
- 如果我们在移动开始指针时没有遇到换行符,我们可以将它移动6个位置而没有麻烦。
- 如果当前结束指针不是换行符“\ n”,我们可以将它移回6个位置,但如果它是我们会遇到麻烦。
通过查看该表可以很容易地看到,开始指针需要移动2步和结束指针5个步骤,我想这是因为我们可以看到所有的数据(即我们所知道的过去和未来)。但这是否意味着我们必须通过以前的所有数据才能知道行的位置?
如果有人对如何解决这个问题有任何想法,我会非常感谢!
编辑: 添加了另一个示例图像:http://i.stack.imgur.com/FKCNg.png
谢谢,第一步帮了大忙!我用另一个示例缓冲区(http://i.stack.imgur.com/FKCNg.png)进行了测试,它似乎工作。这里最坏的情况是从第5条线移动到第4条线,因为它需要一直移动到起点。 步骤2的一个小优化:“如果您在一行字符后没有遇到任何”\ n“(包括步骤1),您可以停止循环,因为您已经到达目标。在新的例子中,可以看到从第3行到第2行。 – sandberg