试图打开一个串口,在WinXP pyserial - >“拒绝访问”
-
20-09-2019 - |
题
我试图通过使用Python和pyserial串行端口数据发送到HPLC泵。我测试的电缆和linux下泵(巴布亚衍生物),其中,它的工作完美,虽然作为根。现在我必须使用代码WinXP的机器,在那里我总是试图打开端口时,出现“拒绝访问”错误的(我调整了参数COMxx而不是ttySxx,端口被发现)。 我试了计算机的串行端口,以及一个USB2Serial适配器。 我听说WinXP中是相当严格的,当涉及到试图解决一些端口,编写自己的代码。 有没有更简单的办法解决这个问题比安装Linux?
# -*- coding: utf-8 -*-
import sys
import time
import serial
from threading import Thread
"""
usage: cmdCapture workDirectory pictureTime pressureTime
"""
print 'successful import is successful'
workDir=sys.argv[1]
pressureThresh=float(sys.argv[3])
class doCapture(Thread):
def __init__ (self, workDir, pressureThresh):
Thread.__init__(self)
self.workDir=workDir
self.pressureThresh=pressureThresh
self.pressureTimer=0
- >在这里,我设置串行端口
self.ser=serial.Serial(port='\\.\COM1', baudrate=9600, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, timeout=1)
- 这里>错误发生
self.ser.open()
def getPressure(self):
self.ser.write('PR')
return self.ser.read(size=8), timer.timer()
def run(self):
self.pressureTimer=time.timer()
while 1:
if self.pressureTimer<=(time.timer()-self.pressureTime):
self.p=getPressure()
print self.p
myCapture=doCapture(workDir, pressureThresh)
myCapture.start()
解决方案
尝试打开端口作为\\.\COMxx
另外,还要确保该端口是不是已经从其他应用程序打开。我建议您使用超级终端查看该端口是开放的。
其他提示
.close()之前我称为。开()为我工作以及
没有必要要求。开,如果你已经在通过串口名称/号码 构造!
在执行
self.ser=serial.Serial(port='\\.\COM1', baudrate=9600, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, timeout=1)
串行端口已经打开。在Windows上,如果你运行。开()如果端口已打开得到一个错误,但是你在Linux上没有。这就是该差异是
开埠解决了被我逼疯了问题前调用.close()!
我有它的工作另一台机器上使用com0com虚拟端口运行Vista 64位,不顺利。
我想在我的Windows 7盒完全相同的脚本工作 - 缥缈 - XP模式同样的事情。访问被拒绝或无法找到端口(改变了当端口是如何解决)。超级终端,当然,认可和一切完美地工作。
,4小时后,我觉得这个小金块,现在一切都沿着就好了哼唱。
这是一件好事,我喜欢编程... GAH!
我也有类似的问题,当我试图从TI Chronos的加速计值。在设备管理器,我只是禁用的COM端口并再次启用它。工作
请确保端口没有被任何其他程序中打开。 (这是为我工作)
不隶属于 StackOverflow