概要
SHARP Brain で何しようと思った時に、シリアル通信できると他のデバイスをつなげて遊べそうだと思ったので試してみました。
前提
普通にUSBシリアルを繋げたら /dev/ttyUSB で認識するかなーと思ったけどダメっぽい。
ならば libusb か FTDI のライブラリを入れるまでよ。
FTDI ライブラリ
FTDI ライブラリが動くんなら Windows でも Mac OS X でも Linux でもデバグしやすいので、確認してみる。
FTDI の D2XX DirectDrivers を見ると、下のほうに Linux 1.4.22 ARMv5 soft-float があるので、これを入れる。
libftd2xx-arm-v5-sf-1.4.22.gz がダウンロードできるが、中身はどうみても .tar なので tar xf で解凍。
user@brain:~$ tar xf libftd2xx-arm-v5-sf-1.4.22.gz
続いて release/ReadMe.txt に従ってインストール。
user@brain:~$ cd release/build/
user@brain:~/release/build$ sudo -s
[sudo] password for user:
root@brain:/home/user/release/build# cp libftd2xx.* /usr/local/lib/
root@brain:/home/user/release/build# chmod 0755 /usr/local/lib/libftd2xx.so.1.4.22
root@brain:/home/user/release/build# ln -sf /usr/local/lib/libftd2xx.so.1.4.22 /usr/local/lib/libftd2xx.so
root@brain:/home/user/release/build# cd ..
root@brain:/home/user/release# cp ftd2xx.h /usr/local/include/
root@brain:/home/user/release# cp WinTypes.h /usr/local/include/
root@brain:/home/user/release# ldconfig -v
root@brain:/home/user/release# exit
exit
これで ftdxx.h をインクルード、 -lftdxx すれば使える。
ただ、Brainux のアプリからシリアル アクセスするには root が必要なので、実行時には sudo しよう。
通信クラス
ざっくり作成。
https://gitlab.com/nekodevteam/brainux/-/tree/main/ft2xx
WindowsでもLinuxでも動作するので、まずはそっちでテストしよう。
テスト
テスト コードでは、とりあえず最初のデバイスを開いて A~Z を送信 / 受信をします。
- 秋月の FT234X を接続する。
- TxD と RxD をショートさせて ループバックさせる。
- make する
- sudo ./ft2xxtest
user@brain:~$ cd ft2xxtest/
user@brain:~/ft2xxtest$ make
gcc -Wall -O3 -c -o ft2xxtest.o ft2xxtest.cpp
gcc -g -o ft2xxtest ./ft2xxtest.o -lftd2xx -lstdc++
strip ft2xxtest
user@brain:~/ft2xxtest$ sudo ./ft2xxtest
[sudo] password for user:
Devices
- DM01P46D
ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ...