2012-11-01 8 views
5

lettura uscita da cat /dev/ttyACM0 risultati nel congelamento della beagle board. Si sblocca quando scollego la seriale USB.lettura uscita da/dev/ttyACM0 risultati in congelamento della beagle board (roba incorporata)

Quindi in sostanza il mio setup è una beagle board collegata tramite USB al mio laptop, che comunica con esso tramite COM6. Lo abbiamo anche collegato al web tramite condivisione web. Ho anche un altro usb collegato ad esso da un controller Arduino Teensy ++. Questo controller sta inviando dati via seriale USB alla beagle board. Il punto di questo esercizio è leggere i dati dal seriale USB.

Il processo di lettura che uso è cat /dev/ttyACM0. Ciò comporta la stampa delle prime 2 righe di dati, quindi l'intera scheda beagle si blocca. Quando scolleghi il teensy ++, stampa come 10-20 linee (assumendo qualsiasi cosa contenga il buffer). Non sono sicuro del perchè ciò stia succedendo.

Qualcuno può aiutare? Grazie

+0

Utilizza alcune linee di controllo aggiuntive come CTS? Forse è quello che sta aspettando il beagleboard. – Evert

+0

Non sicuro. Sto andando a controllare. Ma una volta che la beagle board viene bloccata, scollego l'USB e sputa cosa sta sul buffer (essenzialmente tutto ciò che è stato inviato dopo il blocco. A volte ottengo il seguente errore quando scollego l'USB: " [1757.210482] cdc_acm 1 -1: 1.1: acm_start_wb - usb_submit_urb (write bulk) non riuscito: -19 " –

+0

Inoltre, controlla se teensy ++ sta inviando con successo i dati seriali controllandolo con un'applicazione standard basata su Windows per leggere i dati seriali, ad esempio bray's terminale o terraterm.Oltre questo, penso che abbia qualcosa a che fare con il modo in cui il tuo linux embedded sta gestendo il dispositivo seriale usb.Non so cosa sia ancora.IT EDIT: Penso che abbia qualcosa con il modo in cui la porta seriale viene letto. Penso che sia in attesa di caratteri di nuova riga (e forse minimo byte letti) da teensy ++. Prova a impostare la porta seriale in modalità raw con stty: 'stty raw -F/dev/ttyACM0' – Evert

risposta

2

Controlla la velocità con cui stai inviando i dati, ho trovato se si inviano dati troppo velocemente ad arduino è possibile riempire il buffer arduino e sembra bloccarsi. Prova ad aggiungere delay ai dati di output, o assicurati che l'arduino stia svuotando il buffer abbastanza velocemente.

+0

Grazie. Lo proverò. –