Попытка открыть последовательный порт с pyserial на WinXP-> “Доступ запрещен”

Я пытаюсь отправить данные на насос hplc через последовательный порт с помощью Python и pyserial. Я протестировал кабель и насос в соответствии с 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()
5
задан Mariusz Jamro 13 July 2015 в 11:54
поделиться

3 ответа

Попробуйте открыть порт в виде \\. \ COMXX

Также убедитесь, что порт еще не открыт из другого приложения. Я рекомендую вам использовать HyperTerminal, чтобы увидеть, открыт ли порт.

11
ответ дан 18 December 2019 в 06:02
поделиться

Вызов .Close () Перед открытием порта решил проблему, которая ехала мне орехи!

У меня было он работал на другой машине, запущенном Vista 64-бит с использованием виртуальных портов COM0COM, а не сцепной.

Я пытался работать на одних и тех же сценариях на моем коробке Windows 7 - Nada - XP режим то же самое. Доступ отрицал или не мог найти порт (при изменении того, как был адресован порт). HyperTerminal, конечно, признается и работал со всем безупречно.

4 часа спустя я нахожу этот маленький самородок, и теперь все насаждается просто в порядке.

Это хорошая вещь, которую мне нравится программировать ... GAH!

1
ответ дан 18 December 2019 в 06:02
поделиться

.close () до того, как я вызвал .open (), также работал у меня

8
ответ дан 18 December 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: