2016-06-02 19 views
0

Ich habe eine Android-App, die Daten an BLE113-Modul sendet. Ich erhalte Daten über ein GATT-Merkmal, dessen Typ "Benutzer" ist. Ich bin in der Lage, die Daten als Zeichenfolgen zu erhalten. Wenn ich ganze Zahlen sende, sage 24, empfange ich es als String '24'. Kann ich diese String-Nummer trotzdem in Integer-Typ umwandeln?BGScript: Umwandlung von String in Ganzzahl

Dies ist von gatt.xml.

Dies ist der Ausschnitt von Android-Seite, um einen ganzzahligen Wert '1' zu schreiben.

String str = "1"; 
    try { 
     byte[] value = str.getBytes("UTF-8"); 
     chara.setValue(value); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } 
. 
. 
. 
boolean status = mBluetoothGatt.writeCharacteristic(chara); 

Ich möchte Daten als Integer '1' selbst in BGScript-Seite erhalten. Mache ich etwas falsch mit der Konvertierung? Bitte helfen Sie mir, Ganzzahlen zu senden.

Hat es irgendwas mit dem Typ 'USER' des GATT-Merkmals zu tun? Wenn ich es in 'hex' oder 'utf-8' ändere, wird das Problem gelöst?

+0

Könnten Sie bitte etwas Beispielcode hinzufügen, den Sie verwenden? Sowohl beim Senden als auch beim Empfangen? Sie könnten nur einige einfache Probleme bei der Typkonvertierung feststellen. – SJoshi

+0

Hallo, Ich habe die Frage mit Schnipsel bearbeitet. Bitte sehen Sie –

Antwort

0

In der gatt.xml Datei, um den Wert Typ von „Benutzer“ auf „hex“ und es einige feste Länge geben, etwa so:

<characteristic uuid="xxxxx-xxxx-xxxxx-xxxx-xxxxxxxxxx" id="configuration"> 
    <description>Config Register</description> 
    <properties read="true" write="true"/> 
    <value type="hex">00</value> 
</characteristic> 

In Ihrem Android-Projekt, chara Annahme des Typs ist BluetoothGattCharacteristic, schreiben Sie auf die Charakteristik mit so etwas wie:

int newConfigRegValue = 1; 
chara.setValue(newConfigRegValue, BluetoothGattCharacteristic.FORMAT_UINT8, 0); 
boolean status = mBluetoothGatt.writeCharacteristic(chara); 

Dann in Ihrem BGScript (ich nehme an, die Sie sonst nicht sagten), in dem attributes_value() Ereignisse, können Sie diese ganze Zahl wie speichern:

dim configRegister 
... 
event attributes_value(connection, reason, handle, offset, value_len, value_data) 
... 
    if handle = configuration then 
     configRegister = value_data(0:value_len)  
    end if 
... 
end 

-Ted

-BEGIN Bearbeiten-

Sie können das auch tun.

Die Charakteristik in Ihrem gatt.xml werden wie folgt aussehen:.

<characteristic uuid="xxxxx-xxxx-xxxxx-xxxx-xxxxxxxxxx" id="configuration"> 
    <description>Config Register</description> 
    <properties read="true" write="true"/> 
    <value type="user">0</value> 
</characteristic> 

Dann in Ihrer BGScript Datei, müssen Sie einen Wert liefern, wenn die Leseanforderung kommt diese in der attributes_user_read_request() Veranstaltung erfolgt . Wie so:

event attributes_user_read_request(connection, handle, offset, maxsize) 
    if handle = configuration then 
     # Do something to retreive the configRegister value 
     # If you need to read from external EEPROM or something, save the 'connection' value so you can use it in the callback event 
     call attributes_user_read_response(connection, 0, 1, configRegister(0:1)) 
    end if 
end 
+0

Dank Ted. Das hilft mir. Darf ich wissen, dass ich das mit dem Typ "user" machen kann? –

+0

Ich habe meine Antwort aktualisiert. Siehe den bearbeiteten Abschnitt. – Ted