环球新资讯:【产品应用】用AWTK和AWPLC快速开发嵌入式应用程序(4)-自定义功能块(上)
背景
(资料图片仅供参考)
AWTK 全称 Toolkit AnyWhere,是 ZLG 开发的开源 GUI 引擎,旨在为嵌入式系统、WEB、各种小程序、手机和 PC 打造的通用 GUI 引擎,为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎。
简介
在前一篇文章中,我们说过,AWPLC 的重要特色之一就是高度可扩展,而且会内置 ZLG 多年在嵌入式系统开发中积累的功能块,包括各种算法、协议和实用功能,这将大大简化嵌入式软件的开发。
那怎么去开发自定义的功能块呢?本文以 ZTIMER 为例介绍一下开发自定义功能块的方法。ZTIMER 是一个带计数功能的定时器,在前一篇文章中,我们用它实现了一个走马灯的演示,其使用方法如下:
2.如何保证可扩展性
AWPLC功能块的接口
要让 AWPLC 支持扩展各种自定义的功能块,首要条件条件是定义好功能块的接口。
2.功能块的虚函数
在功能块的虚函数表中,还定义了一些描述性的常量,让对象具有一点反射的能力,方便在运行时查询它的一些状态。顺便说一下,在定义接口的虚函数时,通常不会有创建函数,因为创建之前对象之前,是拿不到这个虚表对象的。但也不是绝对的,有时为了方便 clone,也可能提供一个 clone 函数或者 create 函数。
任何接口都要定义析构函数(destroy),在对象需要销毁时,框架可以以统一的方式销毁它。
AWPLC功能块的工厂
前面我们说过,可扩展性除了针对接口编程外,离不开工厂模式的支持。功能块的工厂其任务当然是创建功能块了,所以提供了一个创建功能块的函数。参数 type 指定功能块的类型,函数返回对应类型的功能块:
有了这个创建函数,确实把创建任务与功能块的实现分开了。但是请想一下,如果每次增加新的功能块,都要修改这个创建函数,而这个函数又属于框架的一部分,框架是不是还是依赖于具体实现了呢?为了解决这个问题,我们需要提供一种注册机制来实现依赖倒置,让功能块的实现者主动将创建函数注册进来:
这种机制非常好用,真正满足了 SOLID 原则中的开放封闭原则(OCP):扩展新的功能无需修改框架代码。在 ZLG 开源 GUI 引擎中,也大量使用了这种带注册功能的工厂模式,有兴趣的朋友可以去看看 AWTK 的代码。
ZTIMER
前面我们说过,可扩展性除了针对接口编程外,离不开工厂模式的支持。功能块的工厂其任务当然是创建功能块了,所以提供了一个创建功能块的函数。参数 type 指定功能块的类型,函数返回对应类型的功能块:
在 C 语言中,一般用结构来模拟类,把基类作为结构的第一个成员来模拟继承。这里必须让 aw_plc_fb_t 作为 aw_plc_fb_ztimer_t 的第一个成员。
这里的 API 注释采用了 AWTK 中定义的格式,但是对 annotation 做了一点扩展,增加了 3 个新的取值:
fb 表示这是一个功能块;
in 表示这是一个输入参数;
out 表示这是一个输出参数。
2.ZTIMER的实现
3.注册ZTIMER
坦白的讲,本文只是介绍了实现自定义功能块的关键步骤,实际工作要麻烦很多。如果手工去做这些工作,开发一个功能块还觉得好玩,而开发几十个甚至几百个功能块,人不会变疯就会变傻。下一篇文章会我们介绍一下,如何用代码生成器来完成这些单调的工作,让开发自定义功能块成为一项快乐的工作。
AWPLC 目前还处于开发阶段的早期,写这个系列文章的目的,除了用来验证目前所做的工作外,还希望得到大家的指点和反馈。如果您有任何疑问和建议,请在评论区留言。
标签:
环球新资讯:【产品应用】用AWTK和AWPLC快速开发嵌入式应用程序(4)-自定义功能块(上)
2023-06-03
【环球快播报】连续20个交易日收盘价低于1元 深交所终止宜华健康股票上市
2023-06-03
生植_关于生植介绍_焦点信息
2023-06-03
今日最新!括号的作用教学视频(括号的作用)
2023-06-03
水牢令牌哪里来的(水牢)
2023-06-02
5月中国电商物流指数升至2022年以来新高 供需均保持稳定增长
2023-06-02
冰漂浮在水上冰融化后水面如何变化(边长为0 1M的正方体木块漂浮在水面上)
2023-06-02
什么的扁担填合适的词_什么的扁担
2023-06-02
多个低碳智能新品亮相第二十三届中国国际石油石化技术装备展览会
2023-06-02
雍正王朝:为何雍正要把孙嘉诚派到西北?是为了杀年羹尧做铺垫?-天天时快讯
2023-06-02
【环球快播报】连续20个交易日收盘价低于1元 深交所终止宜华健康股票上市
生植_关于生植介绍_焦点信息
今日最新!括号的作用教学视频(括号的作用)
水牢令牌哪里来的(水牢)
5月中国电商物流指数升至2022年以来新高 供需均保持稳定增长
冰漂浮在水上冰融化后水面如何变化(边长为0 1M的正方体木块漂浮在水面上)
什么的扁担填合适的词_什么的扁担
多个低碳智能新品亮相第二十三届中国国际石油石化技术装备展览会
雍正王朝:为何雍正要把孙嘉诚派到西北?是为了杀年羹尧做铺垫?-天天时快讯
动态焦点:斗破苍穹异火探索_斗破苍穹3寻找异火
祖孙七代接力传承非遗稀有剧种:让大平调传唱下去|世界快讯
资讯推荐:消费股持续走强,消费50ETF涨2.5%
世界聚焦:金瑞矿业:2023 年公司计划生产碳酸锶 1.85万吨
压力与压强的关系及单位_压力与压强的关系
全球快看:《甘肃省中医药振兴发展重大工程实施方案》出台
【全球新要闻】书香润童心,阅读有温度!全民阅读走进郑州市儿童福利院
窗外作文开头结尾优美段落
省人大常委会听取和审议省政府关于“三个一批”项目建设活动开展情况报告及省市人大联动开展专题调研视频动员会召开史全新在鹤壁分会场收听收看
俄罗斯又有一地遭袭!俄方称来袭乌克兰无人机已被击落_全球热消息
奥迪马来西亚在Setia Alam开设新的4S中心|全球速看料
极路由HC5761+HC6341_关于极路由HC5761+HC6341概略
快讯:共享打印机连接不上怎么回事(已经共享打印机了,为什么不能打印)
今日热文:夏收攻坚战 | “三夏”大忙中的党员身影
重庆水务集团股份有限公司 2022年年度权益分派实施公告
北京今年高考首次实行考点和考场两次安检
德班世乒赛刚结束,刘国梁作出决定,恭喜马龙,樊振东迎来挑战!
山城区绿色低碳产业园区规划建设启动
不愧是“果中贵族”!清甜爽口,意犹未尽|微资讯
国家助学金多久发放一次 国家助学金发放时间 每年按几个月发放
- 全球滚动:上海环球港美食街(上海环球港美食)
- 世界速递!极度分裂小说版_关于极度分裂小说版概略
- 环球今日报丨海尔智家(06690.HK)6月1日耗资1901.91万港元回购85万股
- 全球要闻:迎驾贡酒回应大额投资扩建产能:提升公司原酒酿造陈贮能力
- 哈三联股东户数下降1.06%,户均持股6.26万元
- 环球讯息:华尔泰:截至2023年5月31日,公司股东人数为25632户
- bios设置u盘启动顺序_bois设置u盘启动
- 四川暴雨连夜紧急转移4774人
- 首届“蓉城红领巾小史官”正式出炉!快来看看有没有你认识的小伙伴-每日消息
- 武汉江夏永旺最新消息_江夏永旺最新消息|全球新资讯
- 嘉定区推出“四网共融”互联网企业党建工作新模式|环球新消息
- 上午采摘,中午上架,6小时吃上爽口的盒马村西瓜
- 智慧生活征文500字_智慧生活征文_世界观速讯
- 环球观热点:德云社的四国割据,究竟谁能一统江山?
- 每日快报!外交部:大搞胁迫的不是中国而是美国
- 极品飞车13破解版(极品飞车13修改器)更新
- 电光科技:正在推进无线通讯、智能供电、智能排水、智能煤流、智能通风、智能皮带系统项目等子系统业务-环球看热讯
- 港股异动 | 中国黄金国际涨超4% 隔夜黄金期货小幅收涨 机构指黄金保持上涨趋势
- 每日热门:娄底市首例不动产登记“带押过户”业务成功办理
- 消费板块反攻,消费ETF(159928)上涨近1%,连续3日资金净流入 天天热资讯
- 热点!消息称小鹏高管离职后加入蔚来
- 当前关注:本月中旬推出,微软 Teams 共享屏幕新增缩放导航图标
- 费斯托 | 过程自动化助你拿捏生产制造
- 全球焦点!广州新添一外贸滚装航线 聚力打造汽车国际贸易中心
- 滚动:日本最大啤酒商:我们要重返中国
- 北京市首评“门前三包”示范街-全球关注
- 借款人担保人诉状怎样写_天天短讯
- 美国将向乌克兰提供新一批军事援助 天天亮点
- 巅峰聚会!林青霞请作家莫言到自家豪宅吃饺子喝茅台,现场照曝光
- 天天视点!贯的组词(关于贯的组词的基本详情介绍)
- 正海磁材:联合北科大共建新金属材料国家重点实验室正海研发基地_环球头条
- 当前热门:阳间巡逻人有声小说_阳间巡逻人简介
- 【环球快播报】大连重工:拟6034.95万元挂牌转让大重宾馆资产
- 全球热资讯!利生消防设备_深圳利民消防器材公司
- ST摩登:未在法定期限内披露2022年年报 遭证监会立案 当前热文
- 先进数通:英伟达为公司合作伙伴,目前公司与英伟达合作规模较小,对公司业务不构成重大影响
- 世界头条:恒大财富:本月可用兑付资金不足,无法按原标准兑付
- 慢速撞击、酒后驾驶是什么感觉?浦东交警带领新司机360度体验交通安全
- 午评:三大指数低开低走 景点及旅游板块领涨_世界实时
- cba2021-2022第二阶段赛程表辽宁队(cba2021-2022第二阶段赛程表)
- 护航中高考!乐山市教育系统13条措施来了 当前最新
- 焦点简讯:农业农村部:应对持续阴雨天气 及时抓好小麦抢收烘干晾晒
- 农发行甘肃分行调研华池县南梁长征文化公园项目
- 猪场电闸跳闸 高温致上千头猪死亡 到底是怎么回事?
- 虹口区北外滩重要功能性项目结构封顶 2024年底前将实现总体开业
- Cox Automotive 表示四分之一的购车者准备在线销售_世界微资讯
- 实时:打通服务企业“最后一公里” 这个街道发布《优化营商环境白皮书》
- 董兴村(关于董兴村的简介)_每日热议
- 叮咚买菜美股跌7.78%-世界快消息
- 贫组词组_贫组词_世界观焦点