如果您使用 Qt 进行应用程序开发并且使用状态机,那么您很可能正在使用 Qt 状态机框架。因此,您将使用普通 C++ 或 SCXML 定义状态机。另一种方法是从状态机图中生成 C++ 代码。本文比较了这些方法,同时考虑了功能、适用性和性能。 我敢打赌,作为一名软件开发人员,您已经实现了大量或多或少复杂的 switch-case 语句。这至少对我来说是正确的,而且大部分这种切换案例编码基本上只是实现不同的状态机。如果您手头只有所选的编程语言,那么这是开始编程状态机的最简单方法。虽然开始很容易,但随着状态机复杂性的增加,此类代码的可维护性越来越低。最后,您将确信您不想继续以这种方式手动实现状态
几十年来,嵌入式软件工程师一直在争论他们应该使用 C 还是 C++。大多数情况下,微控制器制造商提供的软件是用 C 语言提供的,事实上,根据 2019 年嵌入式市场调查,56% 的嵌入式软件是用 C 语言编写的。然而,C++ 逐渐流行起来,大约 23% 的新嵌入式软件项目是用 C++ 编写的。随着 C 接近第 50 个 周年纪念日,可能是时候开始从 C 过渡到 C++。以下是开发者应考虑进行更改的三个原因。 原因 1:改进架构实施 C 编程语言确实通过函数指针为开发人员提供了封装和一些基本的多态能力。但是,C 确实是一种过程语言,它不提供诸如继承或组合之类的机制而无需付出额外的努力。这会
MQTT-Reactive 是源自 LiamBindle 的 MQTT-C 库的 MQTT v3.1.1 客户端。 MQTT-Reactive 的目标是提供一个用 C 编写的可移植和非阻塞的 MQTT 客户端,以便在反应式嵌入式系统中使用。首先,本文解释了什么是反应式系统。然后,它描述了如何为这种系统设计合适的软件结构。最后,本文展示了如何通过使用状态机和事件驱动范式在反应式系统中使用 MQTT-Reactive 库。为此,本文以真实的物联网设备为例,通过状态机、交互和结构等 UML 图解释了其软件结构和基于状态的行为。本文还提供了使用 C 语言实现 IoT 设备的 MQTT-Reactive
整个行业都围绕验证和验证实践发展起来,这些实践受到 IEC 61508、ISO 26262、IEC 62304、MISRA C 和 CWE 等功能安全、安保和编码标准的支持。当然,并不是每个人都必须遵循这些标准所提倡的正式流程和方法,特别是如果他们的软件不需要满足这些标准的严格要求。但这些标准支持最佳实践,因为经验表明它们代表了实现高质量、可靠和强大软件的最有效方法。 遵循这些标准的最佳实践开发技术有助于确保首先不会将错误引入代码中,从而减少可能会拖慢上市时间和增加成本的大量调试活动的需要。当然,并非所有开发人员都有足够的时间和预算来开发航空航天、汽车或医疗设备行业的应用程序。然而,他们部署
由于状态机模型广泛用于嵌入式系统,本文探讨了在测试驱动开发 (TDD) 方法下开发状态机 (SM) 软件的几种策略。本出版物首先解释了基本的状态机概念和 TDD 技术。最后,介绍了使用TDD方法开发C语言状态机软件的简单有序的方法。 SM 模型由状态、转换和动作组成。虽然状态是系统或元素的条件,但转换是从一种状态到另一种状态的路径,通常由将前驱(源)状态与后续(目标)状态连接起来的相关事件发起。元素执行的实际行为以动作表示。 在 UML 状态机中,动作可能与进入状态、退出状态、转换本身或所谓的“内部转换”或“反应”相关联。所有状态机的形式(包括 UML 状态机)都普遍假设状态机在开始处理下
在各个领域,功能安全领域对开发人员提出了新的要求。功能安全的代码必须包括防御性代码,以抵御可能由各种原因导致的意外事件。例如,由于编码错误或宇宙射线事件导致的内存损坏可能导致根据代码逻辑“不可能”执行的代码路径。高级语言,尤其是 C 和 C++,包括数量惊人的特性,这些特性的行为并未由代码所遵循的语言规范规定。这种未定义的行为可能导致意外和潜在的灾难性结果,这在功能安全的应用程序中是不可接受的。由于这些原因,标准要求应用防御性编码,代码可测试,可以整理足够的代码覆盖率,并且应用程序代码可追溯到需求,以确保系统完全且唯一地实现它们。 代码还必须实现高水平的代码覆盖率,在某些领域(尤其是汽车领域
我总是对我不知道的事情感到惊讶。嗯,根据定义,我不知道我不知道什么,所以我想更准确的说法是,我经常对发现的东西感到惊讶,这些东西揭示了我的知识差距。 让我们尝试一个简单的单词联想测试。今天早些时候,如果你说“精工”,我会说“手表”,如果你接着说“爱普生”,我会回答“打印机”。这不是我的错,今天早上我是一个更年轻、更愚蠢的人——我现在消息灵通多了。 我们今天所了解和喜爱的精工爱普生公司是一家日本电子公司,也是世界上最大的计算机打印机和信息和成像相关设备制造商之一(实际上,“爱普生”是“电子打印机之子”的缩写)。 精工爱普生的起源可以追溯到 1942 年成立的一家小型钟表公司。 多年来,随
由于它们的尺寸和尺寸都很小,对于不断增长的可穿戴物联网市场来说,几乎没有印刷电路板标准。在它们出现之前,我们将不得不依靠我们对板级开发和制造经验的了解,并仔细考虑它们如何应用于那里出现的独特挑战。我们应该特别关注的三个方面是:板面材料、射频/微波设计和射频传输线。 PCB 材料 PCB 层由层压板组成,可以由 FR4(纤维增强环氧树脂)、聚酰亚胺或 Rogers 材料或层压板制成。不同层之间的绝缘称为pre-preg。 可穿戴设备需要高度的可靠性,当 PCB 设计人员面临选择使用 FR4(最具成本效益的 PCB 制造材料)或更先进、更昂贵的材料时,这成为一个问题。 如果可穿戴 PCB
在过去的几周里,我一直在与 Makerarm.com 上的人们谈论一种令人难以置信的机械臂,叫做……嗯,Makerarm。他们一直把这件事放在心上,但我很高兴能够告诉你,Makerarm Kickstarter 项目在我写这些话的时候刚刚启动。 这个小美人是一个完整的个人制造系统,装在一个安装在桌面上的机械臂中。它具有适用于无数应用的可互换打印头,例如 3D 打印、绘图、铣削、激光雕刻、电子组装等等。 那么这个小骗子能做什么呢?嗯,几乎所有的东西,真的。让我们从 3D 打印开始。我们都见过传统的低成本 3D 打印机。这些通常以立方体形式呈现,这显着限制了打印头可用的运动范围,从而限制了
在过去的几年里,商业硬件设计和业余爱好电子产品之间的区别已经变得模糊。有了开源硬件、价格实惠且功能强大的 CAD 工具的最新版本,以及在线提供的大量知识库,大部分可以在大型公司实验室中完成的工作也可以在家里的空余房间中完成。这促进了硬件启动的重新出现。它还揭示了一些仍然需要解决的问题。 白天,我在一家制造公司工作;在周末,我设计和制造小型电子设备。我的设计项目通常基于微控制器,其中许多以定制的 Arduino 兼容硬件为核心。基于预先存在的开源设计,这些并不是非常困难的项目。不过,这并不是说没有任何问题。它不在大会中。我已经处理好了;要么手工制作简单的电路板,要么在我的日常工作中通过工厂发送
最近推出的 USB 3.1 规范带有一个新的连接器,最终解决了原始 USB 规范的最大问题——机械方向的要求。以前的所有 USB 连接器和电缆都是键控的,因此它们只能以一种方式插入;此外,电缆不可逆(另请参阅介绍 USB Type-C — 用于 21 世纪系统的 USB ). 好吧,也许这不是“最大的问题”,但它肯定是个麻烦事。根据我的经验,将 USB 电缆成功插入计算机或手机背面至少需要尝试三次。如下图所示,新的 USB 3.1 Type-C 连接器终于为 USB 世界带来了机械对称性。 (来源:杜安·本森) USB 3.1 是一项重大升级,包括额外的供电能力、更高的数据传输速度以及
在谈到可穿戴技术的未来时,Ralph Osterhout(Osterhout 设计集团的首席执行官)发表了一个清晰而相关的观察:“将人们与环境保持距离的笨重设备是行不通的。如果你在谈论一些让你看起来像带电线的锤头鲨的东西?那就不要。这是行不通的。” ( 来源 ) 这清楚地表明了可穿戴技术的未来创新进程。很明显,要取得成功,可穿戴电子产品必须体积小,同时保持性能。 为了减少占用空间,从而减少整个电路板空间,每一代微控制器都在迁移到更小的工艺节点。与此同时,它们也在不断发展,以执行更复杂、更强大的操作。随着操作变得更加复杂,增加高速缓存的需求变得迫在眉睫。不幸的是,随着每个新工艺节点的增加,增加
当我为 Control Data(实际上是一个子公司)工作时,每个原理图都有一个简单的标识号,按升序排列。机械图纸和印刷电路板也是如此。尽管我受雇于文档部门,但我必须承认,我不记得他们是如何一起创建我们正在开发的小型计算机的。 在那些日子里,一切都是手工生成的——草图被勾画出来并交给绘图部门,他们会将其转换到牛皮纸(也是描图纸,但对于年轻读者来说,这两个概念可能和复写纸一样陌生)经常使用标准符号使用模板实现均匀性。专业绘图员将使用点和胶带布置 PCB,机械工程师将在绘图台上创建包装。办公室内的沟通是通过备忘录、报告、会议,当然还有个人互动。我写了一篇关于我对事情的回忆的博客“它是如何:PC
我过去常常盯着电视屏幕看星际迷航 (原始系列)在 1960 年代后期。由于该节目发生在 2260 年代,因此很容易接受展出的未来派技术,例如科学官员 Spock 和 Leonard Horatio “Bones” McCoy 博士使用的三目仪。 tricorder 是一种多功能手持设备,用于扫描事物、分析事物和记录数据。我不记得有多少次 Spock 将他的三录仪指向某事并用它来确定最令人惊奇的、有时是不可能的事实。例如,在这个视频中,他设法用它来衡量一个文明的文化变化速度(嘿,当时这一切似乎都有意义)。 关键是我们从来没有真正期望过像三录仪这样的设备在我们的有生之年出现(我父母那一代的人根
多年来,物联网 (IoT) 可以说是最热门的头条新闻之一。物联网技术的集合有望提高流程效率,赋予产品新的功能,并激发新的商业模式。因此,我最初对最近与一家知名科技公司的营销人员的谈话感到有些惊讶,他大声想知道是否现在不是淡化物联网的时候。一个有趣的想法肯定。 (来源:pixabay.com) 他的担忧是由显着的安全攻击引起的,其中包括一个针对 KrebsOnSecurity.com 的大型被黑设备僵尸网络。该公司报告说:“……有迹象表明,这次攻击是在僵尸网络的帮助下发起的,该僵尸网络奴役了大量被黑客入侵的所谓“物联网”(IoT)设备——路由器、IP 摄像机和数字视频暴露在互联网上并受弱密
是否有可能过于成功?好吧,如果您创建一个小批量销售的嵌入式系统,您可以在内部控制整个过程。但是,如果您的产品被证明广受欢迎,因此需要大批量生产,您可能最终会与合同制造商 (CM) 合作,而 CM 执行的任务之一就是将您的固件编程到您的产品的微控制器。 如果您正在使用 CM,那么您需要保护自己免遭 IP 盗窃和系统过度生产的一件事。据估计,全球约有 10% 的电子产品是假冒产品,而在这些仿冒品中,CM 的过度生产占了相当大的比例。 不同的人以不同的方式看待 IP(知识产权)。对于嵌入式系统,硬件设计是一种 IP 形式,固件是另一种形式。在某些情况下,克隆硬件可能相对容易,但是没有固件,硬件就
越来越多的生产过程数字化需要工业通信中越来越多的开放性、稳健性、确定性和灵活性。时间敏感网络 (TSN) 消除了在以太网应用中分离信息技术 (IT) 和运营技术 (OT) 网络的需要,为当今的工业自动化系统提供了一种同步和精确定时的方法。 为满足工业市场的需求,Microchip 推出了 SparX-5i,这是用于工业自动化网络的全新以太网交换机系列。在接受嵌入式采访时, Microchip 产品营销经理 Andy Ebert 强调了如何通过可靠、基于标准的实时通信来实现 TSN 的目标,以及这将如何成为以太网的未来。 “ 目前工厂内有独立的 IT 和 OT 网络。 TSN 允许组合这些网
实施蒸汽室冷却技术可以为特定应用带来回报,例如作为具有关键热管理问题的嵌入式系统。 使用嵌入式技术开发产品的工程师必须不断探索如何实现足够的温度管理。随着今天的产品变得越来越小、功能越来越强大,如果设备没有帮助其保持凉爽的内部功能,这些特性会增加设备过热的可能性。 蒸汽室冷却是一种越来越受到关注的可能性。蒸汽室具有扁平结构,有助于在小空间内均匀地传递热量。此外,它们含有一种流体,一旦足够热就会蒸发成气体。腔室还有小柱子,可以防止结构因外部大气压力而坍塌,并将流体引导到正确的位置。 蒸汽室和传统热管之间的一个热力学差异是蒸汽室在二维而不是一个维度上传递热量。工程师通常使用它们将热量从热源传
物联网设备制造商可以在许多设计和制造阶段应用环氧树脂满足特定的要求或需要。 物联网 (IoT) 市场正在蓬勃发展。这一成功促使工程师探索切实可行的解决方案,以改进成为当今物联网设备不可或缺的一部分的印刷电路板 (PCB)。 环氧树脂是一种在物联网产品的 PCB 制造过程中发挥各种功能的材料。以下是关于它在物联网制造中发挥的重要作用的更多信息。 调整以满足特定要求 制造商可以选择特种环氧树脂或改变特定的环氧树脂特性以满足特定的性能或制造需求。例如,添加剂可以使环氧树脂更硬或更厚,使其最适合作为保形涂层。以下是调整特定环氧树脂性能的其他一些方法。 电导率和热导率 使用银作为单组分或
环保 LED 可固化敷形 PCB 涂料在需要快速周转时间的用例,例如汽车、白色家电和工业控制。 LED 可固化敷形涂料在需要快速周转时间的用例中获得了关注,例如汽车、白色家电和工业控制产品。除了高固化速度外,LED 可固化的敷形涂料还对环境和化学元素具有很强的抵抗力。本文深入探讨了 LED 可固化敷形涂层作为 PCB 制造过程中的一种绿色方法。 显示 UV-LED 到汞蒸气的图像。 (来源:Nazdar Ink Technologies) 在深入了解细节之前,让我们先讨论一下传统 UV 固化与 LED 可固化敷形涂料的比较。 传统UV固化 为了更好地了解 LED 可固化敷形
嵌入式