CANhack.de CAN interfaccia RKS+CAN
Tecnica diesel, tecnica motori, diagnosi auto, riparazione e manutenzione.

Gestione della memoria buffer per adattatore CAN-USB

 
Nuovo argomento Rispondi 🔗 🖨 CANhack.de - Indice » Microcontrollori ed elettronica, programmazione
Autore Messaggio
candev
Ospite




 


Account gratuito, nessun supporto sviluppo CAN

Messaggio04-09-2013, 12:51    Oggetto: Gestione della memoria buffer per adattatore CAN-USB Cita

Ho un problema con il mio affidabile adattatore CAN.

Utilizzo la funzione `getQueueStatus` per determinare il numero di byte nel buffer di ricezione, quindi leggo il contenuto del buffer di ricezione utilizzando la funzione `read(buffer, count, timeout)`, specificando il numero di byte da leggere.

Fintanto che nel buffer sono presenti meno di 0x4000 byte, tutto è a posto.

Se il buffer contiene più di 0x4000 byte, posso comunque leggere il contenuto del buffer. MA anche in assenza di ulteriori dati in arrivo (quindi il buffer non viene ulteriormente riempito), lo stato del buffer di ricezione non cambia.
Mi aspettavo che il numero di byte segnalato da getQueueStatus nel buffer di ricezione venisse diminuito del numero di byte letti. Tuttavia, questo non è ciò che accade. Inoltre, a quanto pare, il contenuto del buffer non viene modificato. Così, il mio programma legge continuamente lo stesso contenuto.

Qualcuno può spiegare questo fenomeno?
Qualcuno sa se ci sono soluzioni (ad esempio, ulteriori chiamate API necessarie)?
Qual è la dimensione effettiva del buffer del mio adattatore CAN-USB (immagino sia 0x4000)?

Utilizzo l'adattatore su Android tramite l'apposita API D2xx.

Sotto Windows, non ho ancora osservato questo comportamento (lì procedo esattamente come descritto sopra), anche se potrebbe essere dovuto al fatto che l'hardware è più veloce e che quindi livelli di buffer simili non si verificano. Potrebbe essere necessario ricreare la situazione sul posto, anche se la questione di come risolvere il problema rimane comunque aperta.

Saluti,
Non ho trovato la parola 'candev' nel mio vocabolario. Potrebbe essere un errore di battitura o una parola in un linguaggio diverso. Potresti fornirmi più contesto o controllare l'ortografia?
Torna su
CAN-Diagnose
Administrator
Administrator
Avatar-CAN-Diagnose

Iscritto il: 07/06/2011
Messaggi: 573
Karma: +29 / -0   Grazie, mi piace!
Località: Ländle



Messaggio06-09-2013, 13:49    Oggetto: Gestione della memoria buffer per adattatore CAN-USB Cita

Ciao,

Senza conoscere l'implementazione precisa, dubito che l'hardware utilizzato abbia effettivamente o utilizzi 0x4000 (16384) byte di RAM.
Si tratta probabilmente di un buffer interno del driver FTDI. Immagino che il "problema" risieda più nell'implementazione del driver o nel modo in cui utilizzi il driver Android.

Trovato tramite Google, potrebbe indirizzarti nella direzione giusta.
icon_wink.gif

L'attuale hardware RKS+CAN CANHack utilizza, tra l'altro, un FIFO per 32 messaggi.
http://stackoverflow.com/questions/15518214/official-ftdi-android-drivers-read-is-not-working
Con questo, sicuramente non ci saranno fuoriuscite. Il driver FTDI non è necessario neanche in questo caso. http://www.canhack.de/it/viewtopic.php?t=137

Cordiali saluti, Rainer.
Dipl.-Ing. (FH) Rainer Kaufmann - Embedded Softwareentwicklung
CANhack.de System RKS+CAN: CAN-Bus Interface


