Kit
Kit

Reputation: 31503

Access USB serial ports using Python and pyserial

How do I access the USB port using pyserial? I have seen an example with:

import serial

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

I used to access the serial port from MATLAB on Windows and using the appropriate syntax, /dev/ttyUSB0 would be replaced by COM1 or any other COM port.

I'm on a Mac and I tried using the serial port scanners on the pyserial documentation to no avail. I think I should write it like this:

import serial

name = ? # Names of serial ports on Mac OS X
ser = serial.Serial(name)

How do I find out what name should be on a Mac?

EDIT: In response to an answer below, I'd like to find out how to access both USB to RS232 converters as well as pure USB ports.

Upvotes: 16

Views: 61854

Answers (2)

To find the available ports you can use serial.tools (which is part of the pyserial library, but needs to be imported separately). The device name can then be found using the .device method. This works for me on Mac:

from serial.tools import list_ports
port = list(list_ports.comports())
for p in port:
    print(p.device)

For more on list_ports, see: https://pyserial.readthedocs.io/en/latest/tools.html#module-serial.tools.list_ports

Upvotes: 3

Majenko
Majenko

Reputation: 1840

You can only access USB Serial Adapters using pyserial (i.e., USB RS-232 dongles). If you want generic USB access you should be looking into "libusb". If it is RS-232 you are trying to access through USB then you should look for a file in /dev starting with cu.usb* (/dev/cu.usbserial-181 for example).

Upvotes: 10

Related Questions