各種測定器のデータを記録する「データロガー」の開発・販売、電子回路の設計・製作、ソフトウェア開発

1行ごとに日付時刻を付加するスクリプト例

温度計とロガー3

SDロガー3は、日付時刻機能が追加されています。スクリプトを用いることによって、保存データに、日付時刻を付加することが出来ます。
ここでは、接続相手として、5秒に1回、温度データを、1行のテキストとして、送信してくる温度計を想定して、保存データの行末に、日付時刻を付加するスクリプトの作り方を紹介します。

 

ロギングしたファイルをパソコンに取り込み、エクセルで処理させるとつぎのようなグラフが描けます。

温度チャート

●スクリプト

    ;1行ごとに、日付時刻を付加するスクリプトです。

    ;改行コード(<CR>または、<LF>)を受信した場合、保存データから省くことを指定します。
    #f:OMIT :0D0A

    ;END文まで繰り返します。
    #LOOP EVER

    ;改行コードを受信するのを待ちます。
    #WAIT DATA :0D

    ;「, 20YY/MM/DD, hh:mm:ss<CR><LF>」の書式で、日付時刻を保存データに付加します。
    #LOG , 20@Y/@M/@D, @h:@m:@s@r@n

    ;ここまでを繰り返します。
    #END

(解説)

「#f:OMIT :0D0A」は、あとで解説します。

「#LOOP EVER」で「#END」までのあいだを、永久に繰り返します。

「#WAIT DATA :0D」で、改行コード「<CR>」を受信するのを待ちます。「<CR>」は、16進数では「0D」です。「#WAIT DATA」では、「:」を付けてデータを書くと、16進数で書いたことを意味します。

「#LOG」文は、スクリプトから保存データに追加することのできる機能です。通常は、受信したデータが保存されますが、「#LOG」文を使うことによって、好きなデータを、保存データに追加することが出来ます。

「#LOG」文には、特殊な情報を保存する機能があります。日付時刻もその機能を使って保存データに追加します。たとえば「@Y」と書くと、西暦の下2ケタが保存されます。詳細はリファレンスマニュアルを、ご参照ください。

このスクリプトは、改行コードが「<CR>」だけでも、「<CR><LF>」でも対応できます。

 

●除外(オミット)機能

さて、単純に日付時刻を付加するだけなら、つぎのようなスクリプトで行なえます。

;END文まで繰り返します。
#LOOP EVER

;改行コードを受信するのを待ちます。
#WAIT DATA :0D

;「, 20YY/MM/DD hh:mm:ss」の書式で、日付時刻を保存データに付加します。
#LOG , 20@Y/@M/@D @h:@m:@s

;ここまでを繰り返します。
#END

ただ、これでは、日付時刻が改行コードのあとに付いてしまい、つぎの行の先頭になってしまいます。そこで、使えるのが除外(オミット)機能です。ロガーの基本機能は、受信したデータを、全てカードに保存することですが、除外機能を使うことによって、指定したデータを保存から除外することが出来ます。

最初のスクリプトでは、「#f:OMIT :0D0A」で、改行コード「<CR>」と「<LF>」を、保存から除外するように指定しています。そして、スクリプトの「#LOG」文で、改めて改行コードを付け足しています。そうすることによって、データと同じ行の後ろに、日付時刻を付加することが出来ます。

 

●電源供給

この例では、温度計の電源は、ロガー側から供給しています。SDロガーは、小さな電力(500mA程度まで)であれば、相手の接続装置に、電源を供給することが出来ます。基板上のジャンパーピンJ2を短絡すると、CN1(D-Sub)コネクタの9番ピンに、電源ラインがつながります。ロガーが、CN2(DCジャック)から供給を受けている電源が、CN1(D-Sub)コネクタの9番ピンにも供給されます。

関連記事

アップデート情報

登録されている記事はございません。

カテゴリー