Sub BLETemp_Ev_DataAvailable (ServiceId As String, Characteristics As Map)
Dim bc As ByteConverter
Dim datastring As String = ""
Dim dataarray() As Byte
Dim temperatura As Double
Dim s As String
Dim st1 As String
Dim t As Int
'Dim line As String
'Dim t2 As TuplaTemp
For Each k As String In Characteristics.Keys
'B4XPages.MainPage.MyLog(Main.LIVELLO_DEBUG_BLE,k)
Next
If (k = BLEBatteryCharacteristic) Then
datastring = bc.HexFromBytes(Characteristics.Get(BLEBatteryCharacteristic))
dataarray = bc.HexToBytes(datastring)
t = CnvUnsignedByteToInt(dataarray(0))
B4XPages.MainPage.ShowBatterytemp(t)
B4XPages.MainPage.MyLog(Main.LIVELLO_DEBUG_BLE,"Batteria Temp: " & t)
B4XPages.MainPage.MyLog(Main.LIVELLO_DEBUG_BLE,"BLETemp Set Notify Service=" & BLETempService & " Characteristic=" & BLETempCharacteristic)
BLETemp.SetIndication(BLETempService,BLETempCharacteristic,True)
Else
CounterTemp = 0
datastring = bc.HexFromBytes(Characteristics.Get(BLETempCharacteristic))
B4XPages.MainPage.MyLog(Main.LIVELLO_DEBUG_BLE,"Data available " & datastring)
dataarray = bc.HexToBytes(datastring)
'aggiungo controllo sulla lunghezza dei byte ricevuti perchè a volte crash e sembra che ne arrivino meno
If dataarray.Length >= 3 Then
PrimaMisuraTemp = False
temperatura = (CnvUnsignedByteToInt(dataarray(2)) *256 + CnvUnsignedByteToInt(dataarray(1))) / 100
temperatura = Round2(temperatura,1)
B4XPages.MainPage.MyLog(Main.LIVELLO_DEBUG_BLE,"BLETemp ID =" & BLETempCharacteristic & "Data=" & datastring & " Temperatura = " & temperatura)
t = temperatura*10
st1 = t
s = temperatura
'DataTempToWrite = "T," & (DateTime.Now/1000) & "," & st1
DataTempToWrite.tipo = "T"
DataTempToWrite.ts = DateTime.Now/1000
DataTempToWrite.m1 = t
DataTempToWrite.inviata = False
NewTempMeasure = True
B4XPages.MainPage.MyLog(Main.LIVELLO_DEBUG_BLE,"utente: " & B4XPages.MainPage.UtenteAttuale )
B4XPages.MainPage.TemperatureList(B4XPages.MainPage.UtenteAttuale-1).Add(DataTempToWrite)
B4XPages.MainPage.MyLog(Main.LIVELLO_DEBUG_BLE,"TEMP ADD " & DataTempToWrite.ts)
B4XPages.MainPage.UltimaMisuraDisponibile(B4XPages.MainPage.UtenteAttuale-1) = DataTempToWrite.ts*1000
'aggiungo qui il redraw del grafico se sono su pagina grafici
If B4XPages.GetManager.GetTopPage.id = "pgrafici" Then
CallSub(B4XPages.MainPage.pag_grafici,"reloadGrafici")
End If
CallSub3(B4XPages.MainPage, "TmpDataAvailable", s, getOra)
'aggiungo qui il codice per mandare le misure realtime
If B4XPages.MainPage.VideocallInCorso = True Then
B4XPages.MainPage.SendMisRealTime(DataTempToWrite)
End If
End If
End If
End Sub