🧪 mocker.py の設計と連携可能性の整理#
✅ 目的と背景#
実機がない環境でも
haniwers daq,haniwers scanの機能を開発・テスト・デモできるようにする。実験データやスキャンデータの取得処理(
sampler.py,scan)に自然に差し替えて利用可能とする。特に リアルタイムモニター の動作デモで 測定間隔を再現した再生ができるようにする。
📦 mocker.py に追加する主なクラス・関数#
MockSerialFileBackedMockSerialcreate_mock_devicecreate_mock_from_fileload_csv_linesparse_timestampscompute_time_deltasis_mock_portinject_noisedrop_columns
🛠 主な2種類のモックデバイス#
クラス名 |
用途 |
特徴 |
|---|---|---|
|
実CSVの再利用 |
実データの再現、タイミングの復元、シャッフル対応など |
|
ランダム生成 |
自由なダミーデータ生成に最適 |
🔁 実データの再利用と拡張オプション#
シャッフル: 実データの順序をランダム化して使用
スピード変更:
speed=2.0で倍速再生、speed=0.0で sleep 無効化ループ再生: ファイル末尾で先頭に戻るオプションも検討可能
ノイズ追加 / 列の削除: より多様なテストパターンの再現に対応可能
🔗 sampler.py, scan, daq との統合性#
MockSerial,RandomMockSerialはserial.Serialと同等のインターフェースを提供sampler.sample()やfor_events(),for_duration()などの既存関数に そのまま渡せるrun_session()のdevice引数に渡すことでhaniwers daqやhaniwers scanも動作可能実際の接続処理
device.connect()でport == "mock"などによりモック自動切り替えも可能
💡 将来的な拡張アイデア#
拡張項目 |
説明 |
|---|---|
|
|
エラーパターン生成 |
欠損データ、異常ADC、時間逆転なども再現可能に |
|
補助関数群を分けてテスト性・再利用性を向上 |
✅ 結論#
mocker.pyはsampler,scan,daqとシームレスに統合可能な設計実データ再利用・測定タイミングの再現により、リアルタイムモニターやスレッショルドスキャンの動作確認が実用的に可能
開発・CI・ドキュメント用途でのデモにおいても、非常に有用なモジュールになる