メインコンテンツに移動

シリアル

Macでシリアル通信

MacOSでシリアル通信したくなる。実際、マイコンボードなどを使ってプログラムをドロップすると勝手にリセットして接続が切られるため、勝手に外されたというエラーが表示され気持ちが悪い、またそのダイアログは消さないと自動で消えてくれないので、使い勝手は良くない。しかし、シリアル通信データを取得したいという要求は少なからずある。

terminal(ターミナル)を起動し、デバイスを見つける。

$ ls -l /dev/tty.*
crw-rw-rw-  1 root  wheel  0x13000000  3  2 20:53 /dev/tty.BLTH
crw-rw-rw-  1 root  wheel  0x13000002  3  2 22:25 /dev/tty.Bluetooth-Incoming-Port
crw-rw-rw-  1 root  wheel  0x13000004  3 20 18:55 /dev/tty.usbmodem14201

このusbmodemなんちゃらが接続されたマイコンボードである。これに対して、"cu"コマンドで接続すればいいようだ。

VisualStudioでシリアル送受信

mbedでシリアル通信部分を作成し、Teratermで送受信するのはよくやることであるが、大量のデータあるいは、もっと高速にするとなると、teratermの画面表示がボトルネックで追いつかなくなる。たとえば、PCの清野にもよるだろうが、1ms間隔でデータを受け取るなど。。

そこで、pyserialを使ってpythonで受信する方法があるが、これはこれで遠くに課題はないのだが、唯一止めたいときに、consoleでCTRL-Cを押してブレークしないといけないところ。また人にこうやってというにはpythonの導入から始まりどうやって使うかを教えてあげないといけないという敷居がある。そこで、アプリにできないかな、と考えた。

SerialPort

VisualStudio2022のそのままだと、SerialPortのToolが出てこない。ググった結果、プロジェクトにあるNugetパッケージの管理で追加でパッケージを入れればよいようだ。

まずは、何か適当なプロジェクトを作って、Nugetパッケージ管理を選ぶ

ボーレート

長らく、115.2Kbpsが最高速だと勝手に考えていたが、ある時、teratermのシリアルの設定の中にもっと高速のものが表れているのに気付いた。ググったらこのような記載が見つかった。

サポートされているボーレートのリストは次のとおりです。

110、300、600、1200、2400、4800、9600、14400、19200、38400、57600、115200、230400、460800、921600

あれ、まだ上がある。Pythonでも直接シリアルデータを取得できるよう作れるようだから、この速度がボトルネックになるのはどうなんだろうかという気はずっとしていた。実際の通信速度は、USB(場合によってはHSの場合もある)で、これよりもはるかに通信ができているため。

Nucleo_F411のusbserial(デバッグポート)でのteraterm設定

mbedでLM61温度を知る

シリアルで読み込みができているみたいだから、mbedで取得してみた。

最近Pythonずっといじってたためか、配列の要素取り出すのに、スライスするというのが頭にこびりついていて、要素ごと取り出して計算させていたが、1日ぐらいでようやく、頭がすっきりしてきた。年取ると、頭の切り替えしにえらく時間がかかる。