前言
GUI界面最主要功能是显示信息和人机交互。显示信息主要功能实时显示设备的状态,比如设备电压、温度,GPS状态,4G状态和实时视频等状态。而人机交互主要是完成设备功能设置,参数的获取和设置,拨打电话等功能。针对海思安防这块来说,主要是在linux架构下利用linux framebuffer来完成的,这块海思只提供hifb,可以通过ioctl操作,而对于控件主要是由自己来完成,不同厂家各自都有一套自己的API,各不相同。本人也一直待在这个海思安防圈子里,有些做的稍微好看顺眼些,其他厂家没有美而言,都是仅仅完成人机交互功能而言。
功能需求
1.属性配置化,标签位置,颜色等属性可配置;
2.国际化,一个配置,多个不同语言文件;
3.人性化交互,适配遥控器、鼠标和触屏;
4.模块间消息易传递;
5.控件多样化;
6.跨平台化;
方案实现
1.使用xml配置每个界面的属性;属性文字显示都放在一个文件内config.ini,主要是完成国际化,一个文件,针对不同语音,只修改该文件为响应的语言,而不改上层的解析。
2.而针对多种人机交互,主要是主机完成响应的设备按键的解析,找到对应区域的焦点,完成响应功能的响应。
3.消息传递主要是通过socket,完成不同模块间消息的传递和获取,最好可以多进程消息分发和获取,完成状态的实时更新。
4.尽可能使用c语言实现,完成基本封装,可以跨平台调用。
人总要有梦想,一点一点实现,借鉴开源,学习开源 QT,minigui,AWTK,guilite等,但是这些针对嵌入式优化不够,小而精才是正道!欢迎交流,为海思安防贡献一份力量。
来源:CSDN
作者:Ronbin.L
链接:https://blog.csdn.net/xclshwd/article/details/103830322