前回はNanoPi NeoにSimpleRTK2BをUSBケーブルで接続し、Linux上で認識していることまで確認できた。
シリアルポート名の確認
Linuxでシリアル通信を行う際は、通信相手のシリアルポート名が必要となる。
シリアルポート名はttyACMxかttyUSBxとなる場合が多い。
下記コマンドで検索する。
% ls /dev/ | grep ttyUSB
% ls /dev/ | grep ttyACM
今回の環境では「ttyACM0」のみが検索され、これが認識されているシリアルポート名であることがわかる。
str2strの実行
書式:str2str -in stream[#…] -out stream[#…] [-out stream[#…]…] [options]
※「RTKLIB ver. 2.4.2 Manual」p.101より
-in(入力)はSimpleRTK2Bのシリアルポート名を指定
-out(出力)はファイルパスとファイル名を指定
パスはsamba共有フォルダ
ファイル名は重複を避けるため現在のタイムスタンプを含む文字列とした
タイムスタンプはdateコマンドをバッククオート
今回の環境では、下記コマンドを実行
% str2str -in serial://ttyACM0:115200#ubx -out /home/share/`date +%Y%m%d%H%M%S`.ubx
(問題なく実行されると一定時間ごとにログが表示される)
実行中のstr2strを終了させるには、Ctrl+cを打つ
LANケーブルを母艦PCと接続し、共有フォルダを開くと、ubx拡張子のファイルが生成されていることを確認
str2strを常駐プログラム化
常駐させたいプログラムの設定を記述したユニットファイルを作成し、systemctlコマンドを使って常駐させる。
シェルスクリプト作成
% sudo vi /usr/bin/str2str.sh
内容:
#!/usr/bin/zsh
str2str -in serial://ttyACM0:115200#ubx -out /home/share/`date +%Y%m%d%H%M%S`.ubx
シェルスクリプトファイルの実行権限付与
% sudo chmod +x /usr/bin/str2str.sh
ユニットファイル作成
% sudo vi /etc/systemd/system/str2str.service
内容:
[Unit]
Description=RTKLIB str2str Service
[Service]
ExecStart=str2str.sh
Restart=no
Type=simple
[Install]
WantedBy=multi-user.target
常駐開始
% systemctl start str2str.service
常駐終了
% systemctl stop str2str.service
起動時常駐開始有効化設定
% systemctl enable str2str.service
※実行後、再起動すると自動的に常駐するようになる。
※今回は使用しない設定
常駐時に母艦PCから共有フォルダにubxファイルが作成され、更新され続けるようになっていることを確認。