与支持实时的应用程序进行通信
重要
这是 Azure Sphere(旧版)文档。 Azure Sphere(旧版)将于 2027 年 9 月 27 日停用,用户此时必须迁移到 Azure Sphere(集成)。 使用位于 TOC 上方的版本选择器查看 Azure Sphere(集成)文档。
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 函数来打开套接字。 此函数调用返回的文件描述符用于在套接字上执行 send/recv 操作。
发送数据
可以通过调用 POSIX send() 函数向 RTApp 发送消息。 最大消息大小为 1 KB。
接收数据
可以通过调用 POSIX recv() 函数从 RTApp 接收消息。
关闭套接字
若要关闭套接字,请调用 POSIX close() 函数。