💬
PlatformIOのシリアル通信をClaude Codeに解釈させる
PlatformIOのシリアル通信をClaude Codeに解釈させる
結論
非tty環境だとコケるらしく、何らかのコマンドでラップしてあげると動くので以下のように指示する
シリアル通信の受信はこのコマンドを run_in_background で実行してください
script -q /dev/null pio device monitor --port /dev/cu.usbmodem1101 --baud 115200
シリアル通信の送信はこのコマンドを実行してください
printf "送信したい内容" > /dev/cu.usbmodem1101
※ /dev/cu.usbmodem1101
と 115200
は各環境に依存する
エラー内容
ラップしていないときのエラー内容
⏺ Bash(pio device monitor --port /dev/cu.usbmodem1101 --baud 115200)
⎿ Running in the background (down arrow to manage)
⏺ BashOutput(Reading shell output)
⎿ error: Traceback (most recent call last):
File "/Users/yabuta/.platformio/penv/lib/python3.11/site-packages/platformio/__main__.py", line 103, in main
cli() # pylint: disable=no-value-for-parameter
^^^^^
File "/Users/yabuta/.platformio/penv/lib/python3.11/site-packages/click/core.py", line 1157, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/yabuta/.platformio/penv/lib/python3.11/site-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/Users/yabuta/.platformio/penv/lib/python3.11/site-packages/platformio/cli.py", line 85, in invoke
return super().invoke(ctx)
^^^^^^^^^^^^^^^^^^^
File "/Users/yabuta/.platformio/penv/lib/python3.11/site-packages/click/core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/yabuta/.platformio/penv/lib/python3.11/site-packages/click/core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/yabuta/.platformio/penv/lib/python3.11/site-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/yabuta/.platformio/penv/lib/python3.11/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/yabuta/.platformio/penv/lib/python3.11/site-packages/platformio/device/monitor/command.py", line 154, in device_monitor_cmd
start_terminal(options)
File "/Users/yabuta/.platformio/penv/lib/python3.11/site-packages/platformio/device/monitor/terminal.py", line 54, in start_terminal
term = new_terminal(options)
^^^^^^^^^^^^^^^^^^^^^
File "/Users/yabuta/.platformio/penv/lib/python3.11/site-packages/platformio/device/monitor/terminal.py", line 102, in new_terminal
term = Terminal(
^^^^^^^^^
File "/Users/yabuta/.platformio/penv/lib/python3.11/site-packages/platformio/device/monitor/terminal.py", line 28, in __init__
super().__init__(*args, **kwargs)
File "/Users/yabuta/.platformio/penv/lib/python3.11/site-packages/serial/tools/miniterm.py", line 395, in __init__
self.console = Console()
^^^^^^^^^
File "/Users/yabuta/.platformio/penv/lib/python3.11/site-packages/serial/tools/miniterm.py", line 198, in __init__
self.old = termios.tcgetattr(self.fd)
^^^^^^^^^^^^^^^^^^^^^^^^^^
termios.error: (19, 'Operation not supported by device')
============================================================
An unexpected error occurred. Further steps:
* Verify that you have the latest version of PlatformIO using
`python -m pip install -U platformio` command
* Try to find answer in FAQ Troubleshooting section
https://docs.platformio.org/page/faq/index.html
* Report this problem to the developers
https://github.com/platformio/platformio-core/issues
============================================================
備考
logsを吐かせてClaude Codeに解釈させることでうまくいく
Discussion