Python 2.7を使用してリモートデバイスで周波数シンセサイザを制御したいと思います。paramikoを使用して別のデバイスからUSB出力を取得できません
Rapberry PiからUSBポートを直接使用する通信は、Terminal経由で行われます。コマンドはマニュアルにあります。
echo 0E > /dev/ttyACM0 # 0E is the code to reset
echo 04 > /dev/ttyACM0|head</dev/ttyACM0 # 04 will return the frequency
私はラズベリー上のpythonでの出力を取得するには、次のコードを使用します:
print(os.popen(echo 04 > /dev/ttyACM0|head</dev/ttyACM0))
ターミナルコマンドは、SSHを使用して実行することができる設定および取得コマンドの2種類、例えば、があります。別のデバイスから。
私はPythonを使用しようとすると、問題なしでsetコマンドを使うことができますが、getコマンドでは正しい出力が得られません。私は私のコマンドが実行される前に、私の関数は.read()
を行う可能性がありますことをオンラインで見つける
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
global Con # nected
con=0
def SSHConnection():
global con
while True:
try:
ssh.connect(IP,username=User,password=Password)
con=1
break
except:
tkMessageBox.showwarning("Error!", "Device not found or wrong Login")
break
def outin(command):
global con
output="sudo echo "+command+"> /dev/ttyACM0|head</dev/ttyACM0"
if remote.get()==0: # switches between remote and direct output
answer=os.popen(output).readlines()
else:
if con==0: # checks wether a connection has already
SSHConnection() # connects
else:
pass
stdin,stdout,stderr = ssh.exec_command(output)
answer=stdout.read()
return answer
:
私は次の関数を使用します。 私がオンラインで見つけたすべての解決策は、channel.recv_exit_status()
関数を使用していました。これは私をループに陥らせました。
誰かが私を助けることができたらとてもうれしいです。
編集: 間違った出力は実際には0x0096
= 150ですが、間違っていませんが、通常は最後に送信したリクエストです。