AT命令和设备厂商的CAPI有什么关系?

What's the relationship between AT commands and device vendor's C API?

我现在正在做一个嵌入式系统项目。在我看来,AT命令可以发送到一个设备来获取4G信息,拨号等等。另一方面,我们也可以通过调用4G供应商提供的APIs来做到这一点。

我的问题是它们之间有什么关系? API 是 AT 命令的包装器吗?

不知道你为什么起这个标题说AT命令和Linux-CAPI.

有关系

关于AT命令,大家可以看看这个wiki article了解一下。

每个模块都有一个指定的AT命令集。一般情况下,模块厂家只提供AT命令集和return值是多少。

Is API a wrapper of AT command?

如果你可以使用制造商提供的API,那么是的,它是AT命令处理程序的包装器。

My question is what's the relationship between them? Is the API a wrapper for the AT commands?

如果没有设备的任何详细信息就无法确定,但可能任何 C API 因为它包装了 AT 命令集,或者通过与直接通过内部串行接口或通过使用 AT 命令的设备驱动程序与其通信的设备。

然而,至少可以想象,尽管不太可能,4G 设备提供了 C API 使用的替代控制路径(在这种情况下肯定是通过驱动程序)。

虽然我不太确定问题的重点是什么。如果您正在用 C 语言对设备及其 4G 组件进行编程,并且制造商提供了 C API,那么请使用它!如果您使用其他语言编程,那么至少考虑使用 C API,您应该能够以某种语言特定的方式从大多数其他语言访问它。如果没有 令人信服的 拒绝已经提供给您的 API 的理由,您不应该花费自己的精力。

TL;DR

供应商的 API(不仅是 C,还有 C++,Java 或 Python 取决于供应商和调制解调器型号)既可以是 AT 命令的包装器,也可以是更广泛的包装器,更强大的一组 API 是用户可以移植复杂的应用程序。

这取决于供应商和型号。


不同供应商生产的调制解调器丛林

不可能定义"rule"关于API由蜂窝模块(不一定是4G模块)提供的一般"rule"。

首先,每个供应商通常都实施标准 AT 命令(Hayes 命令和扩展标准命令 用于蜂窝设备)。同样,每个供应商都有自己的 用户应用程序区域 实现,客户可以在其中存储自己的应用程序以控制调制解调器的功能并根据自己的应用程序要求使用它们。

当调制解调器需要连接(和驱动)由外部主机时,AT 命令仍然是要使用的接口。当使用用户应用程序区域时,通常通常提供更广泛的API集合。它们可能包括:

  • 一个导出 OS 功能子集的库(线程管理、事件、信号量、互斥量、SW 计时器、FS 访问等)
  • 提供管理设备特定硬件(GPIO、SPI、I2C、ADC、DAC 等)功能的库
  • 一个库,提供一种编程方式来执行与连接相关的操作,这些操作通常通过 AT 命令执行(注册状态检查、PIN 码插入、PDP 上下文激活、SMS 管理、TCP/UDP/TLS 套接字)

后者通常访问 基础层,涉及调制解调器提供的所有功能。通常这是通过调制解调器的串行接口发送的 AT 命令调用的同一层。


正在发送 AT 命令...来自供应商的 API?

当然,上面提到的库经常只提供通常与 AT 命令集一起导出的功能的 子集 ,以便 "fill the gap",通常还会导出另一组 API:

  • 一组函数,允许模拟发送到调制解调器串行端口的 AT 命令。发送它们并解析它们在虚拟内部 serial/USB 接口中发送的响应 允许用户在内部 用户应用程序区域 中移植他们之前的应用程序 运行 在外部主机处理器上(具有明显的 BOM 优势).

例如,请查看Telit Appzone here and here。这是我回答的灵感,因为我非常了解它。