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:
device_type
ist der Gerätetyp, der Wertebereich ist in der Gerätetyp-Liste angegeben.data
sind die vom Gerät zurückgegebenen Daten.data_length
ist die Datenlänge.
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:
info
ist eine Liste der Konfigurationsinformationen, die den Namen, den Bezeichner und den Wert der Konfigurationselemente enthält.name
ist der Name des Konfigurationselements.flag
ist der Bezeichner des Konfigurationselements.value
ist der Wert des Konfigurationselements.
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:
device_type
ist der Gerätetyp, der Wertebereich ist in der Gerätetyp-Liste angegeben.read_data
sind die abgerufenen Konfigurationsdaten.read_data_length
ist die Länge der abgerufenen Konfigurationsdaten.cmd
ist ein Array von Konfigurationsbefehlen, das die Bezeichner und Werte der Konfigurationselemente enthält, der Wertebereich ist in der Konfigurationsliste angegeben. Jedes Konfigurationselement ist einJSON
-Objekt, das die folgenden Felder enthält:flag
ist der Bezeichner jedes Konfigurationselements und ein ganzzahliger Wert. Zum Beispiel ist derflag
fürvolume
1001
.value
ist der Wert des Konfigurationselements. Zum Beispiel ist dervalue
fürvolume
0
, was bedeutet, dass der Ton ausgeschaltet ist.
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;
}