データロガーでのデータ追記方法

このQ&Aのポイント
  • マイクロプロセッサーによるデータロガー装置でSDカードにデータを追記する方法を検討しています。
  • データ追記方法として、バイナリ型の固定サイズでの書出しと、開始マークと終了マークを使ったBCD型のデータの書き込みが考えられます。
  • バイナリ型の場合は、中途半端なサイズのデータが書かれた場合に後のデータの取り出しが困難になる可能性がありますが、BCD型の場合は途中に中途半端なサイズのデータがあっても、後のデータは正しく取得できます。
回答を見る
  • ベストアンサー

データロガーでのデータ追記方法

データロガーでのデータ追記方法 マイクロプロセッサーによるデータロガー装置でSDカードにデータを追記していく処理を検討しています。 以下のようなものを考えてみました。 1. バイナリ型、固定サイズで書出し 2. 開始マーク, BCD型のデータ, 終了マーク 上でBCDは2進化10進数のことを示します。 1の方法の場合、固定サイズをきちんと書き込みできればいいのですが、SDカードモジュールがなんらかのエラーで中途半端なサイズのデータが書かれた場合、それ以降のデータの取り出しが困難になります。 一方で、2の方法の場合、開始マークと終了マークがあることにより、途中に中途半端なサイズのデータがあったとしても、それ以降のデータはきちんと取得できることができます。ただ、2の方法の問題はBCDにするとバイナリ型の2倍のデータサイズになることです。 上記も含めて、データ追記をしていく方法で、お勧めの方法があればご教授ください。できるだけ、エラーがあったとしても、後のデータ読み取りに支障がない方法を使いたいと思います。 アスキー文字列でもいいのですが、書き込みサイズをできるだけ少なくしたいと思います。

質問者が選んだベストアンサー

  • ベストアンサー
  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.1

読み込み側も自分で作成するのであれば(なんとなくそんな感じに読めるのですが) 開始/終了マーカに囲まれた固定サイズのデータとしてやるのが 一番簡単で支障がない方法ではないかと思います その上で開始・終了マーカがデータと重複しないコードにできるのであれば より確実なデータ取得ができると思います

flex1101
質問者

お礼

回答ありがとうございます。 読み込み側も自分で作成しますので、フォーマットさえ決まれば、どのようなものでも問題ありません。 開始/終了マーカーを使用する場合、データとマーカーが重複しないようにする方法で今のところ思いついているのがBCDの使用です。問題はshort形(0xFFFF)が'FFFF'と4バイトになってしまうところです。

その他の回答 (4)

回答No.5

HW畑は門外漢なので、この辺で最後の回答にしておきますね。 提案として、ですが。 まず、あなたの作りたいデータロガーと目的が一致している既製品をサンプルとして購入し、解析してみてはどうでしょう?あなたはそのロガーに懸ける熱意がおありの様ですし、きっと得るものがあるかと存じます。失礼ながら、大学の課題で仕方なく作って…というのではないですよね? 次に、考え方が完璧な方法ありきに偏りすぎているかと存じます。 皆様の提案をみるに、完璧な案でなくても、現状よりベターであるかと存じます。 完璧を求めて現状に足踏みするより、ベターな方向性を一度試して、そこから新しい方法を検討していく方が建設的なやり方じゃないかなと思います。それが、「試行錯誤」ってことですよね? あなたの求める回答ではないかもしれませんが、一応ご提案まで。

flex1101
質問者

お礼

ご提案ありがとうございました。

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.4

#2です >低確率だからいい、という気持ちは持っておりません。 元々の質問文からいけばデータの読み取りで支障をきたさなければいい ということだろうと考えたのですが その考え方があるなら書かれてる方法ではダメです チェックサムを入れるンなどしてデータの整合性を取らないと いずれにしてもデータとしての保証は取れません 更に正確性を持たすなら単純なチェックサムというのも問題となる可能性があります ※ 可能性で話を進めていけばデータろがーのようにデータ垂れ流しではダメだ   ってことにもなりかねません

flex1101
質問者

お礼

ありがとうございました。

回答No.3

