PySerial [错误5]访问被拒绝

时间:2011-11-28 02:32:42

标签: python serial-port pyserial

我正在尝试用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)。这就是错误弹出的地方。我该如何解决这个问题?

5 个答案:

答案 0 :(得分:5)

更新:在PySerial 3.0中显然不再可能。

在Windows下,我一直使用port =< int>接近成功。

即。将您的代码更改为:

c = serial.Serial(3, 9600)

答案 1 :(得分:1)

对于Python 2.6,使用从零开始的COM端口索引。对于Python 2.7.x,您可以使用全名“COM4”。根据我的经验,最好使用2.7版本。安装Python 2.7.xSetup Tools (aka Easy Install)。完成后,通过键入easy_install -U pyserial安装pyserial模块(请参阅pyserial installation doc)。

请记住将python路径添加到PATH环境变量。

答案 2 :(得分:1)

请注意python版本。

从pyserial手册关于:class serial.Serial https://pyserial.readthedocs.io/en/latest/pyserial_api.html#classes

...........

当给出端口时,在创建对象时立即打开端口。当端口为None并且需要连续调用open()时,它不会打开。

port是设备名称:取决于操作系统。例如GNU / Linux上的/ dev / ttyUSB0或Windows上的COM3。

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

在3.0版中更改:不再支持数字作为端口参数

答案 3 :(得分:1)

对我来说,解决方案不起作用,但有效的方法是关闭与给定com端口交互的所有应用程序。

答案 4 :(得分:0)

适用于PORT COM N-1 在python中 (N是你的COM数量)