Geräte scannen


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

1. SDK initialisieren

Bevor Sie die Funktionen des SDKs verwenden können, müssen Sie das SDK initialisieren. Methode:

const char* result = inateck_scanner_ble_init();

Das Ergebnis wird im JSON-Format zurückgegeben. Bei erfolgreichem Aufruf gibt result zurück:

{
    "status": 0,
    "error": ""
}

Bei einem Fehler gibt result zurück:

{
    "status": 1,
    "error": "Fehlermeldung"
}

2. Sicherstellen, dass Bluetooth aktiviert ist

Bevor Sie Geräte scannen, müssen Sie sicherstellen, dass Bluetooth aktiviert ist. Wenn Bluetooth nicht aktiviert ist, können keine Geräte gescannt werden. Diese Operation ist synchron und kann den Hauptthread blockieren. Methode:

const char* result = inateck_scanner_ble_wait_available();

Das Ergebnis wird im JSON-Format zurückgegeben. Bei erfolgreichem Aufruf gibt result zurück:

{
    "status": 0,
    "error": ""
}

Bei einem Fehler gibt result zurück:

{
    "status": 1,
    "error": "Fehlermeldung"
}

3. Scan-Callback registrieren

Registrieren Sie einen Scan-Callback, der aufgerufen wird, wenn ein Gerät gefunden wird. Methode:

void callback(const char* device_info_json) {
    // device_info_json enthält die Informationen des gefundenen Geräts im folgenden Format:
    // {
    //     "id": "Geräte-ID",
    //     "device_name": "Gerätename",
    //     "is_connected": "ist verbunden",
    // }
}

const char* result = inateck_scanner_ble_set_discover_callback(callback);

Das Ergebnis wird im JSON-Format zurückgegeben. Bei erfolgreichem Aufruf gibt result zurück:

{
    "status": 0,
    "error": ""
}

Bei einem Fehler gibt result zurück:

{
    "status": 1,
    "error": "Fehlermeldung"
}

Nach erfolgreicher Registrierung des Scan-Callbacks wird die Callback-Funktion aufgerufen, wenn ein Gerät gefunden wird. Die Geräteinformationen sind im JSON-Format und enthalten folgende Parameter:

4. Geräte scannen starten

Starten Sie den Scanvorgang. Wenn ein Gerät gefunden wird, wird der registrierte Scan-Callback aufgerufen. Bereits verbundene HID-Geräte werden ebenfalls gescannt.

⚠️ Stellen Sie sicher, dass der Scan-Callback registriert ist.

⚠️ Unter Windows müssen Sie aufgrund von Systembeschränkungen das HID-Gerät zuerst über die Bluetooth-Geräteseite von Windows verbinden und dann über diese API scannen, um das Gerät zu finden.

Methode:

const char* result = inateck_scanner_ble_start_discover();

Das Ergebnis wird im JSON-Format zurückgegeben. Bei erfolgreichem Aufruf gibt result zurück:

{
    "status": 0,
    "error": ""
}

Bei einem Fehler gibt result zurück:

{
    "status": 1,
    "error": "Fehlermeldung"
}

5. Geräte scannen stoppen

Stoppen Sie den Scanvorgang. Nach dem Stoppen wird der registrierte Scan-Callback nicht mehr aufgerufen. Methode:

const char* result = inateck_scanner_ble_stop_discover();

Das Ergebnis wird im JSON-Format zurückgegeben. Bei erfolgreichem Aufruf gibt result zurück:

{
    "status": 0,
    "error": ""
}

Bei einem Fehler gibt result zurück:

{
    "status": 1,
    "error": "Fehlermeldung"
}

6. Geräteliste abrufen

Abrufen der Liste der gescannten Geräte. Methode:

const char* result = inateck_scanner_ble_get_device_list();

Das Ergebnis wird im JSON-Format zurückgegeben. Bei erfolgreichem Aufruf gibt result zurück:

{
    "status": 0,
    "error": "",
    "device_list": [
        {
            "id": "Geräte-ID",
            "device_name": "Gerätename",
            "is_connected": "ist verbunden",
        },
        {
            "id": "Geräte-ID",
            "device_name": "Gerätename",
            "is_connected": "ist verbunden",
        }
    ]
}

Bei einem Fehler gibt result zurück:

{
    "status": 1,
    "error": "Fehlermeldung",
    "device_list": []
}

7. Beispielcode

Hier ist ein vollständiger Beispielcode:

#include <stdio.h>
#include <inateck_scanner_ble.h>

void callback(const char* device_info_json) {
    printf("device_info_json: %s\n", device_info_json);
}

int main() {
    const char* result = inateck_scanner_ble_init();
    printf("inateck_scanner_ble_init: %s\n", result);

    result = inateck_scanner_ble_wait_available();
    printf("inateck_scanner_ble_wait_available: %s\n", result);

    result = inateck_scanner_ble_set_discover_callback(callback);
    printf("inateck_scanner_ble_set_discover_callback: %s\n", result);

    result = inateck_scanner_ble_start_discover();
    printf("inateck_scanner_ble_start_discover: %s\n", result);

    // Warten auf das Scannen von Geräten
    sleep(10);

    result = inateck_scanner_ble_stop_discover();
    printf("inateck_scanner_ble_stop_discover: %s\n", result);

    result = inateck_scanner_ble_get_device_list();
    printf("inateck_scanner_ble_get_device_list: %s\n", result);

    return 0;
}

8. Beispielcode in anderen Sprachen