Python – How to read and write from a COM Port using PySerial

pyserialpython

I have Python 3.6.1 and PySerial Installed. I am trying the

I am able to get the list of comports connected. I now want to be able to send data to the COM port and receive responses back. How can I do that? I am not sure of the command to try next.

Code:

import serial.tools.list_ports as port_list
ports = list(port_list.comports())
for p in ports:
    print (p)

Output:

COM7 – Prolific USB-to-Serial Comm Port (COM7)

COM1 – Communications Port (COM1)

I see from the PySerial Documentation that the way to open a COM Port is as below:

import serial

>>> ser = serial.Serial('/dev/ttyUSB0')  # open serial port

>>> print(ser.name)         # check which port was really used

>>> ser.write(b'hello')     # write a string

>>> ser.close()             # close port

I am running on Windows and I get an error for the following line:

ser = serial.Serial('/dev/ttyUSB0')

This is because '/dev/ttyUSB0' makes no sense in Windows. What can I do in Windows?

Best Answer

This could be what you want. I'll have a look at the docs on writing. In windows use COM1 and COM2 etc without /dev/tty/ as that is for unix based systems. To read just use s.read() which waits for data, to write use s.write().

import serial

s = serial.Serial('COM7')
res = s.read()
print(res)

you may need to decode in to get integer values if thats whats being sent.