VC-1DMX16SW (SW-16LCD) Webシミュレーター 実機ソース準拠 v0.2

照明用DMXコントローラ VC-1DMX16SW(社内開発呼称 Mr_Dmx_v01操作ガイド参照)の実機LCD画面(320×240・ILI9341)を、ファームウェア実装(tools/simulator/font5x7.c / font_mono9.c)から抽出したビットマップフォントとレイアウト座標でそのまま再現しています。
ボタンを押すと、実機と同じキーコード判定・状態遷移(グループ/シーン選択・AUTO・LOCK等)がその場で動きます。

実機LCD画面(320×240 等倍再現)

拡大:
ドットギャップ: 0%

操作パネル

操作の目安: 18=シーン再生 / Ctrl+数字=グループ選択(8×8=64) / W+14=表示ページ / R+数字=自動シーケンス / ShiftWR=LOCK。Shift/Ctrl/W/Rは先に押すと点灯(arm)し、続く数字/矢印で確定する。

このシミュレーターの再現方針

実機ファームウェア(Mr_Dmx_v01)のソースコード(src/lcd.csrc/lcd.hsrc/scene_data.c)を直接読み、座標・書式・フォントアセットを移植しました。 写真からの目視推測ではなく、ROW1_Y=10等の実座標マクロと print_version/pr_auto_sw/print_key_hexdata/print_Radd/print_add_sub/print_scene_no_sub の各関数のsprintf書式をそのまま使用しています。 5×7ドット(font5x7.c、HEXグリッド/キー値/AUTO表示用)と11×14ドット(font_mono9.c、バージョン/アドレス表示用)は実機と同一のビットマップです。 RGB565→RGB888変換は実機LCDコントローラのビット複製方式(r8=(r5<<3)|(r5>>2)等)をそのまま使用。 ステータス行の [XXXX](Radd = make_Radd(): (group×8+scene)×0x100、上限0x7F00)と key_d(直近キーコード)はその場で算出しており、固定文字列ではありません。 行1右の <AUTO-ON>/<AUTO-OFF>/<DMX-IN>/<Stop> 表示も pr_auto_sw() の優先順位(DMXスルー>停止>AUTO on/off)をそのまま実装。

⚠️ 近似・未実装の箇所: ①シーンの実際の色は実機EEPROM内の実データに依存するため、代表パレットで近似 ②グループ7-8の手続き的パターン(レインボー/カーテン等 test_groups.c)は未移植 ③行3右(シーン番号)は実ソースでは12ptフォント(FreeMonoBold12pt7b)だが、共有シミュレータコアに12pt相当の移植フォントが無いため9pt相当で代用 ④行1右のAUTO表示は実座標(x=200)のままだと画面右端をわずかに超える場合がある(実機TFT_eSPIのフォントサイズ2指定と、本シミュレータのfont5x7ダブルスケール近似との差によるもの)。

この方式は、実機の液晶表示をPC上で100%再現する開発用シミュレーター基盤(LcdSimulator)と共通の考え方です。開発の現在地は開発ステータスをご覧ください。

🤝 AI協働でどう作ったか: 座標・フォント・状態遷移のロジックはAIが実機ファームウェアのソースコードを直接読んで移植しました。写真を見ながらの目分量再現ではなく、実装そのものから起こしているのがこのシリーズの作り方です。

関連ページ