Как правильно читать входные данные из chgport, используя подпроцесс? - PullRequest
0 голосов
/ 31 января 2019

У меня есть два разных типа плат Arduino Mega 2560.Один может быть легко обнаружен с помощью командного режима, а другой chgport.У меня нет проблем с настройкой подпроцесса для запуска командного режима.Когда я настраиваю subprocess.run для запуска команды chgport, я не получаю тот же ответ, который получил, вручную набрав chgport в командной строке.

Я набираю chgport в Windowsкомандная строка, и я получил:

COM5 = \Device\Serial2

Я установил Python 3.7.2 команду:

subprocess.run(["chgport"],shell=True,stdout=subprocess.PIPE)

Я получил этот вывод, что не то, что я ожидал:

CompletedProcess(args=['chgport'], returncode=1, stdout=b'')

Я ожидал:

stdout=b'COM5 = \Device\Serial2'

Код, который я пробовал:

a=subprocess.run(["chgport"],shell=True,stdout=subprocess.PIPE)

print(a.stdout.decode('utf-8'))

1 Ответ

0 голосов
/ 01 февраля 2019

Привет, я отказался от использования подпроцесса, поэтому я использую os.Код ниже работает.Сначала я перенаправляю

вывод из режима в файл, а затем читаю файл.

import os

import sys

dir=os.popen("echo %cd%").readlines()[0].strip("\n")+"\\"


os.popen("cd "+dir+ """&& mode>"""+dir+"junk")

com = os.popen("more "+dir+"junk | findstr COM""").readlines()
os.popen("del "+dir+"junk")
port=com[0]
first=port.find("COM")
second=port.find(":")

print(port[first:second])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...