Adventurer3の制御5を一部機能制限したもののPython版を公開。
ソースは、Githubのこちらに。
使い方
ソースをダウンロードしたら、Console.pyを、Adventurer3のIPアドレスを引数に起動することで、動作する。
利用可能なコマンドは、p、s、jobstop、qの4種類。ファイル転送して印刷を開始するコマンドは、まだ移植していない。
またAdventurer3のIPを自動検索する機能も入れていない。
コードの説明
Adventurer3/Controller.py
Adventurer3との通信部分をクラスにまとめたもの。
C#で作成したもののうち、ファイル転送部分のみを外して、Python側に移植した。
Adventurer3のIPアドレスは、コンストラクタで渡している。
れほど難しいコードではないので、新たにコマンドを追加することも可能。
もし、利用する場合は、上位側で直接Sendで直接コマンドを送る様にするのではなく、こちらにメソッドを拡張子、Sendを隠蔽したほうが、その後のコードのメンテナンスも楽かもしれない。
Console.py
Controllerオブジェクトの管理と、UI部分を詰め込んだもの。
C#版では、Adventurer3とは接続しっぱなしにしている。そのため、こちら側では、Adventurer3からタイムアウトにならないタイミングでステータス取得コマンドを送っていた。これを実現するため、非同期処理にしたり、接続が解除された場合の特殊処理をしていたのだが、Python版は今のところ常時接続する必要はないと感じているため、Adventurer3へコマンドを送信するときに都度、接続・解除するようにしている。
Adventurer3との通信部分のコードの書き方は以下のようにしてある。
if self.adv3.Start():
self.adv3.UpdateStatus()
self.adv3.End()
print(self.adv3.GetStatus())
次にやること
Pythonの環境はWindows上のVisual Studioで構築した関係、まだRaspberry Piでこのコードは動かしていない。
次は、Raspberry Pi上で、上記コードが動作するのかの確認と、動作確認を踏まえたうえでRaspberry PiをWebサーバーにしてWebで制御ができないか検証していきたい。
コメント