Pagina 1 di 1

lettura dati da seriale ed inserimento in una cella di CALC

Inviato: venerdì 28 dicembre 2012, 12:02
da ugo_62
Ciao a tutti
ho appena installato Ubuntu 12.04 LTS, sono un principiante assoluto.
Ho questa necessità : leggere da una bilancia elettronica (seriale RS232, 9600 n 8 1 ) una stringa e mettere il peso letto in una cella di CALC.
La bilancia comunica in ASCII .Ho provato da hiperterminal (su XP) dei comandi semplicissimi ( "B 1") , e lei risponde con una stringa simile :

"XX.X 1 XXXX.X YYYY:YY:YY" . I campi sono separati da spazi e significano :

XX.X eventuale soppressione di tara
1 numero della bilancia (lo strumento puo averne collegate due)
XXXX.X peso
YYYY:YY:YY data

A me serve solo il terzo (il peso).
Pensavo che una script bash possa fare il lavoro di mandare il comando alla COM1 e filtrare il dato di interesse, poi mi resta da capire come invocarla da CALC e come restituire il valore di peso.
Per me il problema è insormontabile :muro: ma ho grande speranza in Voi tutti e nelle Vs. conoscenze!!

Re: lettura dati da seriale ed inserimento in una cella di C

Inviato: domenica 30 dicembre 2012, 11:23
da ugo_62
pensavo che il seguente comando :
minicom -o <file_richiesta >dati_pesa

con la stringa "B 1" dentro file_richiesta potesse risolvermi la prima parte del problema

In effetti minicom si ricorda dei settaggi della seriale impostati, quindi dovrebbe evitarmi l'uso di setserial ed altre amenità
Che ne pensate? Purtroppo non ho la pesa con me per provare al momento , la ditta è chiusa x ferie

Re: lettura dati da seriale ed inserimento in una cella di C

Inviato: domenica 30 dicembre 2012, 22:44
da Claudio_F
Intanto c'è da capire quale sia la porta sotto Linux, ad esempio con il seguente script Python (rispettare le spaziature, salvare in un file pport.py e avviare da terminale con python pport.py, eventualmente c'è da installare il modulo serial con: sudo apt-get install python-serial):

Codice: Seleziona tutto

#! /usr/bin/env python
import serial
print "Lista porte seriali disponibili"
for prefix in ("com", "/dev/ttyS", "/dev/ttyUSB"):
    for number in range(48):
        portName = prefix + str(number)
        try:
            serial.Serial(portName).close()
            print portName
        except IOError:
            pass
Fatto ciò, e supponendo di aver scoperto che la porta si chiama /dev/ttyS0, si può provare a contattare la bila per vedere se risponde correttamente... o almeno qualcosa :p (come prima, salvare in un file e avviare con python nomefile.py)

Codice: Seleziona tutto

#! /usr/bin/env python
import serial
print "Test comunicazione con bilancia" 
serialPort = serial.Serial("/dev/ttyS0", 9600, 8, "N", 1, timeout=5)
serialPort.write("B 1\r")    # il \r detto anche CR corrisponde all'invio 
received = serialPort.readline().rstrip()
print "Ricevuto <" + received + ">"
serialPort.close()
Se arriva la stringa giusta, estrarre l'elemento voluto ed eventualmente scriverlo in un file è banale, passarlo a calc invece non ne ho la minima idea.

Re: lettura dati da seriale ed inserimento in una cella di C

Inviato: lunedì 31 dicembre 2012, 13:08
da ugo_62
Intanto ti ringrazio molto , Claudio_F!
La porta dovrebbe essere proprio ttyS0 o alla peggio ttyS1 . Una volta che la bilancia rispoda, l'estrazione della porzione di stringa potrebbe essere fatta con awk (vecchi ricordi!).
Come dicevo la ditta è ancora chiusa per ferie, mi ci vorrà qualche giorno per poter fare un test con la bilancia.

Come passarlo al calc... bè poi vedremo. Se già arrivo al primo passo arriverò anche al secondo!

Intanto, visto che sono un brocco totale, cerco i manuali del Phiton e me li scruto per bene
.... e anche se è off-topic........ BUON ANNO A TUTTI :ciao: :ciao: