Background: I need to send a numerical value as a byte to an external device, but I have run into a problem. My code is:
ser=serial.Serial("COM3",9600, timeout=0)
ser.write(value)
where "value" is an int that I read have read. The problem is, when I send this, it sends the character value, not the actual value (it sends the byte value 31 for the number 5, since that is the unicode position for it, I believe)
In reality, I want to be able to send it the character "\x05" for example. I guess my question is, how would I convert and int 5 to a char "\x05", or 37 to "\x37"
Use the built-in function chr()
.
If you have a list of such integers you need to send, you might consider using a bytearray()
.
Alternatively, in newer versions of Python you can simply use a byte
type.
you can use this..
bytes(chr(my_int)) # not strictly correct unless 0<=my_int<=255
bytes((my_int,))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With