Ultima modifica il 01-12-2014, 18:55, modificato 1 volta in totale.
Torna su Profilo MP WWW
candev
Ospite




 


Account gratuito, nessun supporto sviluppo CAN

Messaggio06-09-2013, 20:41    Oggetto: Gestione della memoria buffer per adattatore CAN-USB Cita

Ciao Rainer,

Grazie per la tua risposta. La procedura descritta nel link che mi hai inviato è esattamente quella che io utilizzo (e che, inoltre, è presentata nella documentazione e negli esempi).

Ho fatto ulteriori ricerche e penso che l'errore sia effettivamente nel driver Android-D2xx. Oltre al bug descritto nel post originale, ne ho trovato un altro: vengono segnalati messaggi corrotti. O meglio, è probabilmente il buffer a essere corrotto. Questo comportamento dipende anche dal carico di lavoro. Sul mio dispositivo dual-core da 1 GHz, con Android 4.1.2, il problema si verifica a partire da 4 messaggi con una frequenza di 20 Hz. Più messaggi aggiungo, più messaggi risultano corrotti. Sembra che ci siano problemi di sincronizzazione con/verso InTask.

Peccato, a quanto pare dovrò comunque portare con me quel vecchio portatile in macchina.

Saluti,
Non ho trovato la parola 'candev' nel mio vocabolario. Potrebbe essere un errore di battitura o una parola in un linguaggio diverso. Potresti fornirmi più contesto o controllare l'ortografia?
Torna su
candev
Ospite




 


Account gratuito, nessun supporto sviluppo CAN

CAN-Diagnose piace questo.
Messaggio31-12-2015, 1:49    Oggetto: Gestione della memoria buffer per adattatore CAN-USB Cita

Per concludere: l'errore risiedeva, e risiede tuttora, nel driver di cui si è parlato. Purtroppo, il produttore non si è nemmeno ritenuto di rispondere al rapporto di errore. Di conseguenza, ho deciso di non utilizzare più quell'adattatore. L'accesso basato su ASCII è diametralmente opposto a qualsiasi applicazione che aspiri a essere anche solo minimamente professionale.
Come dice un proverbio: 'Se stai cavalcando un cavallo morto, scendi!'. 'Il tonto dice: 'Se stai cavalcando un cavallo morto, assicurati che la sella sia comoda: la cavalcata potrebbe durare a lungo.''

Utilizzo da tempo un adattatore CAN/USB (di livello professionale) per il quale ho sviluppato personalmente un driver per Android. Questo adattatore elabora un protocollo binario. Da quando lo utilizzo, l'applicazione funziona velocissima. Riesco a registrare dati di dimensioni pari a un CD, e contemporaneamente posso scorrere l'interfaccia utente dell'applicazione, ascoltare file MP3, ricevere email o giocare. In sintesi, anche un sistema di trasmissione dati CAN con una velocità di 500 kbit/s non riesce a far funzionare un telefono Android se si utilizzano componenti hardware professionali, ottenendo al massimo un risultato deludente.

Saluti,
Non ho trovato la parola 'candev' nel mio vocabolario. Potrebbe essere un errore di battitura o una parola in un linguaggio diverso. Potresti fornirmi più contesto o controllare l'ortografia?
Torna su
Nuovo argomento Rispondi 🔗 🖨 CANhack.de - Indice » Microcontrollori ed elettronica, programmazione
Articoli e argomenti simili
Argomento Forum
Nessun nuovo messaggio Was geht mit dem Can USB Adapter ? CAN Abitacolo / Comfort
Nessun nuovo messaggio Wie *CAN auf USB Adapter* zu kaufen Sistema CAN-USB CANhack.de: RKS+CAN
Nessun nuovo messaggio CAN-Adapter anschließen... Sistema CAN-USB CANhack.de: RKS+CAN
Nessun nuovo messaggio CANHACK USB Adapter ohne PC Strumenti software CAN e software
Vai a:  
Non puoi scrivere nuovi argomenti in questo forum.