Ho visto grosso modo il codice, è molto articolato non è possibile capirci qualcosa con solo questa parte. Non riesco ad aiutarti.
Comunque per spostare un evento su una classe diversa o un Activity questi sono i comandi
B4X:
' mCallBack è il chiamante - Activity, classe o servizio
' il nome della sub chiamata deve contenere sempre _ (underscore) nel nome
If SubExists(mCallBack,"Evento_NewData") Then CallSub(mCallBack,"Evento_NewData") ' Evento senza parametri
If SubExists(mCallBack,"Evento_NewData") Then CallSub2(mCallBack,"Evento_NewData",Buffer) ' Un parametro
If SubExists(mCallBack,"Evento_NewData") Then CallSub3(mCallBack,"Evento_NewData",Buffer, String2) ' Due parametri
Provo così come hai scritto, la classe che ho postato è in un modulo di codice, x as connectonref.
Activity A usa x, x.initialize è in Activity A.
Quando premo un bottone passo a Activity B che deve utilizzare x, per farlo anche in Activity B faccio x.initialize, l'evento di ricezione dati si genera però quando torno in Activity A
Risolto con un po di modifiche ora funziona, anche se non ho capito perchè ad una classe dichiarata in un modulo non ci si può fare riferimento da diverse activity perchè questa rimane sempre della prima activity da dove viene inizializzata.
Ogni activity ora inizializza la classe connection
Come si fa a stabilire se la chiave è in On?
Con il comando ATIGN risulta sempre On perché l'adattatore è alimentato anche senza chiave.
Devo lanciare un comando e aspettare che risponda NO DATA oppure c'è un altro modo?
oggi ho fatto altre prove questo è il codice di AStream_NewData
B4X:
public Sub AStream_NewData (Buffer() As Byte)
Functions.Write_Log("Ricezione dati in AStream_NewData Buffer",False,False)
'Buffer contenete i dati
BufferData = BufferData & BytesToString(Buffer,0,Buffer.Length,BlueToothSettings.ELMSelectedCharSet)
'se il Buffer contiene il terminatore > la stringa è completa e la passo al convertitore
If BufferData.Contains(BlueToothSettings.StopSendDataChar) = True Then
Functions.Write_Log("Trovato carattere terminatore: Invio Buffer",False,False)
'tempo di risposta ECU
ECUResponse_Time
PIDs.Buffer_Receiver(BufferData)
'svuoto il buffer
BufferData = ""
End If
End Sub
ho notato che non sempre mi restituisce tutto il buffer, nel senso che magari arriva prima il carattere terminatore ">" con qualche dato e poi tutto il resto per qui i dati restituiti non sono corretti, come faccio a sapere quando il buffer è stato letto tutto?
Hello, I'm referring to the old thread, I tried the example posted in obd2 bluetooth that reads the car parameters from the obd, the data it reads are wrong, can you tell me why?
Using Viecar bluetooth module utf8 character set.
If I test the adapter it is correct, but the data are all wrong and always different with each request.
Recommended adapter brands: Kiwi 3, Viecar, V-Gate, Carista, LELink, Veepeak.
If you buy one of the cheap china OBD2 ELM327 adapters from ebay / amazon, then make sure it's not marked as v.2.1 Throttle Reset App
Recommended adapter brands: Kiwi 3, Viecar, V-Gate, Carista, LELink, Veepeak.
If you buy one of the cheap china OBD2 ELM327 adapters from ebay / amazon, then make sure it's not marked as v.2.1 Throttle Reset App
ho notato che non sempre mi restituisce tutto il buffer, nel senso che magari arriva prima il carattere terminatore ">" con qualche dato e poi tutto il resto per qui i dati restituiti non sono corretti, come faccio a sapere quando il buffer è stato letto tutto?
Gli headers servono solo per le risposte da centraline diverse nello stesso momento?
Serve abilitarli oppure no?
Da quello che ho capito quando si inoltra una richiesta PID si può avere una risposta nello stesso momento di più centraline per lo stesso PID e servono gli headers per capire quelli sono le centraline che hanno risposto, è corretto?
Che casino....??
Gli headers servono solo per le risposte da centraline diverse nello stesso momento?
Serve abilitarli oppure no?
Da quello che ho capito quando si inoltra una richiesta PID si può avere una risposta nello stesso momento di più centraline per lo stesso PID e servono gli headers per capire quelli sono le centraline che hanno risposto, è corretto?
Che casino....??