通过终端通过Python连接到usbmodem

时间:2019-03-19 10:06:21

标签: python terminal subprocess popen gnu-screen

我需要通过python连接到usbmodem设备以打开设备。在终端中,我可以通过输入

$ 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时,它不会更改输出。它应该去别的地方吗?

关于如何解决此问题或我做错了什么的任何想法?我也使用sudo从终端运行python脚本,即使在终端中它也说我必须连接到终端:(

如果我运行

之类的简单内容
Popen('ls')

我确实得到了预期的输出。

0 个答案:

没有答案