与支持实时的应用程序通信
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 () 函数。