用于物联网的 C 或 C++ 通用 API

物联网 标准 系统架构
2021-06-18 01:18:04

在拥有文档、一组编程接口的意义上,物联网的 C 或 C++ 中常见或常用的 API(或库)是什么?(例如 POSIX 用于操作系统,Qt 用于 GUI 等......)。

这个简短的页面激发了我的问题(我对为 IoT 开发静态源代码分析工具感兴趣)。我不仅要寻找法律标准,还要寻找常用的 API 或库 - 在 C 或 C++ 中,以及它们的现有文件 - 在各种工业领域。我对Web API不感兴趣(定义一些 HTTP 请求的约定)或只对没有任何 API 或库实现它们的网络协议感兴趣

(所以我对开发自己的物联网应用程序不感兴趣,但我想开发软件工程工具工作和分析源代码来帮助物联网软件的开发人员)

我什至可能对特定行业的物联网 API 或库感兴趣,例如医疗保健、物流、交通、智能电网、智能建筑等;只要它是 C 或 C++ API 或库。


我在一个从事静态源代码分析的研究小组,我们想开发分析 C 或 C++ 源代码的工具,以帮助物联网软件开发人员。

但是,我需要先找到一种获得资金的方式,然后再进行此工作。

我们建议开发一个专门的工具(最好是开源的,高于现有技术),供开发人员和工程师编写源代码(如果需要,使用 C、C++ 和 Ada...)针对物联网平台。该工具将集成到目标软件开发工具包中。该工具可以通过针对特定于这些软件框架的编码规则、不变量和良好实践分析和检查源代码的有效性来帮助物联网软件开发人员。主要目标是提高软件质量并加快上市时间。如果相关,该工具可以执行特定的源代码优化以提高软件性能和/或减少代码大小。


注意。这个IoT Eclipse网页列出了几个标准。如果值得为它们开发源代码分析器,我对实现它们的 API 和库(以及任何其他物联网事实上的领域特定标准)感兴趣。

4个回答

Basile,我认为我们在这里错过了一个很好的区别。

当您谈到物联网标准的 Posix 时,我认为您是在谈论包装协议的库。

作为一个从事电话和卫星通信协议栈实现)几十年的人,我可以说(正如你可能知道的那样),根据需要,这些协议已经被严格定义了。例如,Zigbee 由https://en.wikipedia.org/wiki/IEEE_802.15.4 管理

这些标准规定了要传输的消息并定义字节 0 表示这个,字节 1 到 4 表示那个,等等,以便不同制造商的设备可以相互通信(无论如何,这是理论;我可以告诉你一些恐怖故事;-)

正如我所说,对于任何给定的协议,可能会有大量的制造商。对于任何给定的制造商,可能有多个软件库,这是您的问题。

只要有多个 APIS 可用,你的任务就太困难了,这些 APIS 包装了每个协议。

可悲的是,只有当一家公司占据主导地位时,才会有类似 Posix 的 API。如果一个主要政府向其投入大量资金,这种可能性可能很小,但我看不到这种情况发生。唯一的另一个机会是我为开源社区所做的类似 Linux 的努力。


顺便说一句,我认为您没有说清楚您将不仅仅是另一个静态代码分析器,它不是用于通用代码,而是用于某些特定的 API。你确实这么说,有点,但不够明确,IMO。当你准确地定义它时,你就会知道你的项目到底是什么。如果你已经知道,你似乎没有强调它(但也许我读得不够好,在两次会议之间匆匆忙忙)。

POSIX API 的语法由编译器监管,您研究的任何 API 的语法也将如此。所以我猜你正在寻找潜在危险的代码,例如使用统一化的资源,不释放分配的资源等 - 对吗?

不过,这听起来是一个很棒的项目,我已经在这个问题上加注了星号。


在此处输入图片说明

各种网络协议的标准已经明确定义。听起来您希望找到的是实现物联网设备固有标准行为的 API。像 Light() 函数之类的东西,可以打开、关闭灯光或将它们调暗到它们亮度的一小部分;DoorSensor() 可以布防或撤防,或者可以注册门打开或关门事件的警报;之类的东西。但是,我不知道任何非特定于应用程序的 API 库。

如果有人有,你可能会在Domoticz 中找到一些东西它是一个用 C++ 编写的开源家庭自动化控制器。

作为快速反应,我不认为物联网有一个特殊类型的库,我会说物联网基本上是“新的嵌入式系统”,他们只是改名并添加了与云的连接。

所以回答我用于 C++ 编程的内容,我的参考页面是http://www.cplusplus.com/

基本上对于物联网,您将需要通信库,无论您使用什么协议(USB、TCP/IP、UDP、ZigBee 等)

此外,如果您有通信,那么您需要security/encryption

其余的将取决于您控制或测量的硬件部分。您将需要此类硬件库(API/固件)

当然我在这里遗漏了很多东西......让我们看看其他人的答案

嵌入式,外加安全通信,外加配置(设备管理)外加 OTA 更新。这是一个很大的软件包,也是一种新型的开发平台。

有多家提供商提供云解决方案,他们通常拥有自己的客户端 API 和选定的端点操作系统。

据我所知,各种无线协议并没有真正规定任何特定的软件堆栈,因此您的选择需要由大局驱动,而不是客户端 API。一个决定性因素可能是开源对于您的应用程序中的堆栈是否重要。