搜索
bottom↓
回复: 766

一个占用内存极少的菜单系统的实现

  [复制链接]

出0入0汤圆

发表于 2007-9-5 00:23:21 | 显示全部楼层 |阅读模式
演示+文档+源代码

目录:

一些手机界面的分析                                          

图标层代码实现分析                                               

条项层代码实现分析                                                

菜单框架的代码实现                                             

模版代码讲解                                                     

动态内容层菜单                                                

动态生成条项菜单内容                                          

数字快捷方式的实现                                               

菜单函数调用图                                                  

问答FAQ                                                            

这个东西哪来的?                                                  

能在51这种低速CPU上跑不?                                       

我担心我的CPU速度不够快,能用这个菜单不?                        

这个菜单框架的内存耗损大不不大?                                   

怎么移植?                                                        

关于移植的建议                                                   

杂项                          

开机直接执行某些功能

如何实现中断中使用LCD?

数字建快捷方式

关于多国语言切换:

关于内存耗损:

关于更多的改进:

关于快捷方式:

关于如何实现在线帮助提示

如何快速创建一个条项层菜单?

在FramBuffer型LCD上直接使用这份代码                           

为什么公布这份代码,使用的话需要授权什么的么?                  



文件目录:

1. MenuSampleCode目录是代码  这份代码我在我的硬件上测试过。

2.说明文档是:一个占用内存极少的菜单系统的实现.pdf

3.menu.gif是一个演示

4.目录说明

MenuSampleCode\SI    Source Insight 3.5 的工程文件

MenuSampleCode\Menu.Uv2  Keil 的工程

MenuSampleCode\Src   源代码

MenuSampleCode\Obj   目标文件

MenuSampleCode\Lst   列表文件

可以看MenuSampleCode\Lst\menu.m51最后编译的结果:

代码状况:



Program Size: data=9.0 xdata=110 code=15731

creating hex file from ".\Obj\menu"...

".\Obj\menu" - 0 Error(s), 0 Warning(s).

这是打开动态条项生成功能时的结果。



Program Size: data=9.0 xdata=79 code=15155

creating hex file from ".\Obj\menu"...

".\Obj\menu" - 0 Error(s), 0 Warning(s).

这是关闭动态条项生成功能时的结果。



菜单深度均为4层深度。

25+4*3 = 37Byte 可见占用内存还是挺小的。

源文件说明

CPU.H        CPU相关定义

Main.C       主函数

Ks0108.C     LCD驱动

ASCII.c      8x8 8x16 英文字模

KeyScan.C    键盘扫描

MenuPara.C   菜单函数使用模版

MenuTop.C    顶层菜单和菜单核心代码

MenuFSM.C    菜单核心和FSM代码

MenuFunc.C   功能菜单和动态条项生成代码

MenuLanguage.C   语言切换代码

MenuMeasure.C    空例子

PIC.C            图标

MenuMain.C       菜单主循环

KeyScan.H      

Ks0108.H     

Menu.H

Menu.C           main函数

Chinese.txt      用到的中文

Chinese.C        中文字模



Simulation.exe是uCGUI上移植的演示。

可以通过你的键盘控制菜单:

你的PC键盘的四个方向键:

向上键  :确定  

向下键  :ESC

向左键  :向左

向右键  :向右

默认语言是英文,你可以进入设置成中文。

PS:不提供这个的代码。请不要问我要。其实Src的源代码的效果也就是这个的运行效果。

包括动态条项生成功能。

自己下载吧。

点击此处下载armok01169568.rar

出0入0汤圆

发表于 2007-9-5 07:34:53 | 显示全部楼层
精品

出0入0汤圆

发表于 2007-9-5 07:48:18 | 显示全部楼层
谢谢阿

出0入0汤圆

发表于 2007-9-5 08:13:42 | 显示全部楼层
ku

出0入42汤圆

发表于 2007-9-5 08:20:30 | 显示全部楼层
早上发现好东西!

出0入4汤圆

发表于 2007-9-5 08:22:37 | 显示全部楼层
留个记号

出0入0汤圆

发表于 2007-9-5 08:43:29 | 显示全部楼层
好东西。

