Мне нужно подключиться к устройству 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')
Я получаю ожидаемый результат.