我需要通过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')
我确实得到了预期的输出。