出0入0汤圆

发表于 2007-9-5 08:48:38 | 显示全部楼层
cool~谢谢~先收下,仔细研究研究~

出0入4汤圆

发表于 2007-9-5 09:00:00 | 显示全部楼层
谢谢! 这样的文档很少见(不过 PDF 中有些字符是乱码的)

出0入0汤圆

发表于 2007-9-5 09:04:53 | 显示全部楼层
我想有用的东西,自己一个人放着在电脑里,N年以后也可能变成占空间的垃圾文件,或者别人用的上这份代码呢

我不得不佩服楼主的想法,如果都像楼主这样,中国的技术还能落后吗?

现在我觉得搞技术的都套在自己的套子里,每一次开发,都是一个新的过程

不如像楼主说的:或者别人用的上这份代码呢

出0入0汤圆

发表于 2007-9-5 09:06:04 | 显示全部楼层
搂主,能不能把原理图也公布一下呢?

出0入0汤圆

发表于 2007-9-5 09:29:50 | 显示全部楼层
不顶都不行啊!

强烈建议加酷!!!

出0入0汤圆

发表于 2007-9-5 09:40:56 | 显示全部楼层
确实是一个很好的教程。这次可以增加自已的见识了

出0入0汤圆

发表于 2007-9-5 09:46:51 | 显示全部楼层
先收下,有时间慢慢看,谢谢.

出0入0汤圆

发表于 2007-9-5 10:09:55 | 显示全部楼层
先收下,有时间慢慢看,谢谢.

出0入0汤圆

发表于 2007-9-5 10:18:25 | 显示全部楼层
挺不错的!

出0入0汤圆

发表于 2007-9-5 10:38:13 | 显示全部楼层
cool

出0入0汤圆

 楼主| 发表于 2007-9-5 10:57:10 | 显示全部楼层
原理图就不必了吧,从CPU.H里面就能看出硬件连接的呀。
包括液晶,包括键盘,可况你们的硬件的底层连接根本没有必要跟这个一致的,一个新硬件上就修改这些底层接口就好了。这也是需要你们搞定的部分。

有人说PDF 中有些字符是乱码,请告诉我哪一页哪段文字,我检查一下。
如果代码,文档有BUG,看到后,请写Email告诉我,谢谢

出0入0汤圆

发表于 2007-9-5 10:59:14 | 显示全部楼层
ding!!!!!!!!

出0入4汤圆

发表于 2007-9-5 11:00:07 | 显示全部楼层
好东西不顶不行

出0入0汤圆

发表于 2007-9-5 11:14:47 | 显示全部楼层
顶啊

出0入0汤圆

发表于 2007-9-5 11:33:44 | 显示全部楼层

出0入0汤圆

发表于 2007-9-5 11:43:46 | 显示全部楼层
好东西,看看

出0入0汤圆

发表于 2007-9-5 11:57:47 | 显示全部楼层
精品,赞一下楼主的无私!大家都要学习啊

出0入0汤圆

发表于 2007-9-5 12:26:34 | 显示全部楼层
真是好东西啊
找了好久,真是可遇不可求啊!!!
楼主大好人!!!!!

出0入0汤圆

发表于 2007-9-5 12:37:09 | 显示全部楼层
多谢分享!!!

出0入0汤圆

发表于 2007-9-5 13:26:45 | 显示全部楼层
pdf文档没问题

出0入0汤圆

发表于 2007-9-5 13:53:05 | 显示全部楼层
好东西,只能顶.

出0入8汤圆

发表于 2007-9-5 14:26:52 | 显示全部楼层
绝对好人!

出0入0汤圆

发表于 2007-9-5 14:46:14 | 显示全部楼层
爽.....

出0入0汤圆

发表于 2007-9-5 14:54:52 | 显示全部楼层
谢谢!支持这样的共享精神。
"中国的技术还能落后吗?"
这种精神的人多了,绝不落后。

出0入0汤圆

发表于 2007-9-5 15:22:28 | 显示全部楼层
ucGUI模拟部分可不可以也开放了?

出0入0汤圆

