我试图通过使用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端口并再次启用它。工作

请确保端口没有被任何其他程序中打开。 (这是为我工作)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top