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_typeist der Gerätetyp, der Wertebereich ist in der Gerätetyp-Liste angegeben.datasind die vom Gerät zurückgegebenen Daten.data_lengthist 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:
infoist eine Liste der Konfigurationsinformationen, die den Namen, den Bezeichner und den Wert der Konfigurationselemente enthält.nameist der Name des Konfigurationselements.flagist der Bezeichner des Konfigurationselements.valueist 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_typeist der Gerätetyp, der Wertebereich ist in der Gerätetyp-Liste angegeben.read_datasind die abgerufenen Konfigurationsdaten.read_data_lengthist die Länge der abgerufenen Konfigurationsdaten.cmdist 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:flagist der Bezeichner jedes Konfigurationselements und ein ganzzahliger Wert. Zum Beispiel ist derflagfürvolume1001.valueist der Wert des Konfigurationselements. Zum Beispiel ist dervaluefürvolume0, 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;
}