【发布时间】:2011-01-05 00:23:39
【问题描述】:
我正在尝试使用 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()
【问题讨论】:
-
发布一些代码,因为没有它就无法确定您的流程。
-
请注意,仅当端口号为 10 或更大时,您才需要
\\.\COMxx而不仅仅是COMx(但因此,显然,一直使用它)。但是,最好使用正斜杠,因为它们可以避免反斜杠转义的问题。要么,要么使用带有r''的原始字符串。
标签: python serial-port access-denied windows-xp pyserial