Invio e ricezione dati da porta seriale

di Anonimizzato22754 il
6 risposte
Ciao a tutti!

Ho un problema con uno strumento collegato via Rs232 alla mia macchina, lo strumento in questione é una bilancia che se interrogata con la sequenza
STX N EOT
ritorna una stringa con i vari valori.
Via terminale tutto a posto, la bilancia viene interrogata risponde, ho scritto un piccolo script python usando pyserial che scrive sulla porta e rimane in ascolto con una readline sulla stessa ma non leggo niente dalla porta...

import serial

with serial.serial('COM6', timeout=1) as s:
s.dtr = False
s.write('STX N EOT')
s.read(20)
s.dtr = True
s.write(serial.to_bytes(range(256)))
s.read(400)
s.send_break()

with open('test.txt') as f:
print(f.read())

Grazie a tutti in anticipo.

6 Risposte

  • La domanda che mi sorge spontanea è: usi gli stessi parametri di linea? Intendo baudrate, bytesize, parità, stop bits. Inoltre hai attivato controlli come RTS/CTS?
  • Ciao candaluar! Si i parametri sono corretti, i controlli RTS/CTS non so cosa sono :/
  • Guarda bene tutti i parametri della connessione che hai utilizzato con hyperterminal (o altro programma) e riportali tutti nel programma; l'eventuale Rts/Cts dovresti trovarlo come 'controllo di flusso'. Eventualmente riporta qui tutti questi parametri che li controlliamo insieme se sono correttamente riportati nel programma.
    Perché nel tuo programma setti Dtr?
  • Attenzione poi che come hai composto la stringa non stai spedendo il carattere STX ma i caratteri "STX" ; stesso discorso per EOT...
  • Ciao, grazie ancora per il tuo supporto
    Allora i parametri sono corretti, se imposto la bilancia in modalità di trasmissione continua riesco ad aprire la porta, leggere i byte che mi servono e chiudere la porta (già un bel passo avanti!).
    Il problema è che vorrei fare in modo di inviare il comando con una write e leggere la risposta.
    Con realterm ho notato che se invio la stringa
    STX N EOT
    La bilancia non risponde. Mentre se invio
    02 78 04 (il decimale)
    Mi risponde correttamente. Al che ho provato a fare una
    Write della stringa '0220782004', i dati vengono inviati ma lanciando una read alla riga successiva la bilancia non mi ritorna niente
Devi accedere o registrarti per scrivere nel forum
6 risposte