同期版Trainを生成する Train(train)非同期版Trainを包み、接続と移動通知の受信を開始します。
引数・フィールド 名前・型 既定値 意味・制限 trainintelino.trainlib_async.Train -同期版として操作する、非同期版Trainのインスタンス。
戻り値・取得値: intelino.trainlib.Train
from intelino.trainlib import Trainで読み込みます。通常はTrainScannerに生成を任せます。
1台ごとに専用イベントループとスレッドを作ります。直接生成する場合も、最後にdisconnect()が必要です。
接続を終了する train.disconnect()本体との接続を切り、通信処理を終了します。
戻り値・取得値: None
購読を解除し、通信を切断し、内部スレッドとイベントループを終了します。
切断した同期版Trainは再接続できません。もう一度TrainScannerから取得します。
実行中のリスナーのスレッドは自動でjoinされません。自分の終了合図と待機を設計します。
同じTrainの通信操作は内部ロックで直列化されます。通常の呼び出しはawait不要です。
停止は別処理です。必要なstop_driving()を先に送り、切断済みのTrainへdisconnect()を繰り返しません。
IDとデータ列を送信する train.send_command(command_id, payload=None)高水準の操作関数を介さず、指定した命令を送ります。
引数・フィールド 名前・型 既定値 意味・制限 command_idint -送信する命令のID。0〜255の整数。 payloadIterable[int] | None None命令のデータ列。各要素は0〜255。リストまたはタプルを使います。Noneは空のデータ列。
戻り値・取得値: None
送信が終わるまで待ちますが、本体の動作完了や意味上の応答を待つ関数ではありません。
整数化後に各値が8bitへマスクされます。範囲外の値が必ず例外になるわけではありません。送信前に自分で範囲を確認します。
同じTrainの通信操作は内部ロックで直列化されます。通常の呼び出しはawait不要です。
送信して応答を受け取る train.send_command_with_response(command_id, payload=None, timeout=3.0)指定した命令IDと同じIDの受信を、時間上限付きで待ちます。
引数・フィールド 名前・型 既定値 意味・制限 command_idint -送信する命令のID。0〜255の整数。 payloadIterable[int] | None None命令のデータ列。各要素は0〜255。リストまたはタプルを使います。Noneは空のデータ列。 timeoutfloat 3.0待つ時間の上限。単位は秒。
戻り値・取得値: TrainMsg
timeoutの既定値は3秒。時間内に応答がなければTimeoutErrorになります。
応答は命令IDで対応付けます。同じIDの複数リクエストを同時に出すと、受信の対応が曖昧になります。
返値は解釈済みの受信データです。非同期版の同名関数はTrainBlePacketを返します。
同じTrainの通信操作は内部ロックで直列化されます。通常の呼び出しはawait不要です。
速さを指定して走行する train.drive_at_speed(speed_cmps, direction=MovementDirection.FORWARD, play_feedback=True)目標速度に合わせてモーターを調整しながら走ります。
引数・フィールド 名前・型 既定値 意味・制限 speed_cmpsint | float -目標の速さ。単位はcm/秒。走行可能な指定範囲は15〜75。 directionMovementDirection MovementDirection.FORWARD進行方向。MovementDirectionの値で指定します。 play_feedbackbool TrueTrueで動作に伴う音とライトの反応を有効にします。
戻り値・取得値: None
speed_cmpsはint()で小数部分が切り捨てられてから送信されます。
本体側でも約0.9425 cm/秒の刻みに調整されるため、指定値と目標値に差が出る場合があります。
距離や走行時間を指定する関数ではありません。時間を待った後にstop_driving()を呼びます。
同じTrainの通信操作は内部ロックで直列化されます。通常の呼び出しはawait不要です。
速度段階を指定して走行する train.drive_at_speed_level(speed_level, direction=MovementDirection.FORWARD, play_feedback=True)本体の速度段階で走行します。
引数・フィールド 名前・型 既定値 意味・制限 speed_levelSpeedLevel -本体が持つ速さの段階。LEVEL1・LEVEL2・LEVEL3、STOPは0。 directionMovementDirection MovementDirection.FORWARD進行方向。MovementDirectionの値で指定します。 play_feedbackbool TrueTrueで動作に伴う音とライトの反応を有効にします。
戻り値・取得値: None
LEVEL1・LEVEL2・LEVEL3は本体が定める段階です。cm/秒の数値ではありません。
発進の既定方向は前進です。停止の用途にはstop_driving()を使えます。
同じTrainの通信操作は内部ロックで直列化されます。通常の呼び出しはawait不要です。
走行を停止する train.stop_driving(play_feedback_type=StopDrivingFeedbackType.MOVEMENT_STOP)走行停止の命令を送ります。
引数・フィールド 名前・型 既定値 意味・制限 play_feedback_typeStopDrivingFeedbackType StopDrivingFeedbackType.MOVEMENT_STOP停止時の反応。NONE・MOVEMENT_STOP・END_ROUTEから選びます。
戻り値・取得値: None
play_feedback_typeで停止時の音とライトの種類を選びます。
通信が切れている場合、命令を届けられません。切断や待機は停止命令の代わりになりません。
この版はBLE API 1.2以降の停止命令を送ります。
同じTrainの通信操作は内部ロックで直列化されます。通常の呼び出しはawait不要です。
次の分岐の方向を設定する train.set_next_split_steering_decision(next_decision)次に検出する分岐1回分の進路を指定します。
引数・フィールド 名前・型 既定値 意味・制限 next_decisionSteeringDecision -次の分岐で選ぶ方向。LEFT・RIGHT・STRAIGHTだけを指定できます。
戻り値・取得値: None
左右は列車の進行方向を基準にします。
指定はスナップの方向設定やランダムな選択より優先されます。
NONE・STEER・ALLやそれ以外の組み合わせはTrainCommandErrorになります。
設定後に移動通知を1回要求し、イベントループへ処理を譲って保持状態の更新を促します。
同じTrainの通信操作は内部ロックで直列化されます。通常の呼び出しはawait不要です。
上部ライトのRGBを設定する train.set_top_led_color(r, g, b)赤・緑・青の強さを指定します。
引数・フィールド 名前・型 既定値 意味・制限 rint -赤の強さ。0〜255の整数。 gint -緑の強さ。0〜255の整数。 bint -青の強さ。0〜255の整数。
戻り値・取得値: None
(0, 0, 0)は消灯です。
0〜255以外の値を自動で安全な範囲に制限する関数ではありません。8bit化による周回を避けるため、指定前に範囲を確認します。
同じTrainの通信操作は内部ロックで直列化されます。通常の呼び出しはawait不要です。
前後ライトのRGBを設定する train.set_headlight_color(front=None, back=None)進行方向に応じて切り替わるライトの色を指定します。
引数・フィールド 名前・型 既定値 意味・制限 frontIterable[int] | None None進行方向側のライト色。赤・緑・青の3要素をリストまたはタプルで指定します。 backIterable[int] | None None反対側のライト色。赤・緑・青の3要素をリストまたはタプルで指定します。
戻り値・取得値: None
両方の引数を省略すると標準色へ戻します。片側だけ指定することもできます。
各RGBは3要素のリストまたはタプルを使います。短い列は0で補われ、長い列は先頭3要素になります。
使い切りのジェネレーターは長さ確認で消費されるため、この引数には使いません。
同じTrainの通信操作は内部ロックで直列化されます。通常の呼び出しはawait不要です。
スナップ動作の音と点滅を設定する train.set_snap_command_feedback(sound, lights)スナップを実行した際の音と上部ライトの反応を切り替えます。
引数・フィールド 名前・型 既定値 意味・制限 soundbool -Trueでスナップ動作の音を有効にします。 lightsbool -Trueでスナップ動作に伴う上部ライトの点滅を有効にします。
戻り値・取得値: None
soundとlightsは独立した設定です。
BLE API 1.2以降に対応する本体で使います。スナップ動作自体を無効にする関数ではありません。
同じTrainの通信操作は内部ロックで直列化されます。通常の呼び出しはawait不要です。
本体のスナップ動作を切り替える train.set_snap_command_execution(on)スナップ検出後に本体が行う動作を有効または無効にします。
引数・フィールド 名前・型 既定値 意味・制限 onbool -Trueで本体のスナップ動作を有効、Falseで無効にします。
戻り値・取得値: None
BLE API 1.2以降に対応する本体で使います。
Falseでも検出イベントは届きますが、実行イベントは届きません。
実験後にスナップだけの動作へ戻す場合はTrueを送ります。
同じTrainの通信操作は内部ロックで直列化されます。通常の呼び出しはawait不要です。
カスタムスナップの動作を消去する train.clear_custom_snap_commands()本体に登録したカスタムスナップ動作を消去します。
戻り値・取得値: None
黒・赤・緑・黄・青の各カスタム動作に消去命令を送ります。
状態を読むだけの処理ではありません。残す必要のある登録がないことを確認してから使います。
同じTrainの通信操作は内部ロックで直列化されます。通常の呼び出しはawait不要です。
貨車を切り離す train.decouple_wagon(play_feedback=True)連結器の切離しを指示します。
引数・フィールド 名前・型 既定値 意味・制限 play_feedbackbool TrueTrueで動作に伴う音とライトの反応を有効にします。
戻り値・取得値: None
この版は磁石の作動時間512 msを指定して送信します。
同期版は送信後に1.5秒待ちます。この待機中は、同じTrainのほかの操作も内部ロックを待ちます。
同じTrainの通信操作は内部ロックで直列化されます。通常の呼び出しはawait不要です。
進行方向の変化を登録する train.add_movement_direction_change_listener(listener)通知を受ける関数を登録します。方向の変化や停止。event.directionを読みます。
引数・フィールド 名前・型 既定値 意味・制限 listenerCallable[[Train, TrainMsgEventMovementDirectionChanged], None] -登録・解除する通常関数。def リスナー(train, event):の形。
戻り値・取得値: None
コールバックの引数は(train, event)の2つで、戻り値は使われません。
同じイベントに同じ関数を再登録しても、重複して増えることはありません。
進行方向の変化を解除する train.remove_movement_direction_change_listener(listener)この種類の通知から、登録した関数を解除します。
引数・フィールド 名前・型 既定値 意味・制限 listenerCallable[[Train, TrainMsgEventMovementDirectionChanged], None] -登録・解除する通常関数。def リスナー(train, event):の形。
戻り値・取得値: None
登録時と同じ関数を渡します。未登録の関数や解除済みの関数はKeyErrorになります。
解除は以後の通知を止める操作です。既に始まったコールバックの終了を待ったり、取り消したりはしません。
電池残量の低下を登録する train.add_low_battery_listener(listener)通知を受ける関数を登録します。電池電圧が低くなった通知。電池残量の百分率を返すものではありません。
引数・フィールド 名前・型 既定値 意味・制限 listenerCallable[[Train, TrainMsgEventLowBattery], None] -登録・解除する通常関数。def リスナー(train, event):の形。
戻り値・取得値: None
コールバックの引数は(train, event)の2つで、戻り値は使われません。
同じイベントに同じ関数を再登録しても、重複して増えることはありません。
電池残量の低下を解除する train.remove_low_battery_listener(listener)この種類の通知から、登録した関数を解除します。
引数・フィールド 名前・型 既定値 意味・制限 listenerCallable[[Train, TrainMsgEventLowBattery], None] -登録・解除する通常関数。def リスナー(train, event):の形。
戻り値・取得値: None
登録時と同じ関数を渡します。未登録の関数や解除済みの関数はKeyErrorになります。
解除は以後の通知を止める操作です。既に始まったコールバックの終了を待ったり、取り消したりはしません。
本体ボタンの押下を登録する train.add_button_press_listener(listener)通知を受ける関数を登録します。event.button_press_typeでSHORT・LONGを区別します。
引数・フィールド 名前・型 既定値 意味・制限 listenerCallable[[Train, TrainMsgEventButtonPressDetected], None] -登録・解除する通常関数。def リスナー(train, event):の形。
戻り値・取得値: None
コールバックの引数は(train, event)の2つで、戻り値は使われません。
同じイベントに同じ関数を再登録しても、重複して増えることはありません。
通知を受けても、短押しの発進・停止や長押しの電源オフという本体の動作は残ります。
本体ボタンの押下を解除する train.remove_button_press_listener(listener)この種類の通知から、登録した関数を解除します。
引数・フィールド 名前・型 既定値 意味・制限 listenerCallable[[Train, TrainMsgEventButtonPressDetected], None] -登録・解除する通常関数。def リスナー(train, event):の形。
戻り値・取得値: None
登録時と同じ関数を渡します。未登録の関数や解除済みの関数はKeyErrorになります。
解除は以後の通知を止める操作です。既に始まったコールバックの終了を待ったり、取り消したりはしません。
通知を受けても、短押しの発進・停止や長押しの電源オフという本体の動作は残ります。
スナップ列の検出を登録する train.add_snap_command_detection_listener(listener)通知を受ける関数を登録します。スナップ動作の有効・無効にかかわらず、検出時に通知されます。
引数・フィールド 名前・型 既定値 意味・制限 listenerCallable[[Train, TrainMsgEventSnapCommandDetected], None] -登録・解除する通常関数。def リスナー(train, event):の形。
戻り値・取得値: None
コールバックの引数は(train, event)の2つで、戻り値は使われません。
同じイベントに同じ関数を再登録しても、重複して増えることはありません。
スナップ列の検出を解除する train.remove_snap_command_detection_listener(listener)この種類の通知から、登録した関数を解除します。
引数・フィールド 名前・型 既定値 意味・制限 listenerCallable[[Train, TrainMsgEventSnapCommandDetected], None] -登録・解除する通常関数。def リスナー(train, event):の形。
戻り値・取得値: None
登録時と同じ関数を渡します。未登録の関数や解除済みの関数はKeyErrorになります。
解除は以後の通知を止める操作です。既に始まったコールバックの終了を待ったり、取り消したりはしません。
スナップ動作の開始を登録する train.add_snap_command_execution_listener(listener)通知を受ける関数を登録します。本体がスナップ動作を開始した通知。動作完了の通知ではありません。
引数・フィールド 名前・型 既定値 意味・制限 listenerCallable[[Train, TrainMsgEventSnapCommandExecuted], None] -登録・解除する通常関数。def リスナー(train, event):の形。
戻り値・取得値: None
コールバックの引数は(train, event)の2つで、戻り値は使われません。
同じイベントに同じ関数を再登録しても、重複して増えることはありません。
スナップ動作を無効にしている間、このイベントは発生しません。
スナップ動作の開始を解除する train.remove_snap_command_execution_listener(listener)この種類の通知から、登録した関数を解除します。
引数・フィールド 名前・型 既定値 意味・制限 listenerCallable[[Train, TrainMsgEventSnapCommandExecuted], None] -登録・解除する通常関数。def リスナー(train, event):の形。
戻り値・取得値: None
登録時と同じ関数を渡します。未登録の関数や解除済みの関数はKeyErrorになります。
解除は以後の通知を止める操作です。既に始まったコールバックの終了を待ったり、取り消したりはしません。
スナップ動作を無効にしている間、このイベントは発生しません。
前側センサーの色変化を登録する train.add_front_color_change_listener(listener)通知を受ける関数を登録します。前側センサーで色が受け付けられたとき、event.colorを通知します。
引数・フィールド 名前・型 既定値 意味・制限 listenerCallable[[Train, TrainMsgEventFrontColorChanged], None] -登録・解除する通常関数。def リスナー(train, event):の形。
戻り値・取得値: None
コールバックの引数は(train, event)の2つで、戻り値は使われません。
同じイベントに同じ関数を再登録しても、重複して増えることはありません。
前側センサーの色変化を解除する train.remove_front_color_change_listener(listener)この種類の通知から、登録した関数を解除します。
引数・フィールド 名前・型 既定値 意味・制限 listenerCallable[[Train, TrainMsgEventFrontColorChanged], None] -登録・解除する通常関数。def リスナー(train, event):の形。
戻り値・取得値: None
登録時と同じ関数を渡します。未登録の関数や解除済みの関数はKeyErrorになります。
解除は以後の通知を止める操作です。既に始まったコールバックの終了を待ったり、取り消したりはしません。
後側センサーの色変化を登録する train.add_back_color_change_listener(listener)通知を受ける関数を登録します。後側センサーで色が受け付けられたとき、event.colorを通知します。
引数・フィールド 名前・型 既定値 意味・制限 listenerCallable[[Train, TrainMsgEventBackColorChanged], None] -登録・解除する通常関数。def リスナー(train, event):の形。
戻り値・取得値: None
コールバックの引数は(train, event)の2つで、戻り値は使われません。
同じイベントに同じ関数を再登録しても、重複して増えることはありません。
後側センサーの色変化を解除する train.remove_back_color_change_listener(listener)この種類の通知から、登録した関数を解除します。
引数・フィールド 名前・型 既定値 意味・制限 listenerCallable[[Train, TrainMsgEventBackColorChanged], None] -登録・解除する通常関数。def リスナー(train, event):の形。
戻り値・取得値: None
登録時と同じ関数を渡します。未登録の関数や解除済みの関数はKeyErrorになります。
解除は以後の通知を止める操作です。既に始まったコールバックの終了を待ったり、取り消したりはしません。
分岐の判断を登録する train.add_split_decision_listener(listener)通知を受ける関数を登録します。分岐の検出後、進路が決まったときにevent.decisionを通知します。
引数・フィールド 名前・型 既定値 意味・制限 listenerCallable[[Train, TrainMsgEventSplitDecision], None] -登録・解除する通常関数。def リスナー(train, event):の形。
戻り値・取得値: None
コールバックの引数は(train, event)の2つで、戻り値は使われません。
同じイベントに同じ関数を再登録しても、重複して増えることはありません。
分岐の判断を解除する train.remove_split_decision_listener(listener)この種類の通知から、登録した関数を解除します。
引数・フィールド 名前・型 既定値 意味・制限 listenerCallable[[Train, TrainMsgEventSplitDecision], None] -登録・解除する通常関数。def リスナー(train, event):の形。
戻り値・取得値: None
登録時と同じ関数を渡します。未登録の関数や解除済みの関数はKeyErrorになります。
解除は以後の通知を止める操作です。既に始まったコールバックの終了を待ったり、取り消したりはしません。
非同期版Trainを生成する Train(device)通信デバイスから非同期版の操作オブジェクトを作ります。
引数・フィールド 名前・型 既定値 意味・制限 deviceTrainBleDevice -本体とのBluetooth通信を担当するTrainBleDeviceのインスタンス。
戻り値・取得値: intelino.trainlib_async.Train
from intelino.trainlib_async import Trainで読み込みます。通常はTrainScannerに生成を任せます。
コンストラクター自体は本体へ接続しません。接続にはawait train.connect()を使います。
本体へ接続する await train.connect(force=False, **kwargs)取得済みの非同期版Trainから通信を開始します。
引数・フィールド 名前・型 既定値 意味・制限 forcebool False接続済みでも通信層の接続処理を呼び直す場合はTrue。 **kwargsobject {}通信層へ渡す追加の名前付き引数。対応内容は利用する通信層とOSによります。
戻り値・取得値: bool
force=Falseで接続済みならTrueを返し、接続処理を繰り返しません。
接続先の検出は別処理です。通常はTrainScannerで取得します。
この版で切断後にis_connectedがTrueのまま残る場合、force=Falseでは接続処理を省略します。同じ非同期版Trainへ再接続する際はforce=Trueで通信層の接続処理を呼びます。
接続を終了する await train.disconnect()本体との接続を切り、通信処理を終了します。
戻り値・取得値: 通信層の返値(boolまたはNone)
最後の書込みが届く猶予として、切断前に0.1秒待ちます。
走行停止は別です。必要なstop_driving()と購読解除を済ませてから呼びます。
通信層の版により返値の型が変わるため、戻り値を停止や切断の成功判定として固定的に使いません。
このSDKとBleak 3.0.2の組み合わせでは、切断の返値Noneをnotで反転してTrueを保持する経路があります。is_connectedやconnection_statusだけを切断の確認に使いません。
IDとデータ列を送信する await train.send_command(command_id, payload=None)高水準の操作関数を介さず、指定した命令を送ります。
引数・フィールド 名前・型 既定値 意味・制限 command_idint -送信する命令のID。0〜255の整数。 payloadIterable[int] | None None命令のデータ列。各要素は0〜255。リストまたはタプルを使います。Noneは空のデータ列。
戻り値・取得値: None
送信が終わるまで待ちますが、本体の動作完了や意味上の応答を待つ関数ではありません。
整数化後に各値が8bitへマスクされます。範囲外の値が必ず例外になるわけではありません。送信前に自分で範囲を確認します。
送信して応答を受け取る await train.send_command_with_response(command_id, payload=None, timeout=3.0)指定した命令IDと同じIDの受信を、時間上限付きで待ちます。
引数・フィールド 名前・型 既定値 意味・制限 command_idint -送信する命令のID。0〜255の整数。 payloadIterable[int] | None None命令のデータ列。各要素は0〜255。リストまたはタプルを使います。Noneは空のデータ列。 timeoutfloat 3.0待つ時間の上限。単位は秒。
戻り値・取得値: TrainBlePacket
timeoutの既定値は3秒。時間内に応答がなければTimeoutErrorになります。
応答は命令IDで対応付けます。同じIDの複数リクエストを同時に出すと、受信の対応が曖昧になります。
解釈済みのデータはpacket.msgまたはpacket.get_interpreted_message()から取得します。
本体のMACアドレスを照会する await train.get_mac_address()本体が返すMACアドレスを受信データとして取得します。
戻り値・取得値: TrainMsgMacAddress
接続IDのtrain.idとは用途が異なります。Macの接続IDはUUIDなので、両者が同じ値とは限りません。
本体の識別データを照会する await train.get_uuid()本体が返す識別データを取得します。
戻り値・取得値: TrainMsgTrainUuid
返値はTrainMsgTrainUuidです。文字列は返値のuuidから読みます。
OSがBluetooth接続に使うUUIDと同じものとは限りません。
通信APIと本体ソフトの版を照会する await train.get_version_info()BLE APIと本体ソフトのバージョンを取得します。
戻り値・取得値: TrainMsgVersionDetail
ble_api_versionとfw_versionはそれぞれVersionデータです。Pythonパッケージの版とは別です。
本体の累積走行距離を照会する await train.get_stats_lifetime_odometer()電源を切った後も保持される累積距離を取得します。
戻り値・取得値: TrainMsgStatsLifetimeOdometer
単位はm、精度はcmです。返値のlifetime_odometer_metersを読みます。
同期版のdistance_cmは接続時からの差なので、値の意味と単位が異なります。
速さを指定して走行する await train.drive_at_speed(speed_cmps, direction=MovementDirection.FORWARD, play_feedback=True)目標速度に合わせてモーターを調整しながら走ります。
引数・フィールド 名前・型 既定値 意味・制限 speed_cmpsint | float -目標の速さ。単位はcm/秒。走行可能な指定範囲は15〜75。 directionMovementDirection MovementDirection.FORWARD進行方向。MovementDirectionの値で指定します。 play_feedbackbool TrueTrueで動作に伴う音とライトの反応を有効にします。
戻り値・取得値: None
speed_cmpsはint()で小数部分が切り捨てられてから送信されます。
本体側でも約0.9425 cm/秒の刻みに調整されるため、指定値と目標値に差が出る場合があります。
距離や走行時間を指定する関数ではありません。時間を待った後にstop_driving()を呼びます。
速度段階を指定して走行する await train.drive_at_speed_level(speed_level, direction=MovementDirection.FORWARD, play_feedback=True)本体の速度段階で走行します。
引数・フィールド 名前・型 既定値 意味・制限 speed_levelSpeedLevel -本体が持つ速さの段階。LEVEL1・LEVEL2・LEVEL3、STOPは0。 directionMovementDirection MovementDirection.FORWARD進行方向。MovementDirectionの値で指定します。 play_feedbackbool TrueTrueで動作に伴う音とライトの反応を有効にします。
戻り値・取得値: None
LEVEL1・LEVEL2・LEVEL3は本体が定める段階です。cm/秒の数値ではありません。
発進の既定方向は前進です。停止の用途にはstop_driving()を使えます。
モーター出力を直接指定する await train.drive_with_constant_pwm(pwm, direction=MovementDirection.FORWARD, play_feedback=True)速度調整を使わず、一定のPWM出力で走行します。
引数・フィールド 名前・型 既定値 意味・制限 pwmint -モーターの出力。0で停止、255で最大出力。速さの単位ではありません。 directionMovementDirection MovementDirection.FORWARD進行方向。MovementDirectionの値で指定します。 play_feedbackbool TrueTrueで動作に伴う音とライトの反応を有効にします。
戻り値・取得値: None
pwmは0〜255。負荷や電池の状態で実際の速さが変わります。
実装はpwm & 0xFFで8bitにしてから反転して送ります。範囲外を検出する関数ではありません。
走行を停止する await train.stop_driving(play_feedback_type=StopDrivingFeedbackType.MOVEMENT_STOP)走行停止の命令を送ります。
引数・フィールド 名前・型 既定値 意味・制限 play_feedback_typeStopDrivingFeedbackType StopDrivingFeedbackType.MOVEMENT_STOP停止時の反応。NONE・MOVEMENT_STOP・END_ROUTEから選びます。
戻り値・取得値: None
play_feedback_typeで停止時の音とライトの種類を選びます。
通信が切れている場合、命令を届けられません。切断や待機は停止命令の代わりになりません。
この版はBLE API 1.2以降の停止命令を送ります。
一時停止して自動で再開する await train.pause_driving(time, play_feedback=True)指定した時間だけ止まり、その後に元の走行へ戻ります。
引数・フィールド 名前・型 既定値 意味・制限 timefloat -一時停止する秒数。0〜25.5秒、0.1秒単位で指定します。 play_feedbackbool TrueTrueで動作に伴う音とライトの反応を有効にします。
戻り値・取得値: None
送信後に関数は戻ります。停止時間の終了までPythonを待たせる関数ではありません。
時間はint(time * 10)で0.1秒単位へ変換します。範囲外は8bit化で周回し得るため、0〜25.5秒の範囲を守ります。
待機するasyncio.sleep()や、再開しないstop_driving()とは別の処理です。
次の分岐の方向を設定する await train.set_next_split_steering_decision(next_decision)次に検出する分岐1回分の進路を指定します。
引数・フィールド 名前・型 既定値 意味・制限 next_decisionSteeringDecision -次の分岐で選ぶ方向。LEFT・RIGHT・STRAIGHTだけを指定できます。
戻り値・取得値: None
左右は列車の進行方向を基準にします。
指定はスナップの方向設定やランダムな選択より優先されます。
NONE・STEER・ALLやそれ以外の組み合わせはTrainCommandErrorになります。
上部ライトのRGBを設定する await train.set_top_led_color(r, g, b)赤・緑・青の強さを指定します。
引数・フィールド 名前・型 既定値 意味・制限 rint -赤の強さ。0〜255の整数。 gint -緑の強さ。0〜255の整数。 bint -青の強さ。0〜255の整数。
戻り値・取得値: None
(0, 0, 0)は消灯です。
0〜255以外の値を自動で安全な範囲に制限する関数ではありません。8bit化による周回を避けるため、指定前に範囲を確認します。
前後ライトのRGBを設定する await train.set_headlight_color(front=None, back=None)進行方向に応じて切り替わるライトの色を指定します。
引数・フィールド 名前・型 既定値 意味・制限 frontIterable[int] | None None進行方向側のライト色。赤・緑・青の3要素をリストまたはタプルで指定します。 backIterable[int] | None None反対側のライト色。赤・緑・青の3要素をリストまたはタプルで指定します。
戻り値・取得値: None
両方の引数を省略すると標準色へ戻します。片側だけ指定することもできます。
各RGBは3要素のリストまたはタプルを使います。短い列は0で補われ、長い列は先頭3要素になります。
使い切りのジェネレーターは長さ確認で消費されるため、この引数には使いません。
移動状態を1回照会する await train.get_movement_notification()移動通知を1回だけ要求し、TrainMsgMovementを返します。
戻り値・取得値: TrainMsgMovement
方向・現在速度・出力・目標速度・一時停止時間・分岐設定・累積距離を読みます。
継続通知の開始や停止を変更する照会ではありません。応答待ちの上限は内部で既定3秒です。
移動通知の継続送信を切り替える await train.movement_notification_stream(streaming=True, interval=0.1)移動通知の送信状態を設定し、移動通知だけのObservableを返します。
引数・フィールド 名前・型 既定値 意味・制限 streamingbool TrueTrueで移動通知の継続送信を開始、Falseで停止します。 intervalfloat 0.1通知の間隔。単位は秒。0.10〜2.55秒、0.01秒単位。
戻り値・取得値: Observable[TrainMsgMovement]
intervalはint(interval * 100)で変換し、0.10〜2.55秒へ制限されます。
この版はstreaming=NoneもFalseとして停止命令にします。状態を維持する意味では使えません。
Observableのsubscribe()で通知を受け、購読解除には返された購読のdispose()を使います。
購読を解除することと、本体の継続通知をFalseで止めることは別の操作です。
スナップ動作の音と点滅を設定する await train.set_snap_command_feedback(sound, lights)スナップを実行した際の音と上部ライトの反応を切り替えます。
引数・フィールド 名前・型 既定値 意味・制限 soundbool -Trueでスナップ動作の音を有効にします。 lightsbool -Trueでスナップ動作に伴う上部ライトの点滅を有効にします。
戻り値・取得値: None
soundとlightsは独立した設定です。
BLE API 1.2以降に対応する本体で使います。スナップ動作自体を無効にする関数ではありません。
本体のスナップ動作を切り替える await train.set_snap_command_execution(on)スナップ検出後に本体が行う動作を有効または無効にします。
引数・フィールド 名前・型 既定値 意味・制限 onbool -Trueで本体のスナップ動作を有効、Falseで無効にします。
戻り値・取得値: None
BLE API 1.2以降に対応する本体で使います。
Falseでも検出イベントは届きますが、実行イベントは届きません。
実験後にスナップだけの動作へ戻す場合はTrueを送ります。
カスタムスナップの動作を消去する await train.clear_custom_snap_commands()本体に登録したカスタムスナップ動作を消去します。
戻り値・取得値: None
黒・赤・緑・黄・青の各カスタム動作に消去命令を送ります。
状態を読むだけの処理ではありません。残す必要のある登録がないことを確認してから使います。
貨車を切り離す await train.decouple_wagon(play_feedback=True)連結器の切離しを指示します。
引数・フィールド 名前・型 既定値 意味・制限 play_feedbackbool TrueTrueで動作に伴う音とライトの反応を有効にします。
戻り値・取得値: None
この版は磁石の作動時間512 msを指定して送信します。
非同期版は送信後に戻り、同期版のような1.5秒の追加待機はしません。必要な時間はawait asyncio.sleep()で設けます。
同期版の探索条件を作る TrainScanner(device_identifier=None, timeout=5.0)探索する接続先と待ち時間の既定値を設定します。
引数・フィールド 名前・型 既定値 意味・制限 device_identifierstr | None None接続先のBluetoothアドレス、Macでは接続先UUID。Noneなら最初に見つかった列車。 timeoutfloat 5.0待つ時間の上限。単位は秒。
戻り値・取得値: 同期版のTrainScanner
初期化だけでは探索や接続を開始しません。get_train()・get_trains()またはwith文で開始します。
複数台の電源が入っていると、接続先を省略した単一取得は別の列車を返すことがあります。
同期版の接続区間へ入る with TrainScanner(...) as train: # __enter__()1台を探索して接続し、接続中のTrainを受け取ります。
戻り値・取得値: 同期版のTrain
見つからない場合はTrainNotFoundError。
コンテキストマネージャーは1台用です。複数台ではget_trains()を使い、それぞれの終了処理を自分で行います。
同期版の接続区間を終了する scanner.__exit__(exc_type, exc_val, exc_tb)withの範囲を抜けると、取得した1台を切断します。
引数・フィールド 名前・型 既定値 意味・制限 exc_typetype[BaseException] | None -範囲内で発生した例外の型。with文から渡されます。 exc_valBaseException | None -範囲内の例外。with文から渡されます。 exc_tbTracebackType | None -範囲内の例外のトレースバック。with文から渡されます。
戻り値・取得値: None
通常は直接呼ばず、withまたはasync withに任せます。
走行は自動で停止しません。finallyで停止を送ってから範囲を抜けます。
範囲内の例外は握りつぶさず、外側へ伝わります。
同期版で1台を取得する scanner.get_train(**kwargs)探索して操作対象を受け取ります。
引数・フィールド 名前・型 既定値 意味・制限 **kwargsobject {}get_trainではdevice_identifier・timeout・name・adapterなど、get_trainsではtimeout・at_most・adapterなどを追加できます。通信層が対応する引数だけを使います。
戻り値・取得値: 同期版のTrain
メソッドへ渡したtimeoutは、コンストラクターの設定より優先されます。
メソッドへ渡したdevice_identifierは、コンストラクターの設定より優先されます。nameは通信層へ渡す名前です。
列車が取得できない場合はTrainNotFoundError。
必ず接続済みの同期版Trainを返します。connect=Falseという利用方法はありません。
内部でasyncio.run()を使うため、既にイベントループが動いている同じスレッドからは呼べません。
同期版で複数台を取得する scanner.get_trains(count=None, **kwargs)探索して操作対象を受け取ります。
引数・フィールド 名前・型 既定値 意味・制限 countint | None None必要な台数。正の整数なら取得台数との不一致で例外。Noneまたは0なら時間内に見つかった台数。 **kwargsobject {}get_trainではdevice_identifier・timeout・name・adapterなど、get_trainsではtimeout・at_most・adapterなどを追加できます。通信層が対応する引数だけを使います。
戻り値・取得値: list[同期版のTrain]
メソッドへ渡したtimeoutは、コンストラクターの設定より優先されます。
count=Noneまたは0で何も見つからなければ、例外ではなく空のリストを返します。
正のcountを指定した場合、返る台数がcountと一致しなければTrainNotFoundError。at_mostは上限だけを指定し、countを省略した場合は不足を例外にしません。
複数取得はコンストラクターのdevice_identifierで列車を限定しません。戻る順序を名前やIDの順と決めつけません。
timeout内に必要台数を検出できれば探索は早く終わります。その後の接続にも時間がかかります。
取得後は各Trainに対して停止と切断が必要です。
内部でasyncio.run()を使います。接続はTrainへの変換時に1台ずつ行います。途中で接続に失敗した場合の、既に取得した列車の後始末にも注意します。
at_mostは探索を終える検出数の目安として渡されます。この版は返すリストを指定数で切り取らないため、厳密な上限が必要なら取得結果の台数も確認します。
同期版のdevice_identifier scanner.device_identifier単一取得で使う接続先の既定値。
戻り値・取得値: str | None
通常の属性なので代入できます。次に取得する際の既定値に使われます。
同期版のtimeout scanner.timeout検出で使う待ち時間の既定値。単位は秒。
戻り値・取得値: float
通常の属性なので代入できます。次に取得する際の既定値に使われます。
同期版のコンテキスト取得結果 scanner.blocking_trainwithへ入ると作られる、1台の取得結果。
戻り値・取得値: 同期版のTrain
コンストラクター直後にはまだ作られていない属性です。as trainで受け取る方法を使います。
get_trains()の取得結果を自動管理する属性ではありません。
非同期版の探索条件を作る TrainScanner(device_identifier=None, timeout=5.0)探索する接続先と待ち時間の既定値を設定します。
引数・フィールド 名前・型 既定値 意味・制限 device_identifierstr | None None接続先のBluetoothアドレス、Macでは接続先UUID。Noneなら最初に見つかった列車。 timeoutfloat 5.0待つ時間の上限。単位は秒。
戻り値・取得値: 非同期版のTrainScanner
初期化だけでは探索や接続を開始しません。get_train()・get_trains()またはwith文で開始します。
複数台の電源が入っていると、接続先を省略した単一取得は別の列車を返すことがあります。
非同期版の接続区間へ入る async with TrainScanner(...) as train: # __aenter__()1台を探索して接続し、接続中のTrainを受け取ります。
戻り値・取得値: 非同期版のTrain
見つからない場合はTrainNotFoundError。
コンテキストマネージャーは1台用です。複数台ではget_trains()を使い、それぞれの終了処理を自分で行います。
非同期版の接続区間を終了する await scanner.__aexit__(exc_type, exc_val, exc_tb)withの範囲を抜けると、取得した1台を切断します。
引数・フィールド 名前・型 既定値 意味・制限 exc_typetype[BaseException] | None -範囲内で発生した例外の型。with文から渡されます。 exc_valBaseException | None -範囲内の例外。with文から渡されます。 exc_tbTracebackType | None -範囲内の例外のトレースバック。with文から渡されます。
戻り値・取得値: None
通常は直接呼ばず、withまたはasync withに任せます。
走行は自動で停止しません。finallyで停止を送ってから範囲を抜けます。
範囲内の例外は握りつぶさず、外側へ伝わります。
非同期版で1台を取得する await scanner.get_train(connect=True, **kwargs)探索して操作対象を受け取ります。
引数・フィールド 名前・型 既定値 意味・制限 connectbool TrueTrueで見つかった列車に接続、Falseなら未接続のTrainを返します。 **kwargsobject {}get_trainではdevice_identifier・timeout・name・adapterなど、get_trainsではtimeout・at_most・adapterなどを追加できます。通信層が対応する引数だけを使います。
戻り値・取得値: 非同期版のTrain
メソッドへ渡したtimeoutは、コンストラクターの設定より優先されます。
メソッドへ渡したdevice_identifierは、コンストラクターの設定より優先されます。nameは通信層へ渡す名前です。
列車が取得できない場合はTrainNotFoundError。
connect=Falseで取得した場合、命令を送る前にawait train.connect()が必要です。
非同期版で複数台を取得する await scanner.get_trains(count=None, connect=True, **kwargs)探索して操作対象を受け取ります。
引数・フィールド 名前・型 既定値 意味・制限 countint | None None必要な台数。正の整数なら取得台数との不一致で例外。Noneまたは0なら時間内に見つかった台数。 connectbool TrueTrueで見つかった列車に接続、Falseなら未接続のTrainを返します。 **kwargsobject {}get_trainではdevice_identifier・timeout・name・adapterなど、get_trainsではtimeout・at_most・adapterなどを追加できます。通信層が対応する引数だけを使います。
戻り値・取得値: list[非同期版のTrain]
メソッドへ渡したtimeoutは、コンストラクターの設定より優先されます。
count=Noneまたは0で何も見つからなければ、例外ではなく空のリストを返します。
正のcountを指定した場合、返る台数がcountと一致しなければTrainNotFoundError。at_mostは上限だけを指定し、countを省略した場合は不足を例外にしません。
複数取得はコンストラクターのdevice_identifierで列車を限定しません。戻る順序を名前やIDの順と決めつけません。
timeout内に必要台数を検出できれば探索は早く終わります。その後の接続にも時間がかかります。
取得後は各Trainに対して停止と切断が必要です。
接続ありで正のcountに足りなかった場合、取得済みの列車を切断してから例外を出します。
at_mostは探索を終える検出数の目安として渡されます。この版は返すリストを指定数で切り取らないため、厳密な上限が必要なら取得結果の台数も確認します。
非同期版のdevice_identifier scanner.device_identifier単一取得で使う接続先の既定値。
戻り値・取得値: str | None
通常の属性なので代入できます。次に取得する際の既定値に使われます。
非同期版のtimeout scanner.timeout検出で使う待ち時間の既定値。単位は秒。
戻り値・取得値: float
通常の属性なので代入できます。次に取得する際の既定値に使われます。
非同期版のコンテキスト取得結果 scanner.trainwithへ入ると作られる、1台の取得結果。
戻り値・取得値: 非同期版のTrain
コンストラクター直後にはまだ作られていない属性です。as trainで受け取る方法を使います。
get_trains()の取得結果を自動管理する属性ではありません。
TrainMsgBase TrainMsgBase(raw_packet)すべての受信型に共通する項目。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。
戻り値・取得値: TrainMsgBase
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
基底型です。実際の受信は具体的な型で判別します。
TrainMsgEventBase TrainMsgEventBase(raw_packet, timestamp_ms)イベント受信型に共通するIDと本体時刻。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:224。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。 event_idClassVar[EventId] -イベントの種類を区別するID。クラス変数。 timestamp_msint -イベントが起きた本体内の時刻。単位はms。パソコンの日時ではありません。32bit値なので長時間では周回します。
戻り値・取得値: TrainMsgEventBase
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
基底型です。実際の受信は具体的な型で判別します。
TrainMsgUnknown TrainMsgUnknown(raw_packet)対応する解釈がない命令IDの受信。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:0。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。
戻り値・取得値: TrainMsgUnknown
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
元の受信IDや全バイトの確認にはraw_packetを読みます。未知型の固定IDだけで元のIDを判断しません。
TrainMsgEventUnknown TrainMsgEventUnknown(raw_packet, timestamp_ms)解釈できない種類のイベント受信。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:0。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。 event_idClassVar[EventId] -イベントの種類を区別するID。クラス変数。 固定値:EventId.NONE。 timestamp_msint -イベントが起きた本体内の時刻。単位はms。パソコンの日時ではありません。32bit値なので長時間では周回します。
戻り値・取得値: TrainMsgEventUnknown
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
元の受信IDや全バイトの確認にはraw_packetを読みます。未知型の固定IDだけで元のIDを判断しません。
TrainMsgMalformed TrainMsgMalformed(raw_packet)解釈時にTrainlibErrorが起きた受信。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:256。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。
戻り値・取得値: TrainMsgMalformed
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
packet.msgはTrainlibErrorをこの型へ置き換えます。ValueErrorなど、別系列の例外は置き換えない場合があります。
TrainMsgMacAddress TrainMsgMacAddress(raw_packet, mac_address)MACアドレスの照会応答。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:66。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。 mac_addressstr -本体が返すMACアドレスの16進数文字列。
戻り値・取得値: TrainMsgMacAddress
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
TrainMsgTrainUuid TrainMsgTrainUuid(raw_packet, uuid)本体の識別データの照会応答。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:67。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。 uuidstr -本体が返す識別データの16進数文字列。
戻り値・取得値: TrainMsgTrainUuid
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
TrainMsgVersionDetail TrainMsgVersionDetail(raw_packet, ble_api_version, fw_version)本体のBLE APIと本体ソフトの版。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:7。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。 ble_api_versionVersion -本体のBLE APIの版。Version。 fw_versionVersion -本体ソフトの版。Version。
戻り値・取得値: TrainMsgVersionDetail
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
TrainMsgStatsLifetimeOdometer TrainMsgStatsLifetimeOdometer(raw_packet, lifetime_odometer_meters)累積走行距離の照会応答。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:62。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。 lifetime_odometer_metersfloat -本体の累積走行距離。単位はm、精度はcm。電源を切った後も保持。
戻り値・取得値: TrainMsgStatsLifetimeOdometer
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
TrainMsgMovement TrainMsgMovement(raw_packet, direction, speed_cmps, pwm, speed_control, desired_speed_cmps, pause_time_ms, next_split_decision, lifetime_odometer_meters)現在の移動状態をまとめた通知。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:183。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。 directionMovementDirection -受信した進行方向。MovementDirection。 speed_cmpsfloat -現在の速さ。単位はcm/秒。受信値はmm/秒から換算。 pwmint -現在のモーター出力。0で停止、255で最大。 speed_controlbool -目標速度へ合わせる制御が有効か。 desired_speed_cmpsfloat -速度制御の目標速度。単位はcm/秒。 pause_time_msint -通知された一時停止時間。単位はms。0なら一時停止なし。 next_split_decisionSteeringDecision -次の分岐設定。NONEならスナップまたはランダムな選択に従う。 lifetime_odometer_metersfloat -本体の累積走行距離。単位はm、精度はcm。電源を切った後も保持。
戻り値・取得値: TrainMsgMovement
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
TrainMsgEventMovementDirectionChanged TrainMsgEventMovementDirectionChanged(raw_packet, timestamp_ms, direction)進行方向が変わったとき、または停止したときの通知。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:224。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。 event_idClassVar[EventId] -イベントの種類を区別するID。クラス変数。 固定値:EventId.MOVEMENT_DIRECTION_CHANGED。 timestamp_msint -イベントが起きた本体内の時刻。単位はms。パソコンの日時ではありません。32bit値なので長時間では周回します。 directionMovementDirection -受信した進行方向。MovementDirection。
戻り値・取得値: TrainMsgEventMovementDirectionChanged
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
TrainMsgEventLowBattery TrainMsgEventLowBattery(raw_packet, timestamp_ms)電池電圧が低くなった通知。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:224。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。 event_idClassVar[EventId] -イベントの種類を区別するID。クラス変数。 固定値:EventId.LOW_BATTERY。 timestamp_msint -イベントが起きた本体内の時刻。単位はms。パソコンの日時ではありません。32bit値なので長時間では周回します。
戻り値・取得値: TrainMsgEventLowBattery
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
TrainMsgEventLowBatteryCutOff TrainMsgEventLowBatteryCutOff(raw_packet, timestamp_ms)低電池のため本体が電源を切るときの通知。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:224。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。 event_idClassVar[EventId] -イベントの種類を区別するID。クラス変数。 固定値:EventId.BATTERY_CUT_OFF。 timestamp_msint -イベントが起きた本体内の時刻。単位はms。パソコンの日時ではありません。32bit値なので長時間では周回します。
戻り値・取得値: TrainMsgEventLowBatteryCutOff
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
TrainMsgEventChargingStateChanged TrainMsgEventChargingStateChanged(raw_packet, timestamp_ms, is_charging)充電器の接続・切断に伴う通知。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:224。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。 event_idClassVar[EventId] -イベントの種類を区別するID。クラス変数。 固定値:EventId.CHARGING_STATE_CHANGED。 timestamp_msint -イベントが起きた本体内の時刻。単位はms。パソコンの日時ではありません。32bit値なので長時間では周回します。 is_chargingbool -充電状態。Trueは充電あり。
戻り値・取得値: TrainMsgEventChargingStateChanged
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
TrainMsgEventButtonPressDetected TrainMsgEventButtonPressDetected(raw_packet, timestamp_ms, button_press_type)本体ボタンの短押し・長押しの通知。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:224。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。 event_idClassVar[EventId] -イベントの種類を区別するID。クラス変数。 固定値:EventId.BUTTON_PRESS_DETECTED。 timestamp_msint -イベントが起きた本体内の時刻。単位はms。パソコンの日時ではありません。32bit値なので長時間では周回します。 button_press_typeButtonPress -SHORTまたはLONG。本体の短押し・長押しの機能は残る。
戻り値・取得値: TrainMsgEventButtonPressDetected
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
通知を受けても短押しの発進・停止と長押しの電源オフは行われます。
TrainMsgEventSnapCommandDetected TrainMsgEventSnapCommandDetected(raw_packet, timestamp_ms, snap_counter, colors)本体のスナップ動作の有効・無効にかかわらず届く検出通知。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:224。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。 event_idClassVar[EventId] -イベントの種類を区別するID。クラス変数。 固定値:EventId.SNAP_COMMAND_DETECTED。 timestamp_msint -イベントが起きた本体内の時刻。単位はms。パソコンの日時ではありません。32bit値なので長時間では周回します。 snap_counterint -スナップ通知の照合用counter。0〜255で周回。永久に一意なIDではない。 colorsSnapCommand -4要素のSnapCommand。先頭はWHITEまたはCYAN、短い列はBLACKで補われる。
戻り値・取得値: TrainMsgEventSnapCommandDetected
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
TrainMsgEventSnapCommandExecuted TrainMsgEventSnapCommandExecuted(raw_packet, timestamp_ms, snap_counter, colors)スナップ動作を開始した通知。動作完了の通知ではありません。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:224。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。 event_idClassVar[EventId] -イベントの種類を区別するID。クラス変数。 固定値:EventId.SNAP_COMMAND_EXECUTED。 timestamp_msint -イベントが起きた本体内の時刻。単位はms。パソコンの日時ではありません。32bit値なので長時間では周回します。 snap_counterint -スナップ通知の照合用counter。0〜255で周回。永久に一意なIDではない。 colorsSnapCommand -4要素のSnapCommand。先頭はWHITEまたはCYAN、短い列はBLACKで補われる。
戻り値・取得値: TrainMsgEventSnapCommandExecuted
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
set_snap_command_execution(False)の間は発生しません。検出イベントとは別です。
TrainMsgEventSensorColorChangedBase TrainMsgEventSensorColorChangedBase(raw_packet, timestamp_ms, color)前後の色変化型に共通する項目。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:224。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。 event_idClassVar[EventId] -イベントの種類を区別するID。クラス変数。 timestamp_msint -イベントが起きた本体内の時刻。単位はms。パソコンの日時ではありません。32bit値なので長時間では周回します。 sensorClassVar[ColorSensor] -色センサーの識別。クラス変数。 colorSnapColorValue -受け付けられた単一の色。SnapColorValue。
戻り値・取得値: TrainMsgEventSensorColorChangedBase
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
基底型です。実際の受信は具体的な型で判別します。
TrainMsgEventFrontColorChanged TrainMsgEventFrontColorChanged(raw_packet, timestamp_ms, color)前側の色が本体に受け付けられたときの通知。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:224。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。 event_idClassVar[EventId] -イベントの種類を区別するID。クラス変数。 固定値:EventId.FRONT_COLOR_CHANGED。 timestamp_msint -イベントが起きた本体内の時刻。単位はms。パソコンの日時ではありません。32bit値なので長時間では周回します。 sensorClassVar[ColorSensor] -色センサーの識別。クラス変数。 固定値:ColorSensor.FRONT。 colorSnapColorValue -受け付けられた単一の色。SnapColorValue。
戻り値・取得値: TrainMsgEventFrontColorChanged
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
TrainMsgEventBackColorChanged TrainMsgEventBackColorChanged(raw_packet, timestamp_ms, color)後側の色が本体に受け付けられたときの通知。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:224。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。 event_idClassVar[EventId] -イベントの種類を区別するID。クラス変数。 固定値:EventId.BACK_COLOR_CHANGED。 timestamp_msint -イベントが起きた本体内の時刻。単位はms。パソコンの日時ではありません。32bit値なので長時間では周回します。 sensorClassVar[ColorSensor] -色センサーの識別。クラス変数。 固定値:ColorSensor.BACK。 colorSnapColorValue -受け付けられた単一の色。SnapColorValue。
戻り値・取得値: TrainMsgEventBackColorChanged
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
TrainMsgEventSplitDecision TrainMsgEventSplitDecision(raw_packet, timestamp_ms, decision)分岐を検出し、進路が決まった後の通知。
引数・フィールド 名前・型 既定値 意味・制限 command_idClassVar[int] -受信型を区別する命令ID。クラス変数。 固定値:224。 raw_packet'TrainBlePacket' -元の受信パケット。TrainBlePacket。 event_idClassVar[EventId] -イベントの種類を区別するID。クラス変数。 固定値:EventId.SPLIT_DECISION。 timestamp_msint -イベントが起きた本体内の時刻。単位はms。パソコンの日時ではありません。32bit値なので長時間では周回します。 decisionSteeringDecision -分岐の検出後に決まった進路。SteeringDecision。
戻り値・取得値: TrainMsgEventSplitDecision
通常は本体から届いたデータを読むために使い、操作命令として自分で作る必要はありません。
Versionの版番号 TrainMsgVersionDetail.Version(major, minor, patch=None)BLE APIと本体ソフトの版番号を表します。
引数・フィールド 名前・型 既定値 意味・制限 majorint -主版の番号。 minorint -副版の番号。 patchint | None None修正版の番号。BLE APIの版ではNoneの場合があります。
戻り値・取得値: TrainMsgVersionDetail.Version
str(version)はpatchがNoneなら主版.副版、それ以外は主版.副版.修正版になります。
受信したVersionは読み取り専用です。
TrainMsgEventSensorColorChangedの型集合 TrainMsgEventSensorColorChanged複数の受信型をまとめたUnionの別名です。
引数・フィールド 名前・型 既定値 意味・制限 TrainMsgEventFrontColorChangedtype -この型集合に含まれる受信型。 TrainMsgEventBackColorChangedtype -この型集合に含まれる受信型。
戻り値・取得値: 型の別名
この名前で受信データを生成するものではありません。型注釈に使い、個別の判定には具体的な受信クラスを使います。
TrainMsgEventの型集合 TrainMsgEvent複数の受信型をまとめたUnionの別名です。
引数・フィールド 名前・型 既定値 意味・制限 TrainMsgEventUnknowntype -この型集合に含まれる受信型。 TrainMsgEventMovementDirectionChangedtype -この型集合に含まれる受信型。 TrainMsgEventLowBatterytype -この型集合に含まれる受信型。 TrainMsgEventLowBatteryCutOfftype -この型集合に含まれる受信型。 TrainMsgEventChargingStateChangedtype -この型集合に含まれる受信型。 TrainMsgEventButtonPressDetectedtype -この型集合に含まれる受信型。 TrainMsgEventSnapCommandExecutedtype -この型集合に含まれる受信型。 TrainMsgEventFrontColorChangedtype -この型集合に含まれる受信型。 TrainMsgEventBackColorChangedtype -この型集合に含まれる受信型。 TrainMsgEventSnapCommandDetectedtype -この型集合に含まれる受信型。 TrainMsgEventSplitDecisiontype -この型集合に含まれる受信型。
戻り値・取得値: 型の別名
この名前で受信データを生成するものではありません。型注釈に使い、個別の判定には具体的な受信クラスを使います。
TrainMsgの型集合 TrainMsg複数の受信型をまとめたUnionの別名です。
引数・フィールド 名前・型 既定値 意味・制限 TrainMsgUnknowntype -この型集合に含まれる受信型。 TrainMsgMalformedtype -この型集合に含まれる受信型。 TrainMsgMacAddresstype -この型集合に含まれる受信型。 TrainMsgTrainUuidtype -この型集合に含まれる受信型。 TrainMsgVersionDetailtype -この型集合に含まれる受信型。 TrainMsgStatsLifetimeOdometertype -この型集合に含まれる受信型。 TrainMsgMovementtype -この型集合に含まれる受信型。 TrainMsgEventUnknowntype -この型集合に含まれる受信型。 TrainMsgEventMovementDirectionChangedtype -この型集合に含まれる受信型。 TrainMsgEventLowBatterytype -この型集合に含まれる受信型。 TrainMsgEventLowBatteryCutOfftype -この型集合に含まれる受信型。 TrainMsgEventChargingStateChangedtype -この型集合に含まれる受信型。 TrainMsgEventButtonPressDetectedtype -この型集合に含まれる受信型。 TrainMsgEventSnapCommandExecutedtype -この型集合に含まれる受信型。 TrainMsgEventFrontColorChangedtype -この型集合に含まれる受信型。 TrainMsgEventBackColorChangedtype -この型集合に含まれる受信型。 TrainMsgEventSnapCommandDetectedtype -この型集合に含まれる受信型。 TrainMsgEventSplitDecisiontype -この型集合に含まれる受信型。
戻り値・取得値: 型の別名
この名前で受信データを生成するものではありません。型注釈に使い、個別の判定には具体的な受信クラスを使います。
本体の版を文字列にする str(version)版番号をピリオドで区切った文字列にします。
戻り値・取得値: str
patchがNoneならmajor.minor、指定されていればmajor.minor.patchの形式です。Pythonパッケージの版を取得する処理ではありません。
色列を扱うタプル SnapCommand(iterable=())色を順番に保持するタプルの派生型です。
引数・フィールド 名前・型 既定値 意味・制限 iterableIterable[SnapColorValue] ()保持する色の列。受信したcolorsは4色です。
戻り値・取得値: SnapCommand
本体からの受信はWHITEまたはCYANで始まる4色で、短い列はBLACKで補われます。
自分で生成するコンストラクターは、要素数や色の順序を自動検証したり4色へ補完したりしません。
色列を完全一致で比較する command.__eq__(o) / command == colors比較対象を黒で補い、4色の完全一致を調べます。
引数・フィールド 名前・型 既定値 意味・制限 oobject -比較対象のタプルまたは反復可能な色の列。
戻り値・取得値: bool
タプル以外の反復可能な列もタプルへ変換します。比較側は黒3つを追加して先頭4要素を使います。
比較対象が5色以上でも、先頭4色より後ろを比較しません。意図した長さを渡します。
先頭一致だけを調べる場合はstarts_with()を使います。
使用例 コピー
from intelino.trainlib.messages import SnapCommand
from intelino.trainlib.enums import SnapColorValue as C
command = SnapCommand((C.WHITE, C.RED, C.BLACK, C.BLACK))
print(command == (C.WHITE, C.RED))色列の先頭一致を調べる command.starts_with(colors, *args)指定した色の並びが、色列の先頭と一致するか調べます。
引数・フィールド 名前・型 既定値 意味・制限 colorstuple[SnapColorValue, ...] | SnapColorValue -先頭から比較する色。タプル、または色を複数の引数として渡します。 *argsSnapColorValue -colorsに続けて渡す色。
戻り値・取得値: bool
start_with()とstarts_with()は同じ関数です。
タプル1つ、または色を複数の位置引数で渡します。完全一致と異なり、黒で補完しません。
色列の先頭一致を調べる command.start_with(colors, *args)指定した色の並びが、色列の先頭と一致するか調べます。
引数・フィールド 名前・型 既定値 意味・制限 colorstuple[SnapColorValue, ...] | SnapColorValue -先頭から比較する色。タプル、または色を複数の引数として渡します。 *argsSnapColorValue -colorsに続けて渡す色。
戻り値・取得値: bool
start_with()とstarts_with()は同じ関数です。
タプル1つ、または色を複数の位置引数で渡します。完全一致と異なり、黒で補完しません。
色列を文字列にする str(command)各色を名前へ変換し、タプル形式で表示します。
戻り値・取得値: str
表示用の文字列です。色の比較にはSnapColorValueを使います。
通常・非同期コールバックを受けるObserver AsyncObserver(on_next=None, on_error=None, on_completed=None)Rxの通知先として、通常関数とasync関数を受け付けます。
引数・フィールド 名前・型 既定値 意味・制限 on_nextOptional[Union[typing.OnNext, AsyncOnNext[_T]]] None値を受け取る関数。引数は受信した値1つ。通常関数とasync関数に対応。 on_errorOptional[Union[typing.OnError, AsyncOnError]] Noneエラーを受け取る関数。引数は例外1つ。通常関数とasync関数に対応。 on_completedOptional[Union[typing.OnCompleted, AsyncOnCompleted]] None通知の完了時に呼ぶ引数なしの関数。通常関数とasync関数に対応。
戻り値・取得値: AsyncObserver
実行中のイベントループがあれば、async コールバックをcreate_task()で開始します。通知ごとに処理が重なる場合があります。
実行中のループがなければasyncio.run()でコールバックを実行します。
subscribe()の返値のdispose()は、既に開始したコールバック タスクの完了待ちや取消しを行いません。タスクの終了管理は自分で行います。
RxのObserverを継承し、on_next(value)・on_error(error)・on_completed()・dispose()などの基本操作を使えます。
コールバックの種類を判定する is_coroutine_function(callback)async defで定義した関数ならTrueを返します。
引数・フィールド 名前・型 既定値 意味・制限 callbackCallable -判定する関数。async defで定義した関数かどうかを調べます。
戻り値・取得値: bool
内部ではinspect.iscoroutinefunction()の結果を使います。通常関数が実行時に返すawaitで待てるオブジェクトを調べる関数ではありません。
コールバックの種類を判定する is_not_coroutine_function(callback)async defで定義した関数でなければTrueを返します。
引数・フィールド 名前・型 既定値 意味・制限 callbackCallable -判定する関数。async defで定義した関数かどうかを調べます。
戻り値・取得値: bool
内部ではinspect.iscoroutinefunction()の結果を使います。通常関数が実行時に返すawaitで待てるオブジェクトを調べる関数ではありません。
AsyncOnNext AsyncOnNext値1つを受け取るasync コールバックの型。
戻り値・取得値: Callable[[T], Coroutine[Any, Any, None]]
helpersにある型の別名です。関数を実行する操作ではありません。
AsyncOnError AsyncOnError例外1つを受け取るasync コールバックの型。
戻り値・取得値: Callable[[Exception], Coroutine[Any, Any, None]]
helpersにある型の別名です。関数を実行する操作ではありません。
AsyncOnCompleted AsyncOnCompleted完了を受け取る引数なしのasync コールバックの型。
戻り値・取得値: Callable[[], Coroutine[Any, Any, None]]
helpersにある型の別名です。関数を実行する操作ではありません。
生のパケットを作る TrainBlePacket(data)受信または送信のバイト列を保持します。
引数・フィールド 名前・型 既定値 意味・制限 dataUnion[bytearray, Iterable[int]] -ヘッダー2バイトとデータ本体。bytearrayまたは整数列。
戻り値・取得値: TrainBlePacket
整数列はint(value) & 0xFFで各バイトへ変換されます。範囲外を検出・拒否するものではありません。
bytearrayを渡した場合はコピーせず、そのオブジェクトを保持します。dataを書き換えるとパケットも変わります。
パケットのバイト列 packet.dataヘッダーとデータ本体を含むbytearray。
戻り値・取得値: bytearray
読み取り専用ではありません。変更後のデータを解析する際は長さと内容を自分で管理します。
パケットの命令ID packet.command先頭バイト。空のパケットは0。
戻り値・取得値: int
受信型のClassVarであるcommand_idとは別に、元の受信IDを読みます。
パケットのデータ本体 packet.payload先頭2バイトを除いたデータ列。
戻り値・取得値: bytearray
ヘッダーの長さ値で切り取りません。保持している全データ本体のコピーを返します。
パケットを受信型へ解釈する packet.msg現在のパケットから、対応する受信型を作ります。
戻り値・取得値: TrainMsg
TrainlibErrorの場合はTrainMsgMalformedへ置き換えます。未知の命令IDはTrainMsgUnknown、未知のイベントはTrainMsgEventUnknownです。
ValueErrorなどの別系列の例外は置き換えずに伝わる場合があります。解釈結果はアクセスごとに作ります。
期待する型で解釈する packet.get_interpreted_message(msg_type)指定した受信型としてパケットを解釈します。
引数・フィールド 名前・型 既定値 意味・制限 msg_typeType[T] -解釈後に期待する受信データのクラス。
戻り値・取得値: msg_typeの受信データ
型が違えばTrainMessageTypeError。解析失敗の例外をTrainMsgMalformedへ置き換える関数ではありません。
パケットを16進数表示する packet.make_hex_string(with_header=True, delimiter=':', with_garbage=False)区切り付きの16進数文字列へ変換します。
引数・フィールド 名前・型 既定値 意味・制限 with_headerbool TrueTrueで命令IDと長さの2バイトを含めます。 delimiterstr ':'16進数の各バイトの区切り文字。 with_garbagebool FalseTrueなら長さバイトによる切り取りをせず、対象の全バイトを出力します。
戻り値・取得値: str
with_garbage=Falseでは、対象のデータ列を第2バイトの長さ値で切り取ります。
この版はwith_header=Trueでもヘッダー込みの列に同じ長さを適用するため、末尾の2バイトが省かれ得ます。全バイトを見る場合はwith_garbage=Trueを使います。
命令IDからパケットを作る TrainBlePacket.from_command(command_id, payload=None, length=None)命令ID・データ長・データ本体を並べたパケットを作ります。
引数・フィールド 名前・型 既定値 意味・制限 command_idint -送信する命令のID。0〜255の整数。 payloadIterable[int] | None None命令のデータ列。各要素は0〜255。リストまたはタプルを使います。Noneは空のデータ列。 lengthOptional[int] Noneヘッダーの長さバイトを直接指定。Noneならデータ列の要素数。
戻り値・取得値: TrainBlePacket
length=Noneではlen(リスト(payload))を求めてからpayloadを展開します。ジェネレーターはここで消費されるため、リストまたはタプルを使います。
lengthを指定してもデータ本体を切り取ったり補完したりしません。指定長と要素数の一致は自分で確認します。
16進数文字列からパケットを作る TrainBlePacket.from_hex_string(data_string)コロン区切りの各値を16進数として読みます。
引数・フィールド 名前・型 既定値 意味・制限 data_stringstr -コロン区切りの16進数。例:B1:04:01:00:50:FF。
戻り値・取得値: TrainBlePacket
形式が不正ならValueErrorになる場合があります。読み取った値は8bit化され、ヘッダーの整合性は自動検証しません。
パケットのstr表示 str(packet)全バイトをコロン区切りの16進数で表示します。
戻り値・取得値: str
make_hex_string()の既定の長さ切り取りとは異なり、保持している全バイトを含めます。
パケットのrepr表示 repr(packet)クラス名と全バイトの16進数を表示します。
戻り値・取得値: str
make_hex_string()の既定の長さ切り取りとは異なり、保持している全バイトを含めます。
TrainFactoryの役割 TrainFactory探索と通信オブジェクトの生成を行うクラス。
戻り値・取得値: TrainFactory
通常の列車操作はTrainScannerとTrainを使います。このクラスは通信・解析の拡張用です。
低レベルの単一生成 await TrainFactory.create_train(device_identifier=None, connect=True, **kwargs)接続先を検出し、非同期版Trainを生成します。
引数・フィールド 名前・型 既定値 意味・制限 device_identifierstr None接続先のBluetoothアドレスまたはMacのUUID。省略時は検出した最初の1台。 connectbool TrueTrueで接続してから返す。Falseで未接続の結果を返す。 **kwargsobject {}通信層へ渡す追加の名前付き引数。利用する通信層の対応範囲に従います。
戻り値・取得値: Train | None
intelino.trainlib_async.train_factoryから読み込みます。通常はTrainScanner.get_train()を使います。
名前付き引数nameを指定すると、指定アドレスの名前検出を省略できます。timeout・adapterなどは通信層へ渡します。
該当デバイスがない、または接続時にBleakErrorが起きた場合はNoneを返します。TrainNotFoundErrorへ変換するのはTrainScannerです。
timeoutを渡さない場合の単一探索は内部で10秒が既定です。
低レベルの複数生成 await TrainFactory.create_trains(count=None, timeout=5.0, connect=True, **kwargs)時間または検出台数を目安に、非同期版Trainのリストを生成します。
引数・フィールド 名前・型 既定値 意味・制限 countint None検出を終える台数の目安。Noneまたは0なら時間内の全台。 timeoutfloat 5.0検出または応答を待つ時間。単位は秒。 connectbool TrueTrueで接続してから返す。Falseで未接続の結果を返す。 **kwargsobject {}通信層へ渡す追加の名前付き引数。利用する通信層の対応範囲に従います。
戻り値・取得値: list[Train]
intelino.trainlib_async.train_factoryから読み込みます。通常はTrainScanner.get_trains()を使います。
必要台数の不足をTrainNotFoundErrorにする処理はTrainScanner側です。
各接続でBleakErrorが起きた列車はリストから除かれます。戻り順や厳密な上限を前提にしません。
通信デバイスを生成する TrainBleDevice(driver)通信ドライバーへ受信と切断のコールバックを登録します。
引数・フィールド 名前・型 既定値 意味・制限 driverTrainBleDriver -応答と切断のコールバックを登録できる通信ドライバー。
戻り値・取得値: TrainBleDevice
intelino.trainlib_async.train_ble_deviceから読み込みます。通常はTrainScannerが生成します。
初期の接続状態はFalse。受信と送信のSubject、接続状態のBehaviorSubjectを作ります。
通信デバイスのID device.idドライバーの接続先識別を返します。
戻り値・取得値: str
通信デバイスの名前 device.nameドライバーの名前を返します。
戻り値・取得値: str
通信デバイスの状態通知 device.connection_status接続状態をboolのObservableとして返します。
戻り値・取得値: Observable[bool]
現在値を通知し、連続した同じ値はまとめます。イベントループに対応するスケジューラーを使います。
このSDKとBleak 3.0.2の組み合わせでは、切断の返値Noneをnotで反転してTrueを保持する経路があります。is_connectedやconnection_statusだけを切断の確認に使いません。
通信デバイスの保持状態 device.is_connected最後に保持した接続状態を返します。
戻り値・取得値: bool
このSDKとBleak 3.0.2の組み合わせでは、切断の返値Noneをnotで反転してTrueを保持する経路があります。is_connectedやconnection_statusだけを切断の確認に使いません。
通信デバイスの生受信通知 device.notifications受信パケットを解釈前のまま通知します。
戻り値・取得値: Observable[TrainBlePacket]
Train.notificationsはこのパケットをTrainMsgへ変換します。こちらはパケット単位の拡張用です。
通信デバイスの送信通知 device.writesドライバーの書込み処理後に送信パケットを通知します。
戻り値・取得値: Observable[TrainBlePacket]
本体の操作完了通知ではありません。
通信ドライバーへ接続する await device.connect(force=False, **kwargs)ドライバーへ接続し、その返値を接続状態へ反映します。
引数・フィールド 名前・型 既定値 意味・制限 forcebool False接続状態がTrueでも、ドライバーの接続処理を呼び直すならTrue。 **kwargsobject {}通信層へ渡す追加の名前付き引数。利用する通信層の対応範囲に従います。
戻り値・取得値: bool
接続状態がTrueでforce=FalseならTrueを返して接続処理を省略します。
再接続時の状態不一致にはforce=Trueで接続処理を呼び直します。
通信ドライバーから切断する await device.disconnect()ドライバーの切断処理の返値を返します。
戻り値・取得値: 通信driverの返値(boolまたはNone)
このSDKとBleak 3.0.2の組み合わせでは、切断の返値Noneをnotで反転してTrueを保持する経路があります。is_connectedやconnection_statusだけを切断の確認に使いません。
この拡張用の関数には、Train.disconnect()が行う切断前0.1秒の追加待機はありません。
パケットをドライバーへ送る await device.send_command(data)パケットを書き込んだ後、writesへ同じパケットを通知します。
引数・フィールド 名前・型 既定値 意味・制限 dataTrainBlePacket -ヘッダーを含む送信パケット。
戻り値・取得値: None
dataはTrainBlePacketです。応答待ちは行いません。
パケット送信後に応答を待つ await device.send_command_with_response(data, timeout=3.0)同じ命令IDの最初の応答を待ちます。
引数・フィールド 名前・型 既定値 意味・制限 dataTrainBlePacket -ヘッダーを含む送信パケット。 timeoutfloat 3.0検出または応答を待つ時間。単位は秒。
戻り値・取得値: TrainBlePacket
timeoutは既定3秒。時間内に応答がなければTimeoutErrorが伝わります。
同じ命令IDを並行して要求する場合の応答対応を保証する識別子はありません。
MessageBuilderの役割 MessageBuilder受信パケットからデータ型を作る解析クラス。
戻り値・取得値: MessageBuilder
通常の列車操作はTrainScannerとTrainを使います。このクラスは通信・解析の拡張用です。
未知受信データを作る MessageBuilder.create_unknown(packet)元のパケットを保持した未知型を作ります。
引数・フィールド 名前・型 既定値 意味・制限 packet'TrainBlePacket' -解釈する受信パケット。
戻り値・取得値: TrainMsgUnknown
intelino.trainlib_async.message_builderから読み込みます。低レベル解析の補助です。
不正受信データを作る MessageBuilder.create_malformed(packet)元のパケットを保持した不正型を作ります。
引数・フィールド 名前・型 既定値 意味・制限 packet'TrainBlePacket' -解釈する受信パケット。
戻り値・取得値: TrainMsgMalformed
この関数自体がデータの不正を検出するのではなく、不正型を作るための補助です。
パケットを解析する MessageBuilder.create(packet)命令IDとイベントIDを基に、対応する受信データクラスを作ります。
引数・フィールド 名前・型 既定値 意味・制限 packet'TrainBlePacket' -解釈する受信パケット。
戻り値・取得値: TrainMsg
未知のIDは未知型を返します。解析エラーを不正型へ置き換えるのはpacket.msg側です。
必要なデータ長を確認し、数値をビッグエンディアンで読みます。速度・距離・一時停止時間を受信型の単位へ換算します。
この版ではデータの構造解析の失敗は主にTrainMessageLengthErrorへ変換されます。列挙値への変換ではValueErrorが伝わる場合があります。
TrainBleDriverの役割 TrainBleDriver通信ドライバーの抽象基底クラス。
戻り値・取得値: TrainBleDriver
通常の列車操作はTrainScannerとTrainを使います。このクラスは通信・解析の拡張用です。
直接生成するための具象クラスではありません。
ドライバーの接続インターフェース await driver.connect(**kwargs)派生ドライバーが実装する非同期接続です。
引数・フィールド 名前・型 既定値 意味・制限 **kwargsobject {}通信層へ渡す追加の名前付き引数。利用する通信層の対応範囲に従います。
戻り値・取得値: bool
抽象メソッドです。実装しない派生型は生成できません。
ドライバーの切断インターフェース await driver.disconnect()派生ドライバーが実装する非同期切断です。
戻り値・取得値: bool(インターフェース上の型)
抽象メソッドです。実際の返値は派生ドライバーと通信ライブラリの版に依存します。
ドライバーの接続状態インターフェース driver.is_connected派生ドライバーが実際の通信状態を返します。
戻り値・取得値: bool
基底実装はNotImplementedErrorを出します。
ドライバーのIDインターフェース driver.id派生ドライバーが接続先のIDを返します。
戻り値・取得値: str
基底実装はNotImplementedErrorを出します。
ドライバーの名前インターフェース driver.name派生ドライバーが接続先の名前を返します。
戻り値・取得値: str
基底実装はNotImplementedErrorを出します。
ドライバーの元オブジェクト driver.raw派生ドライバーが通信ライブラリの元オブジェクトを返します。
戻り値・取得値: object
基底実装はNotImplementedErrorを出します。
ドライバーの送信インターフェース await driver.send_command(data)派生ドライバーがTrainBlePacketを書き込みます。
引数・フィールド 名前・型 既定値 意味・制限 dataTrainBlePacket -ヘッダーを含む送信パケット。
戻り値・取得値: None
抽象メソッドです。
ドライバーの受信コールバック登録 driver.set_response_listener(callback)派生ドライバーがパケット受信用のコールバックを保持します。
引数・フィールド 名前・型 既定値 意味・制限 callbackCallable[[TrainBlePacket], None] -登録するコールバック。同じ種類の前のコールバックは置き換わる。
戻り値・取得値: None
抽象メソッドです。コールバックの引数はTrainBlePacket1つです。
ドライバーの切断コールバック登録 driver.set_disconnect_listener(callback)派生ドライバーが切断時のコールバックを保持します。
引数・フィールド 名前・型 既定値 意味・制限 callbackCallable[[], None] -登録するコールバック。同じ種類の前のコールバックは置き換わる。
戻り値・取得値: None
抽象メソッドです。
COMMAND_SERVICE TrainBleDriver.COMMAND_SERVICEGATTのサービスを識別する固定UUID。
戻り値・取得値: str
固定値:43dfd9e9-17e5-4860-803d-9df8999b0d7a。
送信系はCOMMAND、受信系はRESPONSEです。BleakDriverもこの基底の固定値を使います。
COMMAND_CHARACTERISTIC TrainBleDriver.COMMAND_CHARACTERISTICGATTのキャラクタリスティックを識別する固定UUID。
戻り値・取得値: str
固定値:40c540d0-344c-4d0d-a1da-9cc260b82d43。
送信系はCOMMAND、受信系はRESPONSEです。BleakDriverもこの基底の固定値を使います。
RESPONSE_SERVICE TrainBleDriver.RESPONSE_SERVICEGATTのサービスを識別する固定UUID。
戻り値・取得値: str
固定値:4dad4922-5c86-4ba7-a2e1-0f240537bd08。
送信系はCOMMAND、受信系はRESPONSEです。BleakDriverもこの基底の固定値を使います。
RESPONSE_CHARACTERISTIC TrainBleDriver.RESPONSE_CHARACTERISTICGATTのキャラクタリスティックを識別する固定UUID。
戻り値・取得値: str
固定値:a4b80869-a84c-4160-a3e0-72fa58ff480e。
送信系はCOMMAND、受信系はRESPONSEです。BleakDriverもこの基底の固定値を使います。
ドライバーのstr表示 str(driver)クラス名・列車名・IDを文字列にします。
戻り値・取得値: str
BleakDriverもこの基底の表示を継承します。
ドライバーのrepr表示 repr(driver)クラス名・列車名・IDと元のオブジェクト表現を文字列にします。
戻り値・取得値: str
BleakDriverもこの基底の表示を継承します。
Bleakの通信ドライバーを生成する BleakDriver(address_or_ble_device, name=None, **kwargs)接続先からBleakClientを作ります。
引数・フィールド 名前・型 既定値 意味・制限 address_or_ble_deviceUnion[BLEDevice, str] -Bluetooth接続先のアドレスまたはBleakのBLEDevice。 namestr None通信オブジェクトが保持する名前。Noneなら取得した名前または既定の名前。 **kwargsobject {}通信層へ渡す追加の名前付き引数。利用する通信層の対応範囲に従います。
戻り値・取得値: BleakDriver
intelino.trainlib_async.drivers.bleak_driverから読み込みます。通常はTrainScannerが生成します。
コンストラクターの追加引数はBleakClientへ渡します。ここで本体へ接続はしません。
Bleakの接続と受信を開始する await driver.connect(**kwargs)BleakClientへ接続し、受信キャラクタリスティックの通知を開始します。
引数・フィールド 名前・型 既定値 意味・制限 **kwargsobject {}通信層へ渡す追加の名前付き引数。利用する通信層の対応範囲に従います。
戻り値・取得値: bool
接続後のBleakClient.is_connectedを返します。
Bleakの受信を止めて切断する await driver.disconnect()接続中なら通知を停止し、その後にBleakClientを切断します。
戻り値・取得値: BleakClient.disconnect()の返値
ソースの型注釈はboolですが、Bleak 3.0.2の返値はNoneです。SDKの接続状態保持との不一致に注意します。
Bleakの現在接続状態 driver.is_connectedBleakClient.is_connectedを返します。
戻り値・取得値: bool
TrainBleDeviceが保持する状態とは別に、通信ライブラリの現在値を読みます。
Bleakの接続先ID driver.idBleakClient.addressを返します。
戻り値・取得値: str
ドライバーが保持する名前 driver.name初期化時に取得または指定した名前を返します。
戻り値・取得値: str
本体へ保存した別名ではありません。
BleakClientを取得する driver.rawドライバーが持つBleakClientを返します。
戻り値・取得値: BleakClient
直接操作する場合はSDKの通知や接続状態との整合性を自分で管理します。
Bleakでパケットを書き込む await driver.send_command(data)command キャラクタリスティックへGATTの書込みを行います。
引数・フィールド 名前・型 既定値 意味・制限 dataTrainBlePacket -ヘッダーを含む送信パケット。
戻り値・取得値: None
空のパケットは書き込みません。
応答付きの書込みを使う目的は書込みの終了を待つことです。本体の意味上の応答は別の通知で扱います。
Bleakの受信コールバックを設定する driver.set_response_listener(callback)受信パケットを渡すコールバックを保持します。
引数・フィールド 名前・型 既定値 意味・制限 callbackCallable[[TrainBlePacket], Union[None, Awaitable[None]]] -登録するコールバック。同じ種類の前のコールバックは置き換わる。
戻り値・取得値: None
通常関数なら直接呼び、async関数ならcreate_task()で開始します。既に始まったタスクの完了管理は別です。
Bleakの切断コールバックを設定する driver.set_disconnect_listener(callback)切断時に呼ぶコールバックを保持します。
引数・フィールド 名前・型 既定値 意味・制限 callbackCallable[[], None] -登録するコールバック。同じ種類の前のコールバックは置き換わる。
戻り値・取得値: None
型注釈は引数なしですが、Bleakの切断コールバックの実引数がそのまま渡されます。拡張用に直接登録する際は、*argsを受けられる関数を使えます。
イベント共通領域の長さ MessageBuilder.EVENT_PAYLOAD_OFFSETイベントID1バイトと本体時刻4バイトの共通領域。
戻り値・取得値: int
固定値は5。イベント固有のデータは、この共通領域の後ろから解析します。
解析中のイベント共通データ MessageBuilder.EventCommonData(id, timestamp_ms)イベントの種類と本体時刻を保持するNamedTuple。
引数・フィールド 名前・型 既定値 意味・制限 idint -生のイベントID。 timestamp_msint -本体内のイベント発生時刻。単位はms。
戻り値・取得値: MessageBuilder.EventCommonData
データ解析の内部補助です。最終的な受信型ではevent_idとtimestamp_msを読みます。
解析中のid event_common.id解析中の生のイベントID。
戻り値・取得値: int
EventCommonDataの読み取り専用フィールドです。
解析中のtimestamp_ms event_common.timestamp_ms解析中の本体時刻。単位はms。
戻り値・取得値: int
EventCommonDataの読み取り専用フィールドです。