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

Rispondere a