thingML的学习——什么是thingML

news2024/12/26 23:14:46

今天开始建模的学习,thingML是建模的一种工具 ,也可以理解为一种建模语言,有自己的语法和语义。

ThingML 支持的多种平台和通信协议,如UART、I2C、MQTT、WebSocket、REST、ROS、Bluetooth、BLE和Zwave,通过插件机制, ThingML能够灵活地适应不同的通信需求,同时隐藏了部分通信协议的复杂性,提高了代码的可维护性和可重用性。

为什么要学习thingML?

ThingML最初用于嵌入式系统开发,但现在已经广泛应用于物联网、智能家居、医疗设备等领域。ThingML适用于分布式反应性系统,并且特别适合包含异构平台和通信通道的应用程序。与UML相比,ThingML可以被视为一种特定领域的建模语言,但它不是针对任何业务领域的,因此可用于各种应用程序。ThingML的目标是将MDE应用于软件生命周期的后期设计和实现阶段,以及支持维护和演化任务。该语言的用户群体包括广泛的软件开发者和架构师。

ThingML:一种面向目标平台的代码生成器设计与实现

 新版本的代码生成器是基于Java对象导向框架设计的,可以轻松地定制化以适应不同组织和项目的需求。该语言的关键结构包括事物和配置,其中事物代表软件组件,而配置描述它们之间的连接。事物可以定义属性、函数、消息、端口和状态机,并且可以通过端口发送和接收消息。最终,ThingML编译器将配置转换为目标语言的完全可操作的代码。

ThingML代码生成框架及其扩展点介绍

9041966651b240ab815ea5138950a201.png

该框架可以将ThingML模型转换成各种语言的完全可操作的代码。目前支持的语言包括C、C++、Java和JavaScript等。该框架由一组代码生成器组成,每个生成器负责编译特定子集的ThingML。这个模块化结构允许对一些扩展点进行自定义,而其他的则可以直接使用。在该框架中有10个不同的扩展点,分为两个组:用于生成“事物”的代码和用于生成配置(或应用程序)的代码。这些扩展点通过接口或抽象类的形式存在于代码生成框架中,并包含了一组方法来生成与给定元素相关的代码。在生成过程中,模型元素是只读的,但不同的扩展点可以通过共享上下文信息来进行协作。

ThingML编译器框架及其特点分析

ThingML框架中的几个重要组成部分,包括编译器、检查器和代码生成测试框架等。其中,

编译器是将ThingML模型转换成目标语言代码的核心模块;

检查器则提供了对输入模型进行语法检查和应用逻辑规则验证的功能;

而代码生成测试框架则是用于验证不同代码生成器的输出是否符合预期的一种工具。

这些组件都是基于Java实现的,并且具有可扩展性,可以方便地添加新的功能或支持新的平台和语言。此外,本章还提到了一些具体的例子,如Linux C和Arduino代码生成器之间的相似性和差异性,以及不同语言之间代码行数的分布情况。

通信协议与插件机制在物联网应用中的实现与优化

f31428723f9243f1a4802377fee4befa.png

ThingML代码生成框架的插件机制。通过插件机制,程序员可以解耦传输和消息格式,并提供更好的可重用性。

网络插件负责生成支持原始消息传输并管理网络范例逻辑的代码。此外,该章节还列出了不同协议的实验情况以及它们提出的要求。最后,该章节提到了一些与通信相关的复杂性可以通过隐藏在模型之外来解决,但需要将一部分复杂性暴露给ThingML代码以实现灵活的通信管理。

 

初学建模,如有不同见解请指正,望与君共勉!

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1687280.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

目标检测网络:YOLOv3 模型复现

目录 YOLOv3 网络架构 YOLOv3 检测流程 YOLOv3 网络搭建 YOLOv3 网络架构 论文原址:https://arxiv.org/pdf/1804.02767 Code:https://github.com/ultralytics/yolov3 YOLO官方模型总览:https://pjreddie.com/darknet/yolo/#google_vign…

K8S中YAML案例

目录 案例:自主式创建service并关联上面的pod 案例:部署redis 案例:部署myapp 案例:部署MySQL数据库 总结 1.K8S集群中访问流向 K8S集群外部:客户端——nodeIP:nodeport——通过target port——podIP…

LiteOS-A内核中的procfs文件系统分析

一、 procfs介绍 procfs是类UNIX操作系统中进程文件系统(process file system)的缩写,主要用于通过内核访问进程信息和系统信息,以及可以修改内核参数改变系统行为。需要注意的是,procfs文件系统是一个虚拟文件系统&a…

AI副业:3天涨粉10w+,这些人凭什么这么火? (附教程案例)

大家好,我是向阳 今天给大家分享一下免费的 AI 插画工具 & 某书图文涨粉项目 某书上有这么一类笔记:精美的插话 几句提供情绪价值的文案 这类笔记可以说几乎是发一篇爆一篇!获赞涨粉如喝水,并且评论区有不少人求图和求教程…

利用Axure模板快速设计,可视化大屏信息大屏,含近200例资源和各类部件

