Hello everyone, i just started playing around with the Bluetooth BLE library both (written by erel and the Bluetooth BLE extended version). So far i can connect and read the different services that the specific device i'm using can work with.
I'm not too familiar with this type of communication, i was wondering if someone who has the expertise with BLE can point me in the right direction. I need to read all the records stored in this device, by reading on this post http://stackoverflow.com/questions/24990061/android-ble-notifications-for-glucose I can see that i need to write to the device to tell it what records i want to read, in this case i need to send two bytes
The BLE extended library has a
property, but i need to send bytes instead of a string.
I apologize if i'm not asking the right question, but i need to figure out how to read all the records stored in this device. Below is my code so far.
As you guys can see according to the device's specs:
0x10808 is the Glucose service and 0x2A18 is the glucose measurement characteristic, but i need to first write the Record Access Control Point at 0x2A52 to let the device know what records i want to read, in this case is the two bytes mentioned above 0x01 for report store records and 0x01 for All records.
Does any one have any suggestions or advice on how to go about this, please let me know.
Thanks guys!
Walter
I'm not too familiar with this type of communication, i was wondering if someone who has the expertise with BLE can point me in the right direction. I need to read all the records stored in this device, by reading on this post http://stackoverflow.com/questions/24990061/android-ble-notifications-for-glucose I can see that i need to write to the device to tell it what records i want to read, in this case i need to send two bytes
B4X:
byte[] data = new byte[2];
data[0] = 0x01; // Report Stored records
data[1] = 0x01; // All records
B4X:
Characteristic.SetStringValue(String)
I apologize if i'm not asking the right question, but i need to figure out how to read all the records stored in this device. Below is my code so far.
B4X:
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim manager As BleManager
Private cs As List
Dim timer1 As Timer
Dim map1 As Map
Dim c As BleCharacteristic
Dim random1 As RandomAccessFile
Dim conv As ByteConverter
End Sub
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
'Activity.LoadLayout("Layout1")
If FirstTime Then
manager.Initialize("ble")
Log("Supported: " & manager.BleSupported)
End If
timer1.Initialize("timer1", 1000)
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub Activity_Click
Log("Searching for devices")
manager.Scan(10000, Null)
End Sub
Sub ble_DeviceFound (Name As String, MacAddress As String)
Log(Name & ", " & MacAddress)
If Name <> Null Then
If Name = "Beurer GL50EVO" Then
Log("connecting......")
manager.Connect(MacAddress, True)
End If
End If
End Sub
Sub BLE_Connected (Services As Map)
cs.Initialize
Log("services map size: " & Services.Size)
map1 = Services
''' For Each s As BleService In Services.Values
''' Log($"** Reading service: ${s.Uuid} **"$)
''' For Each key As String In s.GetCharacteristics.Keys
''' Log(key)
''' Dim c1 As BleCharacteristic = s.GetCharacteristics.Get(key)
''' Log($"Reading char: ${key}"$)
''' manager.ReadCharacteristic(c1)
''' Next
''' Next
Dim s As BleService = Services.Get("00001808-0000-1000-8000-00805f9b34fb")'Services.GetValueAt(0)
c = s.GetCharacteristics.Get("00002a18-0000-1000-8000-00805f9b34fb")
manager.ReadCharacteristic(c)
manager.SetCharacteristicNotification(c, True)
manager.WriteCharacteristic(c)
End Sub
Sub BLE_CharacteristicRead (Success As Boolean, Characteristic As BleCharacteristic)
Log("CR: " & Success & ": " & Characteristic.Uuid)
Dim buffer() As Byte
buffer = Characteristic.GetValue
Dim buffer_int(buffer.Length) As Int
Log("converted: " & conv.StringFromBytes(buffer, "UTF8"))
random1.Initialize3(buffer,False)
If Success Then
For i=0 To buffer.length - 1
buffer_int(i)=random1.ReadUnsignedByte(i)
Log(buffer_int(i))
Next
End If
End Sub
Sub BLE_CharacteristicChanged (Characteristic As BleCharacteristic)
Log("Change: " & Characteristic.GetStringValue(0)) 'Get one byte of data from HM-10
End Sub
Sub ble_Disconnected
Log("Disconnected")
End Sub
Sub ble_DiscoveryFinished
Log("DiscoveryFinished")
End Sub
Sub timer1_Tick
Log("ticking...")
manager.ReadCharacteristic(c)
'timer1.Enabled = False
End Sub
As you guys can see according to the device's specs:
0x10808 is the Glucose service and 0x2A18 is the glucose measurement characteristic, but i need to first write the Record Access Control Point at 0x2A52 to let the device know what records i want to read, in this case is the two bytes mentioned above 0x01 for report store records and 0x01 for All records.
Does any one have any suggestions or advice on how to go about this, please let me know.
Thanks guys!
Walter