PySerial [错误 5] 访问被拒绝

9 投票
7 回答
41343 浏览
提问于 2025-04-17 07:11

我正在尝试用Python写一个程序,这个程序会不断检查串口(COM4),当从串口读取到字符“1”时,就打印出一条消息。我希望在按下Arduino设备上的按钮时,通过串口发送“1”。

不过,当我尝试创建一个串口对象时,出现了一个错误:“[错误 5]: 访问被拒绝”。(在创建对象时,它会自动尝试打开串口,这就是我看到的错误来源,来自PySerial包中处理这个的文件。)

我的代码:

c = serial.Serial('COM4', 9600)
while True:
    signal = c.read()
    print signal
    print "running"
    time.sleep(2)
    c.flushOutput()

不过,它总是停在“c = serial.Serial('COM4', 9600)”这一行,这里就出现了错误。我该如何解决这个问题呢?

7 个回答

2

请注意Python的版本。

这是关于pyserial手册中class serial.Serial的内容:https://pyserial.readthedocs.io/en/latest/pyserial_api.html#classes

...........

当你创建一个对象并且指定了端口时,这个端口会立即打开。如果端口是None,那么就不会自动打开,你需要后续调用open()来打开它。

端口是设备名称,具体取决于你的操作系统。例如,在GNU/Linux系统上是/dev/ttyUSB0,而在Windows上是COM3。

............

在3.0版本中,端口参数不再支持数字形式。

8

对我来说,那个解决办法没用,但我发现关闭所有与这个串口有联系的应用程序就能解决问题。

3

更新:在PySerial 3.0中,这显然已经不再可能了。

在Windows系统下,我一直用port=<int>的方法,效果很好。

也就是说,把你的代码改成:

c = serial.Serial(3, 9600)

撰写回答