Я пытаюсь отправить данные на насос hplc через последовательный порт с помощью python и pyserial. Я тестировал кабель и насос под 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
, а не простоCOMx
, только когда номер порта 10 или больше (но, следовательно, очевидно, что используйте его все время). Однако лучше использовать косую черту, поскольку они позволяют избежать проблем с экранированием обратной косой черты. Либо так, либо используйте необработанные строки сr''
. - person Peter Hansen   schedule 14.01.2010