Ciao Gianfranco, vorrei unirmi [+1] a Gianluca (ueila, ben ritrovato!) su questa modalità di debug: normalmente utilizzavo questo approccio per gli interfacciamenti a bilance e dosatrici, usando un banalissimo Hyperterminal o qualche programmino DOS per leggere le stringhe direttamente in HEX. In genere si scopre che magari non passa un carattere non stampabile, oppure viene filtrato dal driver e bisogna manipolare il pacchetto (aggiungendo un carattere alla stringa standard).
Se vuoi ti porto un portatile di appoggio, nella speranza che Win98 non ti crei strane dermatiti... :) -- Wyz - Wlady -----Messaggio originale----- Da: ML [mailto:[email protected]] Per conto di Gianluca Santoro Inviato: mercoledì 15 novembre 2017 17:50 A: BrigX Linux Users Group - lista pubblica Oggetto: Re: [BrigX] Inviare caratteri esadecimali con Python3 Ciao Gianfranco, hai modo di collegare temporaneamente un secondo pc all'estremità opposta del cavo seriale? Al posto della bilancia intendo dire. Così da leggere quello che esce dalla seriale del primo pc. -- Gianluca Il giorno 15 novembre 2017 16:55, Gianfranco Genna <[email protected]> ha scritto: > > 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 > > > Gianfranco Genna > mail: [email protected] > mobile: +39 346.6124389 > skype: soldiesis7 > > > _______________________________________________ > BrigX Linux Users Group > [email protected] > http://brigx.it/mailman/listinfo/ml_brigx.it > _______________________________________________ BrigX Linux Users Group [email protected] http://brigx.it/mailman/listinfo/ml_brigx.it _______________________________________________ BrigX Linux Users Group [email protected] http://brigx.it/mailman/listinfo/ml_brigx.it