2の方法ですが、記録する前に、例えばランレングス圧縮などをかませたらいかがですか?

flex1101
質問者

お礼

ありがとうございます。 マイコンの性能がそれほど高くなく、圧縮処理は入れることはできません。

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.2

>開始/終了マーカーを使用する場合、データとマーカーが重複しないようにする方法 すべて自作でデータが崩れたときの対処を優先させるという意味であれば ↑をそれほど重要視する必要ないのではないかと思います 仮に重複しても確立的に考えれば(欠落したりしたデータ)両方が たまたま  マーカのコードに一致する可能性というのはかなり低いはずですし そもそものデータ書き込みエラーという事象自体かなり低確率ではないかと思います 仮にですが 開始マーカ バイナリデータ 0x01 終了マーカ バイナリデータ 0x02 各マーカ間に固定データ長(2バイトバイナリ) 等と   自分で使用を決めれば   それでいいと思います ※ 落としたデータを人が後で目視で見たいという場合ならデータを   アスキーで落として置いたほうが目視するという意味では簡単です 結局すべて独自プロトコルでできる環境ということなので その意味では自由に決められていい斧ではないでしょうか  と考えます 一般プロトコルSTX/ETXでデータはさんだとしても 間のデータテキストでなくてもいいでしょ? って話

flex1101
質問者

お礼

ご回答ありがとうございます。 >仮に重複しても確立的に考えれば(欠落したりしたデータ)両方が >たまたま  マーカのコードに一致する可能性というのはかなり低いはずですし >そもそものデータ書き込みエラーという事象自体かなり低確率ではないかと思います 低確率だからいい、という気持ちは持っておりません。

