タイムスタンプを地磁気計のログファイルに付加する方法 備忘録.
How to add a time stamp to a magnetometer serial log file.
結局,linuxコマンドである
cuを用いるのが一番簡単と判断.さらにこれに時刻表示を加えて保存する方法をChatGPTに尋ねる.明快な回答があり,
Finally, it was decided that the easiest way was to use the linux command cu,
Then asked ChatGPT how to add a time display and save it. A clear answer was given.
cu -s 9600 -l /dev/ttyACM0 | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0 }'
でOK.!
保存はさらにこれに,
>test.logという風にファイルに保存するだけ.
ただしこれだとcuを止めるのに難あり.Ctl+cでは止まらない.
~.
が正しい作法.http://ogawa.s18.xrea.com/tdiary/20041026p04.html
さらに得られた保存データから,移動平均までを一気にこなすスクリプトも同じくChatGPTの回答をベースに少し修正して,以下のとおり.
Saving the file is then done by adding the following to the file
cu -s 9600 -l /dev/ttyACM0 | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0 }' > test.log.
However, it is difficult to stop cu with this method; Ctl+c.
~.
is the correct way.
The
script that performs all the operations from data save to moving
average at once is also based on by ChatGPT, with a few modifications,
and is as follows.
#!/bin/bash
# Step 0: Remove unwanted characters (;,=) from the data
tr '=,:XYZ[uT]' ' ' < 2024-05-26.log > cleaned_data.txt
# Step 1: Extract timestamp and numerical data (assuming space-separated values after cleaning)
awk '{print $1, $2":"$3":"$4, $5, $6, $7}' cleaned_data.txt > extracted_data.txt
# Step 2: Calculate sqrt(x^2 + z^2)
awk '{print $1, $2, sqrt($3*$3 + $5*$5)}' extracted_data.txt > magnitude.txt
# Step 3: Calculate moving average with a window size of 3
awk '{
window_size = 600
values[NR] = $3
sum += $3
if (NR > window_size) {
sum -= values[NR - window_size]
}
if (NR >= window_size) {
print $1, $2, sum / window_size
} else {
print $1, $2, "N/A"
}
}' magnitude.txt > moving_average.txt
でOK!とくにtrコマンドの使い方は今回勉強になった.
I learned a lot this time, especially how to use the tr command.
tr '=,:XYZ[uT]' ' '
で不要部分をスペースに変換できる.これはとても便利.
to convert unnecessary parts to spaces. This is very useful.
<Previous trial>
Time stamp log file for Geo-Mag Meter using BM1422GMV 2024-05-26
IBMノートだとめんどくさいので,メインPCに移動.
まず
BM1422GMV.inoを起動.
シリアルモニタ,シリアルプロッタで動作確認.
これシリアルプロッタだと,自動的nix,y,zの値が折れ線できれいに色分けして表示される.これはよい.
電車の到着とか通過時の地磁気の様子を確認できる.
次にシリアルデータに時刻を付加する方法.
参考サイト
https://askubuntu.com/questions/1186666/i-need-a-serial-port-program-with-logging-timestam
sudo apt-get install moreutils
これは実行.
http://proger.blog10.fc2.com/blog-entry-133.html
https://qiita.com/sttn/items/567c9f49b88ff275b51a
や
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1126453456
より,
cuでできるのではないかと,せんど時刻付加のコマンドオプションを探すが果たせず.
Teratermは4をインストールできたが,シリアルポートがCOMなので使えず.
ー>今ここ.
Copyright (C) 2024 Yoshio
Okamoto, all rights reserved.