用于分层屏幕和菜单的嵌入式软件结构

时间:2013-02-16 19:54:56

标签: c embedded structure

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

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

它会:

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

我写了一些有用的代码,但仍然觉得我正在编写程序性的spagetti代码。我是嵌入式c系统的新手,所以我不知道我是否可以在代码中使用类或对象。如果有人告诉我正确的方法,我将不胜感激。我对编程其他任何BTW都很有经验,所以对技术讲座感到自由。 ;)

BTW菜单代码的结构如下:

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中使用的对象?

1 个答案:

答案 0 :(得分:2)

我肯定会在这里使用面向对象的C,就像你怀疑是可能的一样。有很多关于如何在C上堆栈溢出进行oop的引用。您可以使用结构创建类,并使用函数指针作为成员函数,如果需要多态,则可以覆盖它们。

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

(我在使用C和ASM的DSP上做了所有这些)

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