3

我是嵌入式 c 编程的新手,我需要一些建议。

我正在尝试在嵌入式系统上创建一个带有屏幕下方的菜单结构,操作系统代码和绘图/菜单库已准备就绪,但我无法弄清楚我将如何设计这个系统。

它会有:

  • 菜单和子菜单
  • 用户在进入某些菜单项之前可以验证的密码屏幕
  • 以及它们下方的屏幕。

我写了一些有效的代码,但我仍然觉得我在写程序意大利面条代码。而且我是嵌入式 c 系统的新手,所以我不知道我是否可以在代码中使用类或对象。如果有人告诉我正确的方法,我将不胜感激。顺便说一句,我对编程任何其他东西都很有经验,所以请随意参加技术讲座。;)

顺便说一句,菜单代码的结构如下:

menu myMenu;
entry* myMenuEntries;
int selection = 0;
myMenuEntries[0] = [entry definer code];
...
myMenu.entries = (entry *) myMenuEntries;
selection = DisplayMenu(myMenu);
switch(selection){
   case 0: exit(); break;
}

如何在嵌入式 c 中创建一个对象,就像它在中使用的那样myMenu.entries

4

1 回答 1

3

我肯定会在这里使用面向对象的 C,就像您怀疑的那样。有很多关于如何在 C 中在堆栈溢出时执行 oop 的参考。您可以从结构中创建类并使用函数指针作为成员函数,如果您想要多态性,可以将其覆盖。

每个屏幕都可以有 onEnter(),例如,在屏幕加载时初始化内容,并且您可以有一个可绘制类,该类可以包含知道如何在任何 x,y 坐标处绘制自己的字符串、图元、图像等. 您还可以有一个标准的屏幕对象,它由屏幕上的对象列表、它们的坐标和内容组成。这些也可以在编译时在一个大表中初始化。

(我已经使用 C 和 ASM 在 DSP 上完成了所有这些工作)

也有现成的库可以做到这一点。我知道 micrium 有一个。我在我的手机上,或者我会谷歌它并将链接放在这里。

于 2013-02-16T20:31:55.083 回答