发表于 2007-9-5 15:27:58 | 显示全部楼层
多谢楼主!!

出0入0汤圆

发表于 2007-9-5 17:35:33 | 显示全部楼层
好  要收藏,无私呀

出0入0汤圆

 楼主| 发表于 2007-9-5 18:28:33 | 显示全部楼层
--------Menu Porting On uCGUI---------
PS:假定你有一份uCGUI的VC工程代码,并保证这份代码你原来已经编译,并测试过是可用的。
那么如何把《一个占用内存极少的菜单系统的实现.pdf》的代码移植到uCGUI?

1.由于Ks0108的代码编写的时候,学习了uCGUI的函数风格,因此几乎所有的函数都跟UCGUI
的同等功能函数同名,所以如果直接难道uCGUI下,必然会因函数重复定义而冲突,因此需要把菜
单系统的所有”GUI_“这前缀的函数--不管是定义还是调用还是声明,都统统替换成别的名字。
"GUI_"---->"MenuGUI_"
2.屏蔽CPU.H当中跟51单片机的任何定义,比如接口的sbit定义等,还有51相关的头文件。
3。修改Ks0108的驱动,改写Display_Locate函数,屏蔽,跟硬件有关的函数,或者改写成
有效的函数,比如Display_Locate用uCGUI的LCD_DrawPixel来实现,屏蔽
KS0108_DisplayOn这样的函数。
4.改写键盘扫描函数,用uCGUI的函数实现。留意键值返回可能也要修改
5。uCGUI的VC工程中加入:
Ks0108.C     LCD驱动
KeyScan.C    键盘扫描
MenuPara.C   菜单函数使用模版
MenuTop.C    顶层菜单和菜单核心代码
MenuFSM.C    菜单核心和FSM代码
MenuFunc.C   功能菜单和动态条项生成代码
MenuLanguage.C   语言切换代码
MenuMeasure.C    空例子
MenuMain.C       菜单主循环
Menu.C           menu的内容
所有文件在同一个目录下。
6。重新写一个main.C,里面实现main函数如下:

#include "gui.h"
#include "sim.h"

#include <stddef.h>

void MenuMainLoop(void);

void main(void) {
  GUI_Init();
  GUI_SetBkColor(GUI_LIGHTGRAY);
  GUI_Clear();
  MenuMainLoop();//Menu Loop
  while(1){
  }
}

7。把CPU.H的常量定义修改为#define _CONST_  const 原来51上是code
8.把两个字库文件的code也改成_CONST_
9.确认uCGUI的LCDConf.H定义了LCD的大小和控制器:
#define LCD_XSIZE      (320)   /* X-resolution of LCD, Logical coor. */
#define LCD_YSIZE      (240)   /* Y-resolution of LCD, Logical coor. */

#define LCD_BITSPERPIXEL (8)

#define LCD_CONTROLLER 1375

9.编译代码,可能有这样的警告:
menulanguage.c(37) : warning C4090: '=' : different 'const' qualifiers
ks0108.c(1582) : warning C4761: integral size mismatch in argument; conversion supplied
可以不管,只要没有Err依然可以试试运行。
10.做的改动大概就这么多,如果需要了解细节,自己看附件中我已经移植后的代码。
                          2007-09-05
                          liandao
                          lycld@163.com
PS:不提供uCGUI的代码,请不必来信问关于UCGUI源代码的问题,谢谢。
                          
源代码在附件中。
点击此处下载armok01169808.rar

出0入0汤圆

发表于 2007-9-5 19:52:04 | 显示全部楼层
一个问题,这个菜单的实现是没有问题,但具体的参数更改怎么实现,例如:有一个参数的范围是0-255,使用+ - 键修改,怎么实现?????期待中........

出0入0汤圆

发表于 2007-9-5 19:55:56 | 显示全部楼层
我做的占内存135byte 就是不知道怎么改参数

出0入0汤圆

发表于 2007-9-5 21:43:59 | 显示全部楼层
很好,我正好有个项目要借鉴

出0入0汤圆

发表于 2007-9-5 23:38:48 | 显示全部楼层
非常感谢楼主

