使用Python和pyserial访问USB串口

15

我该如何使用pyserial访问USB端口?我在这里看到了一个例子:

import serial

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

我曾在Windows上使用MATLAB访问串口,并使用适当的语法,/dev/ttyUSB0 会被替换为 COM1 或任何其他 COM 端口。

我现在在Mac上尝试使用 pyserial 文档中的 串口扫描程序,但没有成功。我认为应该这样写:

import serial

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

在Mac上我如何找出应该使用什么name

编辑:回应下面的答案,我想知道如何访问USB转RS232转换器以及纯USB端口。

2个回答

10

您只能使用pyserial(即USB RS-232 dongles)访问USB串行适配器。如果您想要通用的USB访问,应该寻找“libusb”。如果您正在尝试通过USB访问RS-232,则应查找以cu.usb*(例如/dev/cu.usbserial-181)开头的文件。


即使在使用Houdini显示隐藏文件和文件夹时,“/dev”也是一个没有任何内容的符号链接。我尝试使用Finder的“前往文件夹”,但会出现“找不到文件夹”的提示。我该如何解决这个问题? - Kit
2
请在终端窗口中尝试运行以下命令:ls -l /dev/cu.usb* - Majenko
根本没有类似于cu.usb的东西。我只找到了cu.Kit-COM1。但是Macbook Pro左侧有两个USB接口(可能还有键盘和其他内置设备使用的隐藏接口)。 - Kit
只有插入RS-232适配器的USB端口才会显示为/dev/cu.whatever(在您的情况下是cu.Kit-COM1)。 USB并不是传统意义上的串行接口。 它比那更高科技。 - Majenko

2

要找到可用的端口,您可以使用serial.tools(它是pyserial库的一部分,但需要单独导入)。然后可以使用.device方法找到设备名称。这在我的Mac上有效:

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

有关list_ports的更多信息,请参见:https://pyserial.readthedocs.io/en/latest/tools.html#module-serial.tools.list_ports


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接