模板类别: **通用模板:**提供基础的布局和设计元素,适用于各种场景。 **行业特定模板:**如农业、医院、销售、能源、物流、政府机关等,针对不同行业提供专业模板。 **数据展示模板:**包括大数据驾驶舱、统…

正点原子LWIP学习笔记(一)lwIP入门

lwIP入门 一、lwIP简介(了解)二、lwIP结构框图(了解)三、如何学习lwIP(熟悉) 一、lwIP简介(了解) lwIP是一个小型开源的TCP/IP协议栈 阉割的TCP/IP协议 TCP/IP协议栈结构&#xff0…

什么是 UUID,uuid

文章目录 一、是什么二、为什么三、怎么用 标题:深入探讨UUID:全球唯一标识符的秘密 一、是什么 在当今数字化时代,唯一标识符(UUID)在计算机科学领域扮演着重要的角色。UUID是一种用于标识信息的唯一字符串&#xff0…

【数据结构】树、森林与二叉树的转换 |树的存储 |双亲表示法 |孩子表示法 |孩子兄弟表示法

📖专栏文章:数据结构学习笔记 🪪作者主页:格乐斯 前言 树的存储 双亲表示法孩子表示法孩子兄弟表示法 树、森林与二叉树的转换 树的存储 双亲表示法 首先给每个结点编号,再将这些结点的双亲结点的序号存储起来&a…

从零开始实现自己的串口调试助手(1) - ui界面搭建

UI 界面搭建 ui界面整体演示 ui对象拆分 更多的细节就不方便展开了,下面有提示完成ui设计的提示 在创建工程前 记得把编码改为utf-8 ui设计技巧: ctrl 鼠标左键实现拖动实现复制粘贴 groupBox : 带标题的文本框 栅格布局 -- 只有一个控件的时候会铺满…

C++使用范围for语句处理多维数组

循环访问二维数组时出现如下问题: error: invalid range expression of type int *; no viable begin function availablefor (auto col : row){^ ~~~ 1 error generated.问题复现 初始化数组 constexpr size_t rowCnt 3, colCnt 4; int ia[rowCnt][colCnt]; fo…

【网站项目】SpringBoot380百天公司财务管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

AD162A低功耗语音解码芯片,助眠耳机方案推荐—云信通讯

睡眠一直是很多人所追寻的目标,无论是因为工作压力过大,还是日常烦扰的思绪,一个好的睡眠质量对每个人来说都至关重要。为了解决这个问题,一些科技公司开发了高品质的助眠耳机,通过音乐和声音来帮助入睡,为…

618好物推荐,每一款都是心头好

618买什么?!是不是又要开始剁手了?!买贵不如买对,收下这份好物推荐,无论你是有购物需求还是观望中,无论是日常好物还是智能家电,无论你是追求平价还是实用,这一篇好物推荐…

eNSP-集线器(hub)连接局域网

一、拓扑结构搭建 二、主机配置 pc1、pc2、pc3 三、测试 Hub相当于大家共享一条线路(类似于电线搭电),线路上的所有的设备都会接收同样的信息。

【MySQL02】【 InnoDB 记录存储结构】

文章目录 一、前言二、InnoDB 行格式1. COMPACT 行格式1.1 记录的额外信息1.2 记录的真实数据1.3 综上 2. REDUNDANT 行格式2.1 字段长度偏移列表2.2 记录头信息 3. DYNAMIC 行格式和 COMPPESED 行格式 三、InnoDB 数据页结构1. File Header (文件头部)2. Page Header (页面头部…

搭建淘宝扭蛋机小程序:技术选型与最佳实践

随着移动互联网的快速发展,小程序作为一种轻量级应用,以其无需安装、即用即走的特点,受到了广大用户的喜爱。在电商领域,淘宝作为国内最大的电商平台之一,也积极拥抱小程序技术,为用户提供更加便捷、个性化…

纯CSS画浮动卡通蓝天白云草坪动画效果

文章目录 效果展示 背景效果实现效果展示HTML结构CSS样式 云效果实现效果展示HTML结构CSS样式 草效果实现单颗小草效果展示HTML结构CSS样式 组合小草效果展示HTML结构CSS样式 完整代码 在网页设计中,添加动态元素如浮动云朵可以为用户带来更加生动和自然的体验。虽然…

BeanDefinition作用

BeanDefinition接口 BeanDefinition 描述一个 Bean 实例,这个实例有哪些属性值、构造函数以及一些其他信息,就是描述Bean实例的信息。 BeanDefinition是一个接口,允许BeanFactoryPostProcessor 内省和修改属性值和其他 Bean 元数据。 点击了…

【simple-admin】simple-admin-core 首次服务启动 如何配置mysql数据库表 | 如何docker启动core

一、下载启动S-A 1、下载源码 https://github.com/suyuan32/simple-admin-core.git git clone https://github.com/suyuan32/simple-admin-core.git2、修改etc下yaml配置 需要对RPC和API 分别2个文件夹下的etc下的yaml进行修改 替换成我们的数据库 3、初始化数据库 核心代…

芯课堂 | UI Creator 物理键盘移植指南

LVGL提供输入设备的种类一共有5种,分别是:touchpad(触摸板)、mouse(鼠标)、keypad(键盘)、encoder(编码器)、button(外部按键)。而基于…