我有一个可执行文件,可以让我与温度控制器通信。当我双击exe(SCPI-CLI.exe)时,它将打开一个带有文本“TC_CLI>”的命令窗口。然后我可以输入我的命令并与我的控制器交谈:例如:TC:COMM:OPEN:SER 8
当我像这样使用subprocess.Popen
时
import subprocess
text = 'tc:comm:open:ser 8'
proc = subprocess.Popen(['C:\\Program Files (x86)\\TC_SCPI\\lib\\SCPI-CLI.exe'],
stdout=subprocess.PIPE,stdin=subprocess.PIPE)
proc.stdin.write(text)
proc.stdin.close()
result = proc.stdout.read()
print(result)
SCPI-CLI.exe将打开,但不会显示>提示。我在这做错了什么?它会挂在proc.stdin.write(text)
。
我是子流程的新手。
答案 0 :(得分:0)
您可以尝试添加" \ n"对于你的字符串,你发送输入键。 另外请尝试将管道添加到stderr并查看它是否显示任何错误(或者它可能使用stderr而不是stdout来替换消息) 还有一件事是,在阅读结果之前等待该程序退出是一个好主意。
试试这个:
import subprocess
import time
import os
text = b'tc:comm:open:ser 8\nexit\n'
proc = subprocess.Popen(['SCPI-CLI.exe'],stdout=subprocess.PIPE,stdin=subprocess.PIPE,stderr=subprocess.PIPE)
out,err = proc.communicate(text)
print(out.decode())