Estoy tratando de enviar datos a una bomba de hplc a través del puerto serie usando python y pyserial. Probé el cable y la bomba bajo Linux (una derivada gentoo), donde funcionó perfectamente, aunque como raíz. Ahora tengo que usar el código en una máquina WinXP, donde siempre aparece un error de "Acceso denegado" cuando intento abrir el puerto (ajusto los parámetros a COMxx en lugar de ttySxx, se encuentra el puerto). Probé el puerto serie de la computadora, así como un adaptador USB2Serial. Escuché que WinXP era bastante restrictivo a la hora de intentar abordar algún puerto con un código escrito por mí mismo. ¿Existe una solución más simple para este problema que la instalación de Linux?Intentando abrir un puerto serie con pyserial en WinXP -> "Acceso denegado"
# -*- 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
-> aquí puedo configurar el puerto serie
self.ser=serial.Serial(port='\\.\COM1', baudrate=9600, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, timeout=1)
-> aquí el error ocurre
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()
publique un código ya que no hay manera de determinar su proceso sin él. – KevinDTimm
Tenga en cuenta que necesita el elemento '\\. \ COMxx' en lugar de' COMx' solo cuando el número de puerto es 10 o más (pero, por lo tanto, obviamente, úselo todo el tiempo). Sin embargo, es mejor utilizar barras diagonales, ya que evitan problemas con escapes de barra invertida.O eso, o usa cadenas sin formato con 'r'''. –