出0入0汤圆

发表于 2007-9-6 00:01:31 | 显示全部楼层
单看楼主的文档列表就很佩服!

出0入0汤圆

发表于 2007-9-6 00:22:20 | 显示全部楼层
很好!!

出0入0汤圆

发表于 2007-9-6 01:05:40 | 显示全部楼层
顶一下

出0入0汤圆

 楼主| 发表于 2007-9-6 08:20:03 | 显示全部楼层
35楼】 adongliu
        一个问题,这个菜单的实现是没有问题,但具体的参数更改怎么实现,例如:有一个参数的范围是0-255,使用+ - 键修改,怎么实现?????期待中........
    猜测你说的问题是动态生成条项的部分代码,也猜测你还没有认真读完文档,既然是动态生成条项菜单,那么就跟具体应用有关,应当由具体函数来实现MaxDynamicItem 的赋值。
    当然也包括后面初始化动态内容部分、以及Left Right函数的内容修改部分了。因为需要显示的内容由你的函数决定的。

//    do{
//        MaxDynamicItem = InputNum(4,4,9);//要求输入一个动态菜单的值,我们根据这个值生成菜单
        MaxDynamicItem = 8;
//        if(MaxDynamicItem == 0xFF){//退出
//            Jump2Menu(SelfMenuIndex,FlashMode_AutoInit);
// //           ReFlash = true;
//            return;
//        }
//    }while(MaxDynamicItem ==0x00);//大于0才有效

//    GUI_Clear();
      上面代码中是期望能通过键盘以函数InputNum得到一个动态值,然后代码根据该值生成要求的条项菜单,这是验证代码,后期移植时,我把问题简单成:编译时人工设定一个值        MaxDynamicItem = 8;  你修改这个值,那么编译后是8个条项,而修改成其它,就是其它的值咯。明白否?
     以短信收件箱为例,短信收件箱里面以短信发送人的名字作为条项显示的,而有多少条项就是根据收件箱里面有多少条短信了。既然短信是可以收到(也就是增加了条项项数),也可以删除(减少项数),而且收到的短信的发送人不是编写代码时就知道的(但可以通过函数调用动态得知)。因此这就是要求动态生成条项的。
     而动态生成条项的概念是相对于通常那些菜单是编写代码时就知道内容的菜单而言的。之中差异你们慢慢体会。
程序中几乎所有的参数都在Menu.C Menu.H CPU.H中,如果你确实用到这份代码,那么多看看代码,在硬件上试试,也就知道怎么用了,如果只是看代码的看,那么难于体会这些参数具体意义--何况有的参数跟具体硬件有关,是移植者要替代实现的。具体问题具体讨论,到时可以再有问题可以Email讨论。

出0入0汤圆

发表于 2007-9-6 08:39:47 | 显示全部楼层
真是好人啊,顶!

出0入0汤圆

发表于 2007-9-6 18:19:15 | 显示全部楼层
引用------>猜测你说的问题是动态生成条项的部分代码,也猜测你还没有认真读完文档,既然是动态生成条项菜单,那么就跟具体应用有关,应当由具体函数来实现MaxDynamicItem 的赋值


不是动态条目,是一个数值,假如说是一个int型的,不可能做65535个动态条目吧,通过左右移动选择个十百....来更改0-9的数值

出0入0汤圆

发表于 2007-9-6 19:35:57 | 显示全部楼层
非常好的东西 顶下先。

出0入0汤圆

发表于 2007-9-6 20:21:07 | 显示全部楼层
好东西,先收藏了,感谢楼主!

出0入0汤圆

 楼主| 发表于 2007-9-6 21:58:01 | 显示全部楼层
adongliu:

        引用------>猜测你说的问题是动态生成条项的部分代码,也猜测你还没有认真读完文档,既然是动态生成条项菜单,那么就跟具体应用有关,应当由具体函数来实现MaxDynamicItem 的赋值


