新しいPythonコマンドの作り方 - KawaSwitch/Poke-Controller GitHub Wiki

Joystick.cにコードを書いて毎回makeして書き込んで...ああ失敗したもう一回書き換えて接続してmakeして書き込んで...
シリアル通信+python言語を用いてこれをなくすのが目的です
pythonのコマンド作成について掲載していきます
分かりにくいと感じた方は是非Issueでご指摘お願いします



ver 1.0-beta3 以降

追加場所

  • Poke-Controller/SerialController/Commands/PythonCommands/

下図のように, 使用するpythonファイルをこのディレクトリ(フォルダ)内に配置します
中に新しくディレクトリを作成し階層構造を作って配置しても構いません

追加方法

1. (新しくpythonファイルを作成する場合)設定用コードを追加

新しくファイルを作成(Windowsで説明していますがどのOSでも同じ)

作成した"[好きな名前].py"の先頭に以下のコードを追加

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from Commands.PythonCommandBase import PythonCommand, ImageProcPythonCommand
from Commands.Keys import KeyPress, Button, Hat, Direction, Stick

2. 1つのコマンドにつき次のクラスを1つ追加

画像認識を用いるかどうかで少しコードが変わるので注意
それぞれに合わせて1つテンプレートを選んでコピペしてください

画像認識なしコマンドのテンプレート

class Sample(PythonCommand):
	NAME = ''

	def __init__(self):
		super().__init__()

	def do(self):
		pass

画像認識使用コマンドのテンプレート

class Sample(ImageProcPythonCommand):
	NAME = ''

	def __init__(self, cam):
		super().__init__(cam)

	def do(self):
		pass

3. コマンドごとの名前を設定
テンプレートの変更は次の2ヵ所

  • クラス名の"Sample" → python側での区別用
    同ファイル内で重複していなければ何でも構いません
  • クラス変数NAMEの値 → 表示画面での名前
    NAMEの値が空であれば表示されません

3'. (確認)ラジオボタンをPythonに切り換え, コンボボックスの中に作成したコードがある

4. クラス内のdoメソッド内にコードを書いていく

ファイルの区切り方について

1つのファイルに複数のクラス(=コマンド)を定義できます
また, 新しくディレクトリを作成して区切ることも可能
区切り方のルールは無いので自分が分かりやすいように整理してください


ver 1.0-beta / 1.0-beta2

追加場所

  • 実際のマクロコードの編集/ウィンドウ上でのコマンド名の編集
    Poke-Controller/SerialController/PythonCommand.py

追加方法

  1. PythonCommand.pyのSampleクラスをコピペして別の位置に貼り付ける

  2. 貼り付けたクラス名を好きな名前に変更し, __init__メソッドの中のSampleも変更した名前にする

  3. コマンドを配列に追加する
    PythonCommand.pyのSampleクラスの下にあるcommandsへ
    '表示する名前': 変更した名前
    として追加する

3'. (確認)ラジオボタンをPythonに切り換え, コンボボックスの中に作成したコードがある

  1. PythonCommand.pyの自分が作成したクラス内のdoメソッド内にコードを書いていく

ver 1.0-alpha

追加場所

  • 実際のマクロコードの編集
    Poke-Controller/SerialController/PythonCommand.py
  • ウィンドウ上でのコマンド名の編集
    Poke-Controller/SerialController/Window.py

追加方法

  1. PythonCommand.pyのSampleクラスをコピペして別の位置に貼り付ける

  2. 貼り付けたクラス名を好きな名前に変更し, __init__メソッドの中のSampleも変更した名前にする

  3. コマンドを配列に追加する
    Window.pyのGUIクラスの__init__メソッドの中のself.py_commandsへ
    PythonCommand.変更した名前('表示する名前')
    として追加する

3'. (確認)ラジオボタンをPythonに切り換え, コンボボックスの中に作成したコードがある

  1. PythonCommand.pyの自分が作成したクラス内のdoメソッド内にコードを書いていく

使える関数はボタン/移動(同時押し対応)や画像認識などです
関数のリファレンス的なものはここに置きます

またpython言語により, 繰り返しや画像処理の結果から分岐させたりなども簡単に達成できます
作ったコードをプルリクエストで送ってもらうのは大歓迎です
要望があればIssueなどへお願いします

⚠️ **GitHub.com Fallback** ⚠️