So che è una richiesta gia fatta da molti, però non ho trovato la risposta al mio problema.
Ho fatto un circuito semplice con una fotoresistenza, funziona tutto correttamente e i valori acquisiti dalla fotoresistenza riesco a visualizzarli sul monitor seriale tramite USB (Purtroppo non dispongo di un modulo wifi/gsm o simili).
Ora avrei necessità di stampare quei valori su un semplice TXT, ho visto che la maggior parte delle persone utilizza Processing, però non rientra fra le mie opzioni, un po' perchè cerco sempre di farmi un software in casa e un po' perchè java non lo mastico molto bene e preferisco C/C++.
Chiedo a voi, esiste una libreria per C/C++ che mi permetta di leggere i valori della porta seriale? Altrimenti mi consigliate qualche soluzione?
Avrei la tua stessa necessità per un progetto che vorrei realizzare, in realtà non mi sono ancora mosso a causa delle ferie e quindi ho semplicemente rimandato.
Comunque io sto adottando questo sistema ma nel mio caso ho la necessità di inserire una scheda SD che riproduca un Mp3, quindi in questo caso c'è già una unità di storage in cui poter scrivere.
oppure
Sicuramente per il tuo caso però è troppo dispendiosa come tecnologia
In c puoi aprire la porta com come se fosse un file in lettura e con la read leggi in byte in arrivo. Se preferisci il c saprai come come aprire un file e leggerlo, altrimenti ci sono un sacco d'esempi sul web, secondo me ti complichi la vita innutilmente, alla fine con Processing trovi un sacco d'esempi già pronti, ti può generare un eseguibile sia per windows che per linux, alla fine scrivere un piccolo pezzo di codice e compilarlo non fa molta differenza in c o in processing
@Il_Nano: Cioé la scrittura vuoi farla sul PC, non su Arduino? In tal caso dipende dal sistema operativo: su Windows c'è sicuramente un modo built-in per leggere la seriale, lo usai anni fa ma ora non ricordo proprio. Su Linux, OSX e altri sistemi Unix-like basta aprire in lettura il device tipo /dev/ttyUSB0.
@tba.free: Il secondo oggetto che proponi andrebbe bene per scrivere dati su SD direttamente su Arduino, mentre il primo no, non hai alcuna visibilità sulla SD inserita in quel modulo, lato Arduino.
fabpolli:
In c puoi aprire la porta com come se fosse un file in lettura e con la read leggi in byte in arrivo. Se preferisci il c saprai come come aprire un file e leggerlo, altrimenti ci sono un sacco d'esempi sul web, secondo me ti complichi la vita innutilmente, alla fine con Processing trovi un sacco d'esempi già pronti, ti può generare un eseguibile sia per windows che per linux, alla fine scrivere un piccolo pezzo di codice e compilarlo non fa molta differenza in c o in processing
Sisi i file li gestisco tranquillamente con il C, uso puntatori, fopen fprintf etc etc su questo non ho problemi, il problema mi viene nell'acquisire i dati del sensore del'arduino.
SukkoPera: @Il_Nano: Cioé la scrittura vuoi farla sul PC, non su Arduino? In tal caso dipende dal sistema operativo: su Windows c'è sicuramente un modo built-in per leggere la seriale, lo usai anni fa ma ora non ricordo proprio. Su Linux, OSX e altri sistemi Unix-like basta aprire in lettura il device tipo /dev/ttyUSB0.
Uso raspbian perchè ho l'arduino collegato al raspberry. Ammetto che non sono per nulla esperto di linux, potresti indicarmi qualche guida a riguardo?
Poi lo leggi come se fosse un file, quindi fscanf(), fread() o fgets(). Ovviamente devi usare il device giusto. È C puro, insomma, Linux non c'entra niente, oltre al nome del device.
Il_Nano:
Sisi i file li gestisco tranquillamente con il C, uso puntatori, fopen fprintf etc etc su questo non ho problemi, il problema mi viene nell'acquisire i dati del sensore del'arduino.
no, non ho capito... nel primo post dici che tutto ti funziona e sul moitor seriale vedi i dati, quindi se li vedi sul monitor seriale li vedi anche con qualsiasi altro software creato per leggere dalla porta com (ovvio che non puoi tenere monitor seriale e altro software in lettura in contemporanea), a che sensore fai riferimento?
SukkoPera:
...Il secondo oggetto che proponi andrebbe bene per scrivere dati su SD direttamente su Arduino, mentre il primo no, non hai alcuna visibilità sulla SD inserita in quel modulo, lato Arduino.
Uhm ok poi aprirò un thread tutto mio per questo, intanto grazie per la informazione!
fabpolli:
no, non ho capito... nel primo post dici che tutto ti funziona e sul moitor seriale vedi i dati, quindi se li vedi sul monitor seriale li vedi anche con qualsiasi altro software creato per leggere dalla porta com (ovvio che non puoi tenere monitor seriale e altro software in lettura in contemporanea), a che sensore fai riferimento?
Si, semplicemente non sapevo come intercettarli con il C, non pensavo bastasse fare un fopen.
SukkoPera:
Allora è molto banale:
FILE *fp = fopen ("/dev/ttyUSB0", "r");
Poi lo leggi come se fosse un file, quindi fscanf(), fread() o fgets(). Ovviamente devi usare il device giusto. È C puro, insomma, Linux non c'entra niente, oltre al nome del device.
Ok sono riuscito a intercettarli, ora devo capire come visualizzarli perchè con fgetc() e di seguito printf mi stampa tutti punti interrogativi. (vedi screen)
Perdonatemi ma sono uno studente, sono ancora alle prime armi.
Infatti, quando trasmetti dati tra due programmi, questi devono essere in un formato immediato da trattare tramite software. Gli "abbellimenti" si fanno in fase di presentazione dei dati all'utente.