adongliu说:不是动态条目,是一个数值,假如说是一个int型的,不可能做65535个动态条目吧,通过左右移动选择个十百....来更改0-9的数值
我的回答:
    的确不能,的确有限制,看看Menu.H的菜单的变量的定义就知道了,那里面那个不是用unsigned char 来定义的?因此即便是普通的固定式菜单也不能大于256个,不过.....好像没有人会做这么长的菜单吧,呵呵。当然了,要做也是可以的,自己改代码把数据宽度加大呗。
    PS:原谅我胡乱的猜测。不该那么说。(就是:“猜测你说的问题是动态生成条项的部分代码,也猜测你还没有认真读完文档”)。
 

出0入0汤圆

发表于 2007-9-6 23:01:49 | 显示全部楼层
我说的不是菜单 是某个菜单项目的参数,例如 料的长度设定为0-6666mm,那这个数值需要用+ -键输入,我不知道该怎么做,原先我是定义一个全局变量,当菜单的条目里的+ -键要转到的菜单ID为255的时候修改这个全局变量,但是不是很理想.那位有比较好的方法没有.

出0入0汤圆

发表于 2007-9-7 07:06:18 | 显示全部楼层
好的,占个位子先

出0入0汤圆

发表于 2007-9-7 08:21:09 | 显示全部楼层
好的,占个位子先

出0入0汤圆

发表于 2007-9-7 08:57:05 | 显示全部楼层
一大早先顶以下

出0入0汤圆

发表于 2007-9-7 10:09:20 | 显示全部楼层
赞赏

出0入0汤圆

发表于 2007-9-7 17:31:19 | 显示全部楼层
请教楼主,我将代码移植到ADS下遇到一个问题
U8 _CONST_ * TopItemEN[]=
{
{"Function"},
{"Parameter"},
{"Measure"},
{"Language"},
{"Test"},
};
就是编译以上类似的代码时,编译不通过。当然在ADS下_CONST_是const的意思。
如果将_CONST_放到*也是编译不通过,提示如下:
Error   : C3028E: '=': implicit cast of pointer to non-equal pointer
Menu.C line 82
请楼主指点一下,非常感谢。

出0入0汤圆

发表于 2007-9-7 17:33:59 | 显示全部楼层
放到*之后也是编译不通过。*前后都写上也是编译不通过。不知楼主有没有遇到过类似的情况?

出0入0汤圆

发表于 2007-9-11 10:57:46 | 显示全部楼层
这么快就沉帖了。

由于ADS编译器的不同,移植时会出现以下几个问题:


1.ADS对代码要求严格,因此:
U8 _CONST_ * _CONST_ FuncItemCN[]=
{
(unsigned char *)"读出数据",
(unsigned char *)"背光控制",
(unsigned char *)"出厂设置",
(unsigned char *)"修改密码",
};
字符串前需要强制转换(unsigned char *)。


2.需将_CONST_ struct Menu MenuFunc[]的 _CONST_ 字去掉
--------------------------------------------------------------------------------
//菜单资源指针
struct Menu * BarMenu;

--------------------------------------------------------------------------------
struct Menu MenuFunc[] =
{
MenuWhat(FuncItemCN),
MenuWhat(FuncItemEN),
};
--------------------------------------------------------------------------------
BarMenu = &MenuFunc[language];
ItemNum = (*BarMenu).TextNum;
DispItem = (*BarMenu).Text;

--------------------------------------------------------------------------------
这样就解决了BarMenu指针类型不匹配的问题。

3.修正了以上两点,还有一些警告,问题就出在下面函数的写法上,
void DispMenuParaDown()
{
    POP();
}
将其改成如下,警告消失。
void DispMenuParaDown(void)
{
    POP();
}
一般我们都写成如上的形式。如无入口参数时,则写void,避免编译警告。


--------------------------------------------------------------------------------
大概就这些。

出0入0汤圆

发表于 2007-9-11 17:30:46 | 显示全部楼层
研究中^^^^^^^^^^^^6

出0入0汤圆

发表于 2007-9-12 15:05:33 | 显示全部楼层
ding

出0入0汤圆

发表于 2007-9-12 15:36:47 | 显示全部楼层
顶起

出0入0汤圆

发表于 2007-9-13 08:53:50 | 显示全部楼层
好东西要顶上去。

出0入4汤圆

