Problema seriale caratteri strani.

ttys0 è la seriale hadware agganciata ai GPIO, è una console perché hai configurato così raspberry. Ma nessuno vieta di disabilitare la console e stabilire una comunicazione tra dispositivi e non tra un dispositivo e un'altro che si aspetta di parlare con un utente. Detto questo la configurazione standard di raspberry prevede il baud rate 115200 che tu hai già abbassato a 9600 se non ho capito male. A questo punto però non so indicare altre strade per risolvere i "caratteri strani" perché mi sono sempre connesso non come console ma come comunicazione seriale tra Arduino e un programma C in ascolto/invio su raspberry

dukeluca86: possono coesistere due utenze root loggate contemporaneamente ?

Pur non conoscendo RPi direi proprio che si possa fare, in fondo è sempre Linux...

Raga, ve lo stò a dire da un pezzo, non è la seriale normale, nessun protocollo, è la ttyS0 che è una console.

Guarda che lo avevo capito (già dal copia/incolla che hai fatto dei caratteri "spuri" nel primo post), ma non significa nulla, la serial1 di RPi linka a ttyS0 (come ha detto anche fabpolli tra l'altro, ma tu queste cose dovresti saperle...), quindi si, è una seriale, e si, dipende da come è impostata la seriale e quale tipo di terminale si aspetta di trovare.

Come cercavo di dirti, se tu a una seriale ci colleghi un terminale "fisico" con la sua porta seriale, ha le sue impostazioni di velocità, parità, hanshake (nessuno/software/hardware), bit di stop, e se poi su Linux è inteso come terminale, nel tuo caso deve essere un tty semplice, niente ANSI ad esempio.

Ma queste cose già le avevo scritte, quindi per cortesia, se vuoi che provi ad aiutarti mi fai la prova che ti ho indicato?

E comunque hai visitato quel link che ti ho indicato?

Si appena ho un minuto la faccio, grazie mille comunque.

Ho risolto con un convertitore di livello decente, la resistenza introduceva una distorsione dei fronti d'onda nel segnale e sballava i timings. Risolto, grazie a tutti, alla fine è sempre un problema di tensioni.

Comunque ho adottato un approccio diverso, ho usato due pin, uno IN e uno OUT tra raspberry e arduino, ho fatto uno script bash su linux che mi gestisce avvio e spegnimento, facendo un polling sull'IN e segnalando sull'OUT quando ha raggiunto un certo punto nel caricamento dei moduli, in sostanza quando riesce a pingare il rooter, viceversa allo spegnimento quando ha stoppato i servizi e smontato sufficenti moduli da non causare piu danni se tolgo tensione, poi aspetto un timer di una 15na di secondi e tramite un relè tolgo tensione.

PS Comunque una cosa, voi dite che non si riesce a mandare i dati piu di 9600... Ho usato un adattatore UART/USB con un cp1202 e raggiunge tranquillamente i 115200, in TX almeno, in RX non ho provato, ma devo solo inviare stringhe a fiume senza controllare niente quindi...

dukeluca86: Comunque una cosa, voi dite che non si riesce a mandare i dati piu di 9600... Ho usato un adattatore UART/USB con un cp1202 e raggiunge tranquillamente i 115200

La UART fisica si, è la SoftwareSerial che ha limitazioni per quanto riguarda la velocità. Infatti ti si consigliava la SoftwareSerial a 9600 (teoricamente anche fino a 38400 funzionicchia, ma dato che dicevi di avere problemi meglio stare sul sicuro) più che altro per avere la seriale/USB libera per fare debug.

Comunque sia, meglio così se hai risolto con un decente adattamento dei livelli.. ;)

dukeluca86: Comunque una cosa, voi dite che non si riesce a mandare i dati piu di 9600... Ho usato un adattatore UART/USB con un cp1202 e raggiunge tranquillamente i 115200, in TX almeno, in RX non ho provato

Ecco, appunto, NON hai provato in RX ... in TX è piuttosto facile, è con l'RX che iniziano i problemi :)

T'assicuro che qui di prove ne sono state fatte parecchie ... non solo con l'invio di qualche stringa, ma con prove su prove per vedere i limiti, quindi ... se ti dico che con la SoftwareSerial, se si vuole vera affidabilità, è meglio stare sui 9600, credici.

Guglielmo