[353] PythonによるリレーON/OFF

前回はPCのコマンドプロンプトからリレー制御用の実行ファイルを起動させてON/OFFできることが確認できましたので、今回はそのファイルをPythonから実行させてみました。ネットで調べてみると、外部のexeファイルを実行させるには「subprocess」というパッケージを使うと良さそうです。

一応Pythonでコードを書いてみたのですが、うまく行きません。exeの後ろにつく引数をどうやって指定すれば良いのか・・・ブログ記事によってはそのまま列記すれば良さそうな感じなのですが、エラーは出ないもののリレーが動きません。

色々と試行錯誤を繰り返し、ようやくexeファイル名と引数をカンマでつなげることで動作することが確認できました。引数は「デバイス固有コード」「ON/OFFの指定」「リレーの指定」の3つありますので、それらをカンマでつなげています。

※白抜き部分はデバイス固有コードです。

exeファイルを置いてある場所が深いところにあるためパスが長くなり見難くなりましたが、「relay_switch」「relay_number」というパラメータを作り、前者はON/OFF(open/close)指定用、後者はリレー(01/02)指定用に充てました。また、「result」や最後のPrint文は特に必要無いのですが、正常にプログラムが動作していることを確認したくて入れています。

GUIのプログラムを組めば、ボタンクリックでリレーを制御できますね。

ここまでたどり着いたところで、今後どう検討を進めて行こうか迷っています。

PCからのリレー制御はこれで何とかなりそうですが、問題はSWR情報をどの様にPCに取り込むかです。リグから入れるかNanoVNAから入れるか・・・たとえ低出力であっても高SWR状態でリグから電波を出したくないので(そもそもその状態でTX ONできるかどうかもわかっていないのですが)、リグからは周波数情報だけを取り込み、PythonでNanoVNAを制御してそこからSWR情報を取ることができれば、それが理想です。

NanoVNA制御用ソースコードもいくつか公開されているようですが、内容を理解するには更にPythonの勉強が必要ですので、「PCによるSD330オートチューナ」の実現までまだまだ先は長そうです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です