Allgemeine Konfiguration


⚠️ Achtung: Dieses Dokument beschreibt, wie man die API des SDKs verwendet, um Scan-Geräte zu bedienen, und bietet Beispielcode in C. Beachten Sie, dass die API synchron arbeitet und den Hauptthread blockieren kann.

⚠️ Achtung: Vor der Verwendung der API müssen Sie das Gerät selbst verbinden und Nachrichtenbenachrichtigungen registrieren, um Nachrichten vom Gerät zu empfangen. Detaillierte Schritte finden Sie unter Nachrichtenbenachrichtigung.

1. Konfiguration abrufen

1.1 Befehl schreiben

Um die allgemeine Konfiguration des Scan-Geräts abzurufen, müssen Sie die folgenden Bluetooth-Dienst- und Charakteristik-UUIDs für die write without response-Operation verwenden:

Bluetooth UUID
Dienst 0x0000ff0000001000800000805f9b34fb
Charakteristik 0x0000ff0400001000800000805f9b34fb

Verwenden Sie den folgenden Befehl, um die Daten der Schreibcharakteristik abzurufen:

const char* result = inateck_scanner_cmd_get_settings();

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

{
    "status": 0,
    "data": [0, 1, 2, 3],
}

Wenn der Aufruf fehlschlägt, wird result zurückgegeben:

{
    "status": 1,
    "data": [],
}

1.2 Nachrichtenanalyse

Nachdem das Gerät geantwortet hat, können Sie die Daten mit der folgenden Methode analysieren:

const char* result = inateck_scanner_cmd_get_settings_result(device_type, data, data_length);

Eingabeparameter:


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

{
    "status": 0,
    "data": [
        {
            "name": "volume",
            "flag": 1001,
            "value": 0,
        },
        {
            "name": "vibration",
            "flag": 1002,
            "value": 0,
        },
    ]
}

Wenn der Aufruf fehlschlägt, wird result zurückgegeben:

{
    "status": 1,
    "data": [],
}

Das Ergebnis enthält:

1.3 Beispielcode

#include <stdio.h>
#include <string.h>
#include <stdbool.h>

int main() {
    const char* result = inateck_scanner_cmd_get_settings();
    if (result) {
        // result ist im JSON-Format, Daten analysieren
        const unsigned char* data = (const unsigned char*)result;
        int data_length = strlen(result);

        // Daten über Bluetooth senden write without response
        // Hier wird angenommen, dass es eine Funktion send_data_via_bluetooth gibt, die Daten sendet
        send_data_via_bluetooth(data, data_length);

        // Auf Antwort des Geräts warten, Daten empfangen
        // Hier wird angenommen, dass es eine Funktion receive_data_via_bluetooth gibt, die Daten empfängt
        receive_data_via_bluetooth();

        const unsigned char* data = get_received_data();
        int data_length = get_received_data_length();
        int device_type = 12;

        // Daten analysieren
        const char* result = inateck_scanner_cmd_get_settings_result(device_type, data, data_length);;
        if (result) {
            printf("Get settings success\n");
        }
    }
    return 0;
}

2. Konfiguration

2.1 Befehl schreiben

Um die allgemeine Konfiguration des Scan-Geräts zu konfigurieren, müssen Sie die folgenden Bluetooth-Dienst- und Charakteristik-UUIDs für die write without response-Operation verwenden:

Bluetooth UUID
Dienst 0x0000ff0000001000800000805f9b34fb
Charakteristik 0x0000ff0400001000800000805f9b34fb

Sie müssen zuerst die Konfiguration lesen, um die abgerufenen Daten read_data zu erhalten, und dann den folgenden Befehl verwenden, um die Daten der Schreibcharakteristik abzurufen:

const char* result = inateck_scanner_cmd_set_settings(device_type, read_data, read_data_length, cmd);

Eingabeparameter:

Zum Beispiel, wenn Sie jetzt das Volumen des Geräts BCST-21 auf 0 und die Vibration auf 0 setzen möchten, ist cmd [{"flag":1001,"value":0},{"flag":1002,"value":0}] und device_type ist 12.

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

{
    "status": 0,
    "data": [0, 1, 2, 3],
}

Wenn der Aufruf fehlschlägt, wird result zurückgegeben:

{
    "status": 1,
    "data": [],
}

2.2 Nachrichtenanalyse

Nachdem das Gerät geantwortet hat, können Sie die Daten mit der folgenden Methode analysieren:

int result = inateck_scanner_cmd_check_result(data, data_length);

Das Ergebnis ist vom Typ int. Wenn der Aufruf erfolgreich ist, wird result 0 zurückgegeben. Wenn der Aufruf fehlschlägt, wird result 1 zurückgegeben.

Nach erfolgreicher Konfiguration wird empfohlen, die Konfigurationsinformationen erneut abzurufen, um sicherzustellen, dass die Konfiguration wirksam ist.

3. Beispielcode

#include <stdio.h>
#include <string.h>
#include <stdbool.h>

int main() {
    const char* result = inateck_scanner_cmd_get_settings();
    if (result) {
        // result ist im JSON-Format, Daten analysieren
        const unsigned char* data = (const unsigned char*)result;
        int data_length = strlen(result);

        // Daten über Bluetooth senden write without response
        // Hier wird angenommen, dass es eine Funktion send_data_via_bluetooth gibt, die Daten sendet
        send_data_via_bluetooth(data, data_length);

        // Auf Antwort des Geräts warten, Daten empfangen
        // Hier wird angenommen, dass es eine Funktion receive_data_via_bluetooth gibt, die Daten empfängt
        receive_data_via_bluetooth();

        const unsigned char* data = get_received_data();
        int data_length = get_received_data_length();
        int device_type = 12;

        // Daten analysieren
        const char* result = inateck_scanner_cmd_get_settings_result(device_type, data, data_length);;
        if (result) {
            printf("Get settings success\n");

            // Daten analysieren
            const unsigned char* read_data = ...;
            int read_data_length = ...;

            // Volumen auf 0 setzen, Vibration auf 0 setzen
            const char* cmd = "[{\"flag\":1001,\"value\":0},{\"flag\":1002,\"value\":0}]";
            const char* result = inateck_scanner_cmd_set_settings(device_type, read_data, read_data_length, cmd);

            if (result) {
                // result ist im JSON-Format, Daten analysieren
                const unsigned char* data = (const unsigned char*)result;
                int data_length = strlen(result);

                // Daten über Bluetooth senden write without response
                // Hier wird angenommen, dass es eine Funktion send_data_via_bluetooth gibt, die Daten sendet
                send_data_via_bluetooth(data, data_length);

                // Auf Antwort des Geräts warten, Daten empfangen
                // Hier wird angenommen, dass es eine Funktion receive_data_via_bluetooth gibt, die Daten empfängt
                receive_data_via_bluetooth();

                const unsigned char* data = get_received_data();
                int data_length = get_received_data_length();

                // Daten analysieren
                int result = inateck_scanner_cmd_check_result(data, data_length);
                if (result == 0) {
                    printf("Set settings success\n");
                } else {
                    printf("Set settings failed\n");
                }
            }
        }
    }
    return 0;
}