Kommunizieren mit einer Echtzeitanwendung

Azure Sphere unterstützt kernübergreifende Kommunikation zwischen allgemeinen Anwendungen und Echtzeitanwendungen (RTApp). Allgemeine Anwendungen können die applibs-Application_Connect-Funktion verwenden, um Daten bei der Kommunikation mit einer RTApp zu senden und zu empfangen. Application_Connect ruft einen Dateideskriptor in einen Socket ab, der für die Kommunikation mit der RTApp verwendet wird. Während der Dateideskriptor geöffnet ist, können Sie Vorgänge für ihn ausführen, z. B. senden/recv.

Das IntercoreComms-Beispiel veranschaulicht, wie eine allgemeine Anwendung für die Kommunikation mit einer RTApp auf einem MT3620 verwendet wird. Kommunikation mit einer allgemeinen Anwendung beschreibt Programmierüberlegungen für die RTApp.

Anforderungen

Allgemeine Anwendungen, die appübergreifende Kommunikation verwenden, müssen die entsprechenden Headerdateien enthalten und dem Anwendungsmanifest Anwendungseinstellungen hinzufügen.

Headerdateien

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

App-Manifesteinstellungen

Für die Kommunikation mit einer RTApp müssen beide Anwendungen die Funktion AllowedApplicationConnections in das Anwendungsmanifest einschließen:

  • Die allgemeine Anwendung muss die Komponenten-ID der echtzeitfähigen Anwendung in der AllowedApplicationConnections-Funktion auflisten.
  • Die Echtzeitanwendung muss die Komponenten-ID der allgemeinen Anwendung in der AllowedApplicationConnections-Funktion auflisten.
"AllowedApplicationConnections": [ "005180BC-402F-4CB3-A662-72937DBCDE47" ]

Partneranwendungen

Wenn Sie eine Anwendung auf das Azure Sphere-Gerät laden, löschen die Azure Sphere-Bereitstellungstools standardmäßig alle vorhandenen Anwendungen. Um dies zu verhindern, wenn Sie ein Anwendungspaar entwickeln, das miteinander kommuniziert, müssen Sie die Anwendungen als Partner markieren. Wenn Sie eine der Anwendungen bereitstellen, wird ihr Partner nicht gelöscht. Weitere Informationen finden Sie unter Markieren von Anwendungen als Partner .

Öffnen des Sockets

Bevor Sie mit einer RTApp kommunizieren, müssen Sie einen Socket öffnen, indem Sie die funktion Application_Connect aufrufen. Der von diesem Funktionsaufruf zurückgegebene Dateideskriptor wird verwendet, um Sende-/Recv-Vorgänge für den Socket auszuführen.

Senden von Daten

Sie können eine Nachricht an eine RTApp senden, indem Sie die POSIX-Funktion send() aufrufen. Die maximale Nachrichtengröße beträgt 1 KB.

Empfangen von Daten

Sie können eine Nachricht von einer RTApp empfangen, indem Sie die POSIX-Funktion recv() aufrufen.

Schließen des Sockets

Rufen Sie zum Schließen des Sockets die POSIX-Funktion close() auf.