尝试在WinXP上使用pyserial打开串行端口->“访问被拒绝”


问题内容

我正在尝试使用python和pyserial通过串行端口将数据发送到hplc泵。我在linux(一种gentoo衍生产品)下测试了电缆和泵,尽管它是root用户,但在电缆和泵上工作良好。现在,我必须在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

还要确保该端口尚未从其他应用程序打开。我建议您使用超级终端查看端口是否打开。