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