Gerätebenachrichtigungsantwort


⚠️ Achtung: Dieses Dokument beschreibt, wie man die API des SDKs verwendet, um Scanvorgänge durchzuführen, und bietet Beispielcode in C. Beachten Sie, dass die API synchron arbeitet und den Hauptthread blockieren kann.

⚠️ Achtung: Vor der Verwendung der API muss das Gerät erfolgreich verbunden sein.

1. Gerätebenachrichtigungsantwort

Die zu verwendenden Bluetooth-Dienste und -Merkmale UUIDs sind wie folgt:

Bluetooth UUID
Service 0x0000ff0000001000800000805f9b34fb
Characteristic 0x0000ff0100001000800000805f9b34fb

Nach erfolgreicher Verbindung mit dem Gerät müssen Sie die Benachrichtigungen registrieren, um Nachrichten vom Gerät zu empfangen. Sie können die Benachrichtigungen mit der folgenden Methode analysieren:

const char* result = inateck_scanner_cmd_notify_data_result(data, data_length);

Das Ergebnis wird im JSON-Format zurückgegeben. Wenn der Aufruf erfolgreich ist, gibt result Folgendes zurück:

{
    "notify_type": 0,
    "notify_status": 1,
    "notify_data": [0, 1, 2, 3],
}

Wenn der Aufruf fehlschlägt, gibt result Folgendes zurück:

{
    "notify_type": 0,
    "notify_status": 0,
    "notify_data": [],
}

Erklärung der Rückgabewerte:

2. Beispielcode

#include <stdio.h>
#include <string.h>
#include "inateck_scanner_cmd.h"

#define MAX_DATA_LENGTH 1024

unsigned char total_data[MAX_DATA_LENGTH];
int total_data_length = 0;

void notify_data_result(const unsigned char* data, int data_length) {
    // Fügen Sie die empfangenen Daten an das Ende von total_data an
    if (total_data_length + data_length < MAX_DATA_LENGTH) {
        memcpy(total_data + total_data_length, data, data_length);
        total_data_length += data_length;
    } else {
        printf("Datenlänge überschreitet die Puffergröße\n");
        return;
    }

    const char* result = inateck_scanner_cmd_notify_data_result(total_data, total_data_length);
    if (result) {
        // Analysieren Sie das JSON-Ergebnis, bitte passen Sie die Analyse an Ihre Bedürfnisse an
        int notify_status = ...; // Analysieren Sie notify_status
        const unsigned char* notify_data = ...; // Analysieren Sie notify_data
        int notify_data_length = ...; // Analysieren Sie die Länge von notify_data
        int notify_type = ...; // Analysieren Sie notify_type

        if (notify_status == 0) {
            // Daten unvollständig, weitere Daten empfangen
            // Weisen Sie notify_data total_data zu, warten Sie auf den Empfang neuer Daten und fügen Sie diese zu den vorhandenen total_data hinzu, und rufen Sie dann erneut die Methode inateck_scanner_cmd_notify_data_result zur Analyse auf
            memcpy(total_data, notify_data, notify_data_length); // Verwenden Sie die Länge von notify_data
            total_data_length = notify_data_length;
            printf("Daten unvollständig, weitere Daten empfangen\n");
        } else if (notify_status == 1) {
            // Daten vollständig empfangen, können analysiert werden
            if (notify_type == 0) {
                // Scanergebnis
                printf("Scanergebnis: %s\n", notify_data);
            } else if (notify_type == 1) {
                // Antwort auf den Einstellungsbefehl
                printf("Benachrichtigungsergebnis: %s\n", notify_data);
            }
            // Daten löschen
            total_data_length = 0;
        } else {
            // Fehler beim Empfang der Daten
            printf("Benachrichtigungsfehler\n");
            // Daten löschen
            total_data_length = 0;
        }

        printf("Benachrichtigungsergebnis: %s\n", result);
    }
}

int main() {
    // Bluetooth-Gerät verbinden
    // Benachrichtigungen registrieren
    // Benachrichtigungen empfangen
    return 0;
}