- 技術情報
- 【スクリプト】1行ごとに日付時刻を付加するスクリプト例
SDロガー5
技術情報
【スクリプト】1行ごとに日付時刻を付加するスクリプト例
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番ピンにも供給されます。