Ho provato... C'è qualche cosa che non mi torna, all'avvio dell'app ed effettuata la connessione all'adattatore bt obd2 lancio i comandi sopra citati e monitorando la sub new message (buffer).... Entra.
Dopo di che se lancio nuovi comandi tipo atz, atrv per il voltaggio ecc.ecc non entra più in new message(buffer)..... Cosa cambia? Può essere che non trova più il carattere di fine msg > il monitoraggio di ingresso lo effettuo dopo aver trovato >
in un modulo per avere tutto sempre a disposizione in qualunque activity, inizializzo il tutto in activity A.
Passo ad activity B e vedo il Manager anche li perchè è in un modulo convinto che tutto funzioni ma ecco il problema, lancio un PID da activity B, il Manager lo invia all'adattatore BT che lo riceve ma l'evento AStream_NewData ritorna la risposta solo se torno in Activity A
perchè?
Public Manager As BluetoothManager è una classe che dichiaro nel modulo BT
da activity A chiamo l'inizializzazione BT.Manager... quindi BT.manager prende sempre come riferimento activity A per gli eventi an suo interno? in questo caso AStream_NewData quando riceve i dati?
Public Manager As BluetoothManager è una classe che dichiaro nel modulo BT
da activity A chiamo l'inizializzazione BT.Manager... quindi BT.manager prende sempre come riferimento activity A per gli eventi an suo interno? in questo caso AStream_NewData quando riceve i dati?
Altra delucidazione... Gli eventi come il AStream_NewData che viene generato alla ricezione dei dati, non funzionano nei moduli di codice? Vanno solo nei moduli di classe?
ho provato in tutti i modi, come faccio a dirgli che non deve più utilizzare quella activity A ma la activity B?
Prende sempre come riferimento Activity A, chiamo initialize della classe in activity A e si setta sulla A poi passo alla activity B e AStream_NewData non da nulla, non viene richiamato.
Ritorno in Activity A e viene chiamato, ho provato anche a impostare la classe su Null ma non funziona.
La dichiarazione della classe connessione as classeconnessione è in modulo.
Activity A chiama modulo.connessione
Activity B chiama modulo.connessione ovviamente quando passo a tale Activity, ma AStream_NewData si genera solo quando torno in Activity A
Ciao Fulvio,
Per modulo intendi il modulo di codice ? Perché esistono 4 tipi di moduli in b4a: di activity, di classe, di codice, e di servizio.
Se è un modulo di codice, il comportamento è differente rispetto a B4J e B4I per il modo in cui è stato implementato nel framework e quindi va usato/gestito diversamente dal solito
Allora la questione è che il modulo di codice in B4A è la stessa cosa che scrivi nell'activity chiamante. Per passare l'evento al modulo devi fare cosi
ACTIVITY:
private Sub AStream_NewData (Buffer() As Byte)
' Per modulo di codice
Modulocodice.AStream_NewData (Buffer)
' Per altra activity, classe o servizio
' mCallBack è il chiamante - Activity, classe o servizio
' il nome della sub chiamata deve contenere sempre _ (underscore) nel nome
' If SubExists(mCallBack,mEventName & "_NewData") Then CallSub2(mCallBack,mEventName & "_NewData",Buffer)
End Sub
Nel modulo di codice
B4X:
private Sub AStream_NewData (Buffer() As Byte)
'Log("Data: " & Buffer.Length)
End Sub
Allora la questione è che il modulo di codice in B4A è la stessa cosa che scrivi nell'activity chiamante. Per passare l'evento al modulo devi fare cosi
ACTIVITY:
private Sub AStream_NewData (Buffer() As Byte)
' Per modulo di codice
Modulocodice.AStream_NewData (Buffer)
' Per altra activity, classe o servizio
' mCallBack è il chiamante - Activity, classe o servizio
' il nome della sub chiamata deve contenere sempre _ (underscore) nel nome
' If SubExists(mCallBack,mEventName & "_NewData") Then CallSub2(mCallBack,mEventName & "_NewData",Buffer)
End Sub
Nel modulo di codice
B4X:
private Sub AStream_NewData (Buffer() As Byte)
'Log("Data: " & Buffer.Length)
End Su
[/QUOTE]
Le Activity A e B chiamano questa classeche si trova in un nodulo di codice l'evento AStream_NewData si genera solo quando torno in A anche se il send viene effettuato in B
Questa è una classe non è un modulo di codice.... Fulvio ti vorremo tanto aiutare ma devi dare informazioni corrette altrimenti non sono efficace le risposte
Hai dichiarato BluetoothAdmin su Activity e il resto all'interno della classe?
DeviceProperty non è una classe che conosco, a quale libreria si riferisce?
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