6050|11

7815

帖子

56

TA的资源

裸片初长成(中级)

楼主
 

FreeUI v0.1配置简单说明 [复制链接]

今天一上班,没多久打开论坛,就看到 armink 大神已经非常务实地开始在用了。
然后提出了很实在的问题,确实,关于 配置这一块 必须首先说明。

本想今晚再做这个文档的,但仔细想想,其实内容不多——因为目前功能比较简陋,干脆就现在写了。

先简单提一下。

这个FreeUI的基本思路是:

整个人机界面分为 两部分:
一 菜单(严格命名为 menu),它指的是,人机界面操作的 菜单本身,它包含的是一个(对用户而言是任意多级,但实际代码处理上是 两级 屏-空间 菜单)多级的菜单树。
    用人话说就是,它把所有界面内容 组织成 一系列屏幕界面,每个屏幕界面上有数量功能不等的控件,它们包含了 文本框(可输入可输出信息),Label,即仅仅用于显示的 标签;当然少不了的还有 button按钮。
    同时,它还要根据 应用开发者 的需求或 业务逻辑,把这些 菜单操作 和 实际的函数逻辑勾连在一起。
    这一部分总成为 菜单;

二 GUI界面(严格命名为 gui),它指的,仅仅只是 显示出来的界面外观而言。
    决定它跳转,显示的内容,全部由 上面的 菜单决定。

然后,这两者之间的信息交互通信,采用的是 最常用的 消息通知机制,我把它做成了 事件。
两者之间通过 数据队列进行交换,(一对,收发两个方向各一个。为了节省空间,我也在考虑如何合成一个)。

为了实现上述的思路。实现的时候,就决定了实际代码的组织结构:

config  
      menu_config
      gui_config

event
      同样的也分为 menu_event gui_event

protocol
      这里是 消息数据帧的格式;

然后是各自的主调模块,
      menu_main
      gui_main

这个名字暗示了它们可以作为两个独立的任务,实际上,做过gui的人都知道,ui这事和 多线程多任务真的一毛钱关系都没有,只不过为了更方便处理和实时性才考虑用 多线程来组织而已。
而我这里做的时候,从来不假设你必须使用 多线程。虽然我会建议。

此帖出自编程基础论坛

最新回复

  xinxin 能不能多用点图来 替代文字呢,  思维导图什么的。。。 表示 密集恐惧症。。。。  详情 回复 发表于 2016-2-26 00:08
点赞 关注
个人签名

强者为尊,弱者,死无葬身之地

 

回复
举报

7815

帖子

56

TA的资源

裸片初长成(中级)

沙发
 
本帖最后由 辛昕 于 2016-1-11 10:28 编辑

因为时间有限,我重点只说 配置 的部分。

这实际包含 了 两部分

一 menu gui 的 屏 控件  的 结构定义;
二 字符串描述 部分的定义。

因为这里主要是 应 @armink 大神,他是老手,和她说话不用太费劲,所以我直入主题。

打开源码——是的,源码就可以了不用打开工程)

  1. #ifndef _MENU_CONFIG_
  2. #define _MENU_CONFIG_

  3. #include "typedef.h"

  4. typedef U16 (*fMenu)(char *);

  5. typedef struct
  6. {
  7.     U16  ctrl_id;   // id为了便于索引,和相应的gui(外观配置)对应上,以后所有的scr_id均类似,不再赘述
  8.     fMenu trig;     // 触发函数,即 button按了,或者 文本框输入并确认了以后将触发的函数
  9.     U16  next;     
复制代码

  1. #ifndef _GUI_CONFIG_
  2. #define _GUI_CONFIG_

  3. // 这是 gui ,也就是界面的配置,类似的同样分为 屏画面 和 控件 两级
  4. #include "typedef.h"

  5. typedef struct
  6. {
  7.     U16 ctrl_id;
  8.     char *descript;   // 这个 描述,包含了 该控件外观所必须的信息
  9. }gui_ctrl;

  10. // 目前,由于受简陋外观所限, 屏画面本身是不需要 外观描述的。
  11. typedef struct
  12. {
  13.     U16 screen_id;
  14.     gui_ctrl *ctrls;
  15.     U16 count;
  16. }gui_screen;

  17.   // 这是使用中需要用到的一个计算结果所用的数据结构
  18. typedef struct
  19. {
  20.     U8 row;
  21.     U8 column;
  22.     char *string;
  23. }gui_info;

  24. #define LABEL_ID     0xFFFF   
复制代码
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

板凳
 
本帖最后由 辛昕 于 2016-1-11 10:52 编辑

现在剩下的其实就是那些 gui 的描述字符串了,对于这个,其实我觉得有一个很简单的研究方法,那就是看 protocol
这是 协议的组帧 和 解析 集中的模块,只要看它就能理解所有 描述字符串。

  1. 当前支持的描述符不多。主要是因所需功能还少,后续会统一起来,会慢慢多起来。
复制代码
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

4
 
我靠,妈的,写得辛辛苦苦,,没了.....
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

5
 
时间实在有限,就先说到这里。
@armink  大神你看着先,还有问题,我过后找时间 ,尽量第一时间补充上。

今时今日,这种服务态度必须有~~~
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

6
 
当前支持的描述符不多。主要是因所需功能还少,后续会统一起来,会慢慢多起来。

协议的基本格式如下:
采用字符串描述,以 逗号 划分字段,以 分号 为一个数据帧 的 结束符;
其中,如果 问号“?” 单独为一个字段,多半表示 menu向gui获取数据,因为这是一个固定的 menu为主,gui为从的结构,所以不会出现gui向menu获取数据的情形(当然,未来如果出现非常必要的原因,我会打破这个固定结构)
而 第一个字段 通常为一个或者几个以 下划线连接 的 单词,它通常是表明 这个数据帧 是干什么的;
总而言之,这套协议的设计思想 模仿的是 AT 或者 GPS-M183

// set screen: “Screen,3;”
// get screen: "Screen,?;"

Screen命令。
后面跟的字段数值 是 屏id,对menu而言,它表示的是要求gui显示 该id的画面;对gui而言,它表示向menu上传当前所处的画面的id

// set text: "Text,1,3,Air;"
// get text: "Text,1,4,?;"

Text命令,内容与上类似,只是 对于Text,它是一个控件,控件需要一个 屏id和 一个控件id 来共同定位。

// get button: “Button,1,4;”

Button命令,同样类似,只是,它不存在menu主动查询,只需要gui上传;
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

7
 
妈的,又没了,还好我复制了
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

8
 
妈的,真的要疯了,,,代码功能里怎么注释一多就给吞了......
此帖出自编程基础论坛

点评

稍安勿躁,我们查查是怎么回事  详情 回复 发表于 2016-1-11 15:06
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

9184

帖子

6

TA的资源

管理员

9
 
辛昕 发表于 2016-1-11 11:06
妈的,真的要疯了,,,代码功能里怎么注释一多就给吞了......

稍安勿躁,我们查查是怎么回事
此帖出自编程基础论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复

350

帖子

0

TA的资源

纯净的硅(中级)

10
 
本菜鸟也做过GUi的产品,GUI就本人而言,所有的菜单都是一个页面,所有的内容都是控件。
此帖出自编程基础论坛
 
 
 

回复

127

帖子

0

TA的资源

一粒金砂(高级)

11
 
不拘一格,厉害,但是别一口一个妈的
此帖出自编程基础论坛
 
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

12
 
  xinxin 能不能多用点图来 替代文字呢,  思维导图什么的。。。

表示 密集恐惧症。。。。
此帖出自编程基础论坛
 
个人签名
分享铸就美好未来。。。




 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表