タイムスタンプを地磁気計のログファイルに付加する方法 備忘録.

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.