发表于 2007-9-14 15:15:24 | 显示全部楼层
这个真是个人机界面的好例子,真的不错啊,做个LIB 文件以后用得找,好好好...

出0入0汤圆

发表于 2007-9-14 18:29:39 | 显示全部楼层
頂。。。。
站個位置先。。。。

出0入0汤圆

发表于 2007-9-14 19:45:03 | 显示全部楼层
看看

出0入0汤圆

发表于 2007-9-14 20:14:17 | 显示全部楼层
好好东东,正愁没参考资料

出0入0汤圆

发表于 2007-9-15 15:36:53 | 显示全部楼层
多谢楼主!!!

出0入0汤圆

发表于 2007-9-19 13:55:42 | 显示全部楼层
多谢楼主啊,

出0入0汤圆

发表于 2007-9-19 16:12:24 | 显示全部楼层
请问有没有移植到Mega64上去的啊?我移植过程中出现了一个问题

Error[Pe513]: a value of type "Menu __flash *" cannot be assigned to an entity of type "Menu *" J:\AVR__LCD\AVR_LCD\LCD\MenuPara.C 25
就是那个指向结构体的FLASH指针要怎么样来定义

出0入0汤圆

发表于 2007-9-20 14:08:27 | 显示全部楼层
我按whoami 说的去改了还是不行啊?有没有人知道怎么样改啊?我用的是IAR

出0入0汤圆

发表于 2007-9-20 14:34:48 | 显示全部楼层
有没有人移植到AVR下去的,用IAR编译器,有的话交流一下,现在有一个问题,就是这个程序编译不通过

BarMenu = &(MenuPara[language]);


编译结果
Error[Pe513]: a value of type "Menu __flash *" cannot be assigned to an entity of type "Menu *" J:\AVR__LCD\AVR_LCD\LCD\MenuPara.C 25

出0入0汤圆

发表于 2007-9-20 14:35:28 | 显示全部楼层
本人的邮箱是zgw169@163.com

出0入0汤圆

发表于 2007-9-20 14:37:18 | 显示全部楼层
不顶对不起自己,这么好的东西!

出0入0汤圆

发表于 2007-9-20 15:01:08 | 显示全部楼层
我按whoami 说的去改了还是不行啊?有没有人知道怎么样改啊?我用的是IAR
---------------------------------------------------------
我用的是ADS,可能各个编译器的具体参数和设置不一样。才会导致报出很多错误。
大家耐心点,一定会发现问题所在的。

出0入0汤圆

发表于 2007-9-20 15:18:18 | 显示全部楼层
liandao:
         你好!
  pdf文挡我怎么解压缩有问题呀?如下:
!   D:\mp3\armok01169568.rar: 一个占用内存极少的菜单系统的实现\一个占用内存极少的菜单系统的实现.pdf CRC 失败。文件被破坏
!   D:\mp3\armok01169568.rar: 不可预料的压缩文件末端
能不能将pdf直接发送到我的邮箱:
           lsh152003@163.com

出0入0汤圆

发表于 2007-9-20 16:20:33 | 显示全部楼层
liandao

有没有移植到AVR上去的,编译器为IAR4.11A,现在我移植过程中有一个问题一直没有解决
就是指针类型的问题

BarMenu = &MenuPara[language];

Error[Pe513]: a value of type "Menu __flash *" cannot be assigned to an entity of type "Menu *" J:\AVR__LCD\AVR_LCD\LCD\MenuPara.C 25

出0入0汤圆

发表于 2007-9-21 09:34:49 | 显示全部楼层
多品位下源代码。心别急,相信自己会搞出来的。

出0入0汤圆

发表于 2007-9-21 21:29:29 | 显示全部楼层
好东西呀,不顶都不行。

出0入0汤圆

发表于 2007-9-22 21:05:41 | 显示全部楼层
好东西,顶一个。

出0入0汤圆

发表于 2007-9-25 15:59:16 | 显示全部楼层
本人已经移植到了IAR下的M64运行了

出0入0汤圆

发表于 2007-9-25 16:19:03 | 显示全部楼层
好东东,谢楼主无私奉献!都像楼主这样咱大中国的梦想很快会实现了!

