Подключение к usbmodem через python через терминал - PullRequest
0 голосов
/ 19 марта 2019

Мне нужно подключиться к устройству usbmodem через python, чтобы включить устройство. В терминале я могу сделать это, набрав

$ screen /dev/cu.usbmodem* 9600 

затем отправляю мои команды, все работает хорошо.

Я хочу сделать это через python, поэтому я могу подключить другие функции (и другое оборудование).

from subprocess import Popen, PIPE
import glob
modem = glob.glob('/dev/cu.usbmodem*')

if not modem:
    print('modem not found, reconnect')

baudRate = '9600'


argv = []
argv.append('screen')
argv.append(modem)
argv.append(baudRate)
argv.append('')

response = ''
r = Popen(argv)
response = r.communicate()[0]
print(response)

Ответ всегда

Must be connected to a terminal

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

script /dev/null

но когда я добавляю это в argv перед моим вызовом экрана, это не меняет вывод. Должен ли он пойти куда-нибудь еще?

Любые идеи о том, как я могу решить это или что я делаю неправильно? Я также запустил скрипт Python из терминала, используя sudo, и даже в терминале он говорит, что я должен быть подключен к терминалу :(

Если я запускаю что-то простое, например

Popen('ls')

Я получаю ожидаемый результат.

...