Italian Leggere obd2

Fulvio75

Well-Known Member
Licensed User
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
 

Star-Dust

Expert
Licensed User
Longtime User
L'errore che hai indicato nell'altro post credo si riferisca al Wait For che è sbagliato, probabilmente per quello non compila
 

Star-Dust

Expert
Licensed User
Longtime User

Star-Dust

Expert
Licensed User
Longtime User
Purtroppo non si legge bene, perchè l'ho dovuto aprire con il WordPad perchè è solo un pezzo
 

Star-Dust

Expert
Licensed User
Longtime User
Non riesco a darti altro aiuto mi dispiace.
 

Fulvio75

Well-Known Member
Licensed User
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
 

Fulvio75

Well-Known Member
Licensed User
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?
 

Fulvio75

Well-Known Member
Licensed User
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?
 

amidgeha

Active Member
Licensed User
Longtime User
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
 

AlexBY

Member
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?
Buffer.Length =Position( StopSendDataChar )
 

Fulvio75

Well-Known Member
Licensed User
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....🤒🤒
 

Alessandro71

Well-Known Member
Licensed User
Longtime User
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....🤒🤒
solo se hai fatto una richiesta su un "functional address"
 

Alessandro71

Well-Known Member
Licensed User
Longtime User
Vedo che ancora non hai letto il manuale ELM 327 come ti avevo consigliato all'inizio...
 

Fulvio75

Well-Known Member
Licensed User
NONO l'ho letto e come, il problema è che con l'inglese non sono molto afferrato, qualcosa capisco ma non tutto
 
Top