与支持实时的应用程序通信

Azure Sphere 支持高级应用程序和支持实时的应用程序之间的核心间通信, (RTApp) 。 高级应用程序可以使用 applibs Application_Connect 函数在与 RTApp 通信时发送和接收数据。 Application_Connect 检索用于与 RTApp 通信的套接字的文件描述符。 文件描述符处于打开状态时,可以对其执行操作,例如 send/recv。

IntercoreComms 示例演示如何使用高级应用程序在 MT3620 上与 RTApp 通信。 与高级应用程序通信 介绍了 RTApp 的编程注意事项。

要求

使用应用间通信的高级应用程序必须包含相应的头文件,并将应用程序设置添加到 应用程序清单

头文件

#include <sys/socket.h>
#include <applibs/application.h>

应用清单设置

若要与 RTApp 通信,这两个应用程序都需要在 应用程序清单中包含 AllowedApplicationConnections 功能:

  • 高级应用程序必须在 AllowedApplicationConnections 功能中列出支持实时的应用程序的组件 ID。
  • 支持实时的应用程序必须在 AllowedApplicationConnections 功能中列出高级应用程序的组件 ID。
"AllowedApplicationConnections": [ "005180BC-402F-4CB3-A662-72937DBCDE47" ]

合作伙伴应用程序

将应用程序加载到 Azure Sphere 设备时,Azure Sphere 部署工具默认会删除所有现有应用程序。 若要防止在开发一对相互通信的应用程序时发生这种情况,需要将应用程序标记为 合作伙伴。 部署其中一个应用程序时,不会删除其合作伙伴。 有关详细信息 ,请参阅将应用程序标记为合作伙伴

打开套接字

在与 RTApp 通信之前,必须通过调用 Application_Connect 函数打开套接字。 此函数调用返回的文件描述符用于对套接字执行发送/recv 操作。

发送数据

可以通过调用 POSIX send () 函数将消息发送到 RTApp。 最大消息大小为 1 KB。

接收数据

可以通过调用 POSIX recv () 函数从 RTApp 接收消息。

关闭套接字

若要关闭套接字,请调用 POSIX close () 函数。