David Aldrich wrote: > Hi > > I have written a very simple program to read and print data from the > serial port using pyserial: > > #!/usr/bin/python3 > import serial > > ser=serial.Serial('COM1',115200) > while True: > out = ser.read() > print('Receiving...'+out) > > When I run it and send data for it to read I get: > > C:\SVNProj\Raggio\trunk\hostconsole\gui\prototypes\serial_test>py > serial_read.py Traceback (most recent call last): > File "serial_read.py", line 9, in <module> > print('Receiving...'+out) > TypeError: Can't convert 'bytes' object to str implicitly > > I am using Python 3.5. How would I fix this error please?
Look at the traceback again. The line > out = ser.read() is executed, you are reading successfully. What fails is > print('Receiving...'+out) You are trying to concatenate a (unicode) string and bytes, like in >>> print("foo" + b"bar") Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: Can't convert 'bytes' object to str implicitly You can avoid that by printing the string and the bytes independently >>> print("foo", b"bar") foo b'bar' If you don't like the b"..." stuff and want to treat the bytes as text rather than data you can decode them: >>> print("foo", b"bar".decode()) foo bar For more see <https://docs.python.org/3/howto/unicode.html>. -- https://mail.python.org/mailman/listinfo/python-list