出0入0汤圆

发表于 2007-9-25 16:43:44 | 显示全部楼层
太棒啦,专业化编程思路,谢谢!

出0入0汤圆

发表于 2007-9-25 17:07:14 | 显示全部楼层
太强了,ram才用了100不到
我自己写的ram起码400

出0入0汤圆

发表于 2007-9-25 17:10:12 | 显示全部楼层
好东西,太有用了~

出0入0汤圆

发表于 2007-9-25 19:07:46 | 显示全部楼层
真的太有用了!!1

出0入0汤圆

发表于 2007-9-26 09:11:08 | 显示全部楼层
再顶一下!真是好东西!

出0入0汤圆

 楼主| 发表于 2007-9-26 12:42:06 | 显示全部楼层
To:binbin2002
1.可否详细写写你是如何处理指针的问题的?
2.可否写写移植要点和关键点,这样对于别人更有益处.
-----------------------------------------
binbin2002原来的提问:

有没有移植到AVR上去的,编译器为IAR4.11A,现在我移植过程中有一个问题一直没有解决
就是指针类型的问题

BarMenu = &MenuPara[language];

Error[Pe513]: a value of type "Menu __flash *" cannot be assigned to an entity of type "Menu *" J:\AVR__LCD\AVR_LCD\LCD\MenuPara.C 25
 

出0入0汤圆

发表于 2007-9-26 13:59:17 | 显示全部楼层
我发过一个UCGUI的源码和学习交流帖子,也是COOL贴,大家可以找找.

出0入0汤圆

发表于 2007-9-26 14:00:10 | 显示全部楼层
补充:如果大家要UCGUI的源码的话!!!
看楼上

出0入0汤圆

发表于 2007-9-27 10:34:16 | 显示全部楼层
To:binbin2002
1.可否详细写写你是如何处理指针的问题的?
2.可否写写移植要点和关键点,这样对于别人更有益处.
-----------------------------------------
binbin2002原来的提问:

有没有移植到AVR上去的,编译器为IAR4.11A,现在我移植过程中有一个问题一直没有解决
就是指针类型的问题

BarMenu = &MenuPara[language];

Error[Pe513]: a value of type "Menu __flash *" cannot be assigned to an entity of type "Menu *" J:\AVR__LCD\AVR_LCD\LCD\MenuPara.C 25  

----------------------------------------------
支持下楼主!

出0入0汤圆

发表于 2007-9-30 13:10:50 | 显示全部楼层
好东西

出0入0汤圆

发表于 2007-10-4 15:52:38 | 显示全部楼层
先收下,有时间慢慢看

出0入0汤圆

发表于 2007-10-5 12:55:47 | 显示全部楼层
不顶不行,好东西

出0入0汤圆

发表于 2007-10-9 22:49:42 | 显示全部楼层
乖乖,不得不顶呀,liandao同学的共享精神让人肃然起敬!更可贵的是文档写得清楚!

出0入0汤圆

发表于 2007-10-10 19:43:12 | 显示全部楼层
谢谢!

出0入0汤圆

发表于 2007-10-12 16:37:49 | 显示全部楼层
太专业了.楼主简直不是人

出0入0汤圆

发表于 2008-1-25 15:39:58 | 显示全部楼层
楼主分数不高,身手不凡啊。看文档最后,你说是07年毕业的,好强大啊。
这么好的帖子打家都来看!

出0入0汤圆

发表于 2008-1-25 16:54:39 | 显示全部楼层
不顶不行,好东西

出0入0汤圆

发表于 2008-1-26 12:27:58 | 显示全部楼层
非常不错,特别是能够耐心的把文档写完.楼主了不起.

出0入0汤圆

发表于 2008-1-26 13:18:11 | 显示全部楼层
(*^__^*) 嘻嘻……~~ 不错!!!

出0入0汤圆

发表于 2008-1-26 14:31:16 | 显示全部楼层
不错,收藏

出0入70汤圆

发表于 2008-1-26 14:52:02 | 显示全部楼层
收藏
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 08:32

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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