関連するQ&A

  • アクセスできないSDカードからデータを抜く方法。

    アクセスできないSDカードからデータを抜く方法。 タイトルの書き方非常に迷って、中途半端な日本語になってしまいました。 キャノンEOS KissX2で使っているSDカードについてです。SDカードは「I-O DATA SDメモリーカード 2GB スピードクラス:Class4 SD-F2G 」です。 そのSDカードを入れて写真を撮っていました。そして、大体残り撮影枚数が20枚くらいのところまで撮っったところで、一度切っていた電源を入れたら 「カードが初期化されていません。このカメラで初期化して下さい」 と出ました。 パソコンで読み込もうとしても 「このディスクはフォーマットされていません。今すぐフォーマットしますか」 と出てしまって、アクセスできません。 大事な写真が結構あるので、極力諦めたくはないのですが、このような状態になったSDからデータを抜き出すことは可能なのでしょうか。 またこのようになってしまう原因も分かれば嬉しいです。なんせ、さっきまで普通に撮れていたのに、いきなりそんな状態になったもので・・・・・。 よろしくお願いします。

  • 設備のパラメーターデータの抽出できますか?

    Simens simatic HMIというLCDが設備についていますが、USBのポートもありますが LcDに示される設備のパラメーターが保存できるかどうかはわからないですが、 このsimatic hmiはデータ抽出とかUSB及びSDカードを入れてLCDに示されるデータを保存できる方法ありませんか? 私はこのsimens simatic hmiは初めてなので、お教授いただきませんか? よろしくお願いいたします。 もしかしてUsbとかsdカードではなくて他の装置でも抽出とか保存できる方法があれば教えていただきませんか? ご参考でグラフテック社のデータロガーはもう使ったことがありますがこんなデータロガー以外の方法をお願いいたします。 よろしくお願いいたします。

  • バイナリファイルのサイズを変えたい

    こんにちは。 ここに書いて良い話題かわかりませんが、宜しくお願いします。 中途半端な大きさのバイナリファイルをきりのいいサイズに変更したいとき、便利な方法やツールはありませんか? 例えば、 aaa.bin のサイズが 0x1F34 だったときに、 0x2000 にしたい・・・ときなどです。 それでは宜しくお願いします。

  • VBAを使って、一部バイナリデータを読み書き

    VBAを使って、一部バイナリデータを読み書きする方法 を教えてください。 あるファイルが1行目から30行目までが普通のASCII形式でデータが書き込まれており、 31行目以降はバイナリデータとなっています。 また、30行目にheader endと書かれています。 このデータを30行目までは文字列データとして抽出し、 31行目以降はバイナリデータとして抽出して、 少し内容を書き換えてから、最初と同様に 30行目までをASCII、31行目以降をバイナリデータとして出力したいのですが どのようにすれば良いですか? http://homepage2.nifty.com/kasayan/vba/binary.htm http://hanatyan.sakura.ne.jp/vbhlp/Binary.htm バイナリデータの読み込み方は上記のページに書かれてあるのですが いずれも、ファイルをまるごとバイナリ形式として読み込むもので 一部だけバイナリとして読み込むことはできないようです。 どなたかどうすれば良いか教えてください。

  • Excel2010 グラフ内のデータラベルについて

    EXCELで円グラフを作成して、データラベルを使用しました。 するとデータラベルの横幅が小さいので文字が途中で改行されてしまいます。 例えば「評価を聞いて来た」だと   ┌────┐   │評価を聞   │いて来た│   └────┘ という風に中途半端になってしまいます。 なんとかフォントのサイズを変更せずに、横幅を大きくする方法をご存知でしたら お教えください。 よろしくお願いいたします。

  • テキストデータをSQLServerに取込むには

    列区切なし、改行コードなしの固定長データをSQLにコンバートしたいのですが、上手く行かず困っています。 (ファイル形式:テキストファイルバイナリ固定長)  ・試した方法   BULK INSERT     添付画像のようなデータをSQLサーバに取り込みたいのですが  上手く読み込みができません。  添付画像のようなデータは取り出せないのでしょうか?   宜しくお願いします。。

  • 破損したJPEGデータ

    EOS KISS X7で500枚ほど撮影していたのですが、 途中からプレビューを見ると「再生できないデータです」と表示されるようになってしまいました。 (撮影直後は見られるのですが、しばらくするとみられなくなります) SDカードの故障かなと思ったのですが、代えのSDカードも用意していなかったので、そのまま撮り切ったのですが、案の定、途中からのデータがPC上でも表示できません。 ファイルサイズは5MB~7MBと、ある程度まともなファイルサイズですが、試しに無料の復元ソフト等を試してみましたが、例えば「PEGファイルエディタVer0.95β」では、「マーカーが999個を超えました」とかなりエラーが多いようです。 有料のソフトにお金を払って直る期待が持てるのか…。 そもそも無意味なデータ群になってしまっているのか、 SDカードにエラーを抱えて保存し続けたデータに関して、修復の見込みはあるのでしょうか。 もし、ご存知の方がいたらお返事ください。 (期待が持てるor持てない、バイナリでの修復見込ありかなしかの判断法など…)

  • USBメモリ内のデータ復旧

    USBメモリをパソコンに差す際、中途半端にささってメモリ内のデータが表示され、アイコンやデータ容量がおかしかったため、再度差しなおしたのですが、やはり化けて表示されます。 これらのデータを復旧させる方法はないでしょうか?

  • iアプリの受信データについて

    今、iアプリで開発を行っています。webサーバーから文字と画像データをバイナリーデータで受信するのですが、文字部分と画像部分の切り分けする方法がわかりません。どなたかご存知の方がいらっしゃいましたら教えてください。 受信データは固定長で、項目が4つあり、最初から40バイト,60バイト,60バイトが文字情報で残りが画像データになります。受信データの合計サイズは100kバイトです。 環境はdoja4.1、webサーバーはIIS6.0+asp.netになります。 宜しくお願いします。

  • Acrobatで元データのトリミング

    資料をコピー機でPDF化したのですが、資料が中途半端なサイズの為、 余白部分が非常に大きくなってしまいました。 元データも非常に大きく、パソコンで開くと重くなってしまいます。 その為、見易さとデータ量の削減の為、以下の通りAcrobatでトリミングをしたのですが、  http://courier.adobe.co.jp/acrobat/a00044.html この方法ですと、元の余白データが見えなくても残ってしまうため データ量を削減することができませんでした。 元のデータごと完全にトリミングすることは可能でしょうか? どうかよろしくお願い致します。