Sto provando a inviare dati a una pompa hplc tramite la porta seriale usando python e pyserial. Ho testato il cavo e la pompa sotto linux (una derivata gentoo), dove ha funzionato perfettamente, anche se come root. Ora devo usare il codice su una macchina WinXP, dove ottengo sempre un errore "Accesso negato" quando provo ad aprire la porta (ho regolato i parametri su COMxx invece di ttySxx, la porta è stata trovata). Ho provato la porta seriale del computer, oltre a un adattatore USB2Serial. Ho sentito che WinXP era piuttosto restrittivo quando si trattava di cercare di indirizzare qualche porta con un codice scritto da sé. C'è una soluzione più semplice per questo problema rispetto all'installazione di linux?Tentativo di aprire una porta seriale con pyserial su WinXP -> "Accesso negato"
# -*- 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
-> qui ho impostato la porta seriale
self.ser=serial.Serial(port='\\.\COM1', baudrate=9600, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, timeout=1)
-> qui l'errore si verifica
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()
pubblica un po 'di codice in quanto non c'è modo di accertare il tuo processo senza di esso. – KevinDTimm
Nota che hai bisogno della cosa '\\. \ COMxx' invece di solo' COMx' solo quando il numero di porta è 10 o superiore (ma, ovviamente, usalo sempre). È preferibile utilizzare le barre in avanti, tuttavia, poiché evitano i problemi con i backslash escape.O quello, o usa stringhe crude con 'r'''. –