Ciao Gianfranco.
Mi ricordo che I cavi seriali erano di due tipi: normali, con tutti I pin 
connessi, o “NULL MODEM” .
A volte si utilizzavano anche dei connettori in cui il pin di richiesta ack e 
relativa risposta erano cortocircuitati.
Esistono anche dei convertitori tipo “Null modem” che accoppiati a un cavo 
seriale normale lo trasformano in un cavo piu’ idoneo a questo tipo di 
protocollo.

Magari ho detto cavolate, pero’ fossi in te qualche ragionamento sul cavo lo 
farei…
Mi viene ora un dubbio… Non e’ che stai provando a utilizzare un cavo VGA come 
mia cugina?
;-)

Ciao.
AS


From: ML [mailto:[email protected]] On Behalf Of Gianfranco Genna
Sent: Wednesday, November 15, 2017 4:56 PM
To: BrigX_ML <[email protected]>
Subject: [BrigX] Inviare caratteri esadecimali con Python3

Ciao a tutti,
stò impazzendo con dei comandi da inviare via porta seriale ad una bilancia.
Giusto come esercizio triviale, devo collegarmi ad una bilancia prodotta 
dall'azienda dove lavoro, con un protocollo binario proprietario in seriale.
Questo protocollo prevede l'invio di comandi in notazione esadecimale, di 
seguito un esempio di comando per richiedere il peso lordo:
04 01 09 20 2E
di seguito riporto il codice che stò utilizzando:
#! /usr/bin/env python3
import time
import serial

# configure the serial connections (the parameters differs on the device you 
are connecting to)
ser = serial.Serial(
    port='/dev/ttyUSB0',
    baudrate=9600,
    parity=serial.PARITY_ODD,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.SEVENBITS
)

ser.close()
ser.open()
ser.isOpen()

print('Request gross value:04 01 09 20 2E')
while 1 :
    # Python 3 users
    input = bytes.fromhex('04 01 09 20 2E')

    if input == 'exit':
        ser.close()
        exit()
    else:
        # send the character to the device
        ser.write(input)
        out = ''
        # let's wait one second before reading output (let's give device time 
to answer)
        time.sleep(1)

        while ser.inWaiting() > 0:
            out += ser.read(1)

        if out != '':
            print (out)
        else:
            print(input)

Con questo codice a terminale vedo sempre la stringa passata alla variabile 
input perchè effettivamente la bilancia non mi risponde.
Sono convinto che i caratteri che gli mando non siano corretti nella 
formattazione.

Qualcuno ha qualche suggerimento???


Grazie
--

---
We love BrigX
brigx.it<http://brigx.it>


Gianfranco Genna
mail:        [email protected]<mailto:[email protected]>
mobile:    +39 346.6124389
skype:      soldiesis7
_______________________________________________
BrigX Linux Users Group
[email protected]
http://brigx.it/mailman/listinfo/ml_brigx.it

Rispondere a