Salve,
tramite la shell di linux ho inviato delle stringhe ad arduino che sono ben visibili sul serial monitor. Il mio obiettivo è quello di leggere dal serial monitor , effettuare delle operazioni sulle stringhe e inviarle tramite un modulo can bus shield ad un altro arduino collegato ad un modulo can bus shield. Lo schema di riferimento è: pc--->usb---->Arduino_1----->can bus shield_1------>can bus shield_2----->Arduino_2--->Usb---->Pc.
Come faccio a leggere dal serial monitor e modificare ciascuna riga ? Questo è ciò che vedo sul monitor:
136 [8] 00 02 00 00 00 00 00 1B
244 [5] 00 00 00 01 C0
136 [8] 00 02 00 00 00 00 00 1B
......etc
credo che da serial monitor tu non possa fare nulla
devi provare un emulatore di terminale, boh, se usi linux forse moserial
ma spiega cosa vuoi fare, che magari le modifiche le puoi far fare ad uno dei due arduini
Sto utilizzando un emulatore dedicato alle ECU di una macchina. Utilizzando le can utils posso leggere il traffico di dati tra le varie ECU. Il comando che sto utilizzando è candump che mi permette di visualizzare i dati. Su questi dati devo apportare delle modifiche per poi riutilizzarli. Ora la mia idea è invece di usare il can bus virtuale l'idea di base è leggere i dati dalla rete virtuale, passarli all'arduino_1, modificarli, passarli all'arduino_2 e rinviarli nel pc. Il collegamento fisico tra i due arduini è fatto tramite due can bus shield.
Si può fareeeee. Come? il modo più semplice che mi viene in mente è di dire alle can util di loggare il traffico su un file. Ora il file lo copi in scriptcommander (o altro serial monitor pari requisiti), che lo spedisce via usb to serial all'arduino selezionato in base al device node selzionato (es, ttyACM0, ttyUSB). Questo è un modo teorico e poco funzionale capisco che il bello sarebbe coinvolgere i due arduino sul can bus fisico sfruttando quanto si scambiano le ecu virtuali. Purtroppo se una ECU impegna il bus, l'altra deve rispondere a tono.
Oppure da linux appoggiandoti a can util dovresti essere in grado di scrivere un programma in C che legge le informazioni di ECU1 e li spedisce ad board1 via seriale, su questa gira uno sketch che legge dalla seriale e scrive sul can bus tramite le API C++ di arduino, cioè un ponte da seriale a can bus. Board2 riceve da can invia su seriale e su questa invia le risposte, che come per board 1 partono dal tuo programma che gira sul pc , escono via usb to serial e via un ponte serial to can.
Io già mi sono confuso, vedi te cosa riesci a combinare, al massimo potresti postare un piccola porzione di traffico virtuale tra ECU1 ed ECU2 specificando chi riceve e chi invia, li posti e vedo se ci capisco tanto da scrivere due sketch.
Ciao.
a me servirebbe come leggere ciò che arriva ad arduino tramite usb per poi modificare il messaggio e spedirlo con arduino
Scusate, forse mi sono rincitrullito, ma a me pare che voglia solo leggere la seriale e archiviare ciò che arriva in variabili per poterle post processare, ovvero ciò che viene richiesto almeno due volte alla settimana!
Quindi, se non ho preso un abbaglio, consiglio di cominciare con lo studiare il reference Serial in particolare Serial.read() e naturalmente cercare nel forum "serial string", troverai migliaia di pagine.
Dopo che hai scritto qualcosa, se hai ancora dubbi, posta il codice e ne parliamo.
Ma scusa, se le stampi sulla seriale, in pratica la stai già leggendo, quindi devi solo memorizzare invece di stampare.
Federico
si federico hai perfettamente ragione dopo varie stampe di prova mi è bastato utilizzare la variabile che stampa la Serial.println();
Grazie mille