- ベストアンサー
データロガーでのデータ追記方法
- マイクロプロセッサーによるデータロガー装置でSDカードにデータを追記する方法を検討しています。
- データ追記方法として、バイナリ型の固定サイズでの書出しと、開始マークと終了マークを使ったBCD型のデータの書き込みが考えられます。
- バイナリ型の場合は、中途半端なサイズのデータが書かれた場合に後のデータの取り出しが困難になる可能性がありますが、BCD型の場合は途中に中途半端なサイズのデータがあっても、後のデータは正しく取得できます。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
読み込み側も自分で作成するのであれば(なんとなくそんな感じに読めるのですが) 開始/終了マーカに囲まれた固定サイズのデータとしてやるのが 一番簡単で支障がない方法ではないかと思います その上で開始・終了マーカがデータと重複しないコードにできるのであれば より確実なデータ取得ができると思います
その他の回答 (4)
- yuki-alpha
- ベストアンサー率27% (22/80)
HW畑は門外漢なので、この辺で最後の回答にしておきますね。 提案として、ですが。 まず、あなたの作りたいデータロガーと目的が一致している既製品をサンプルとして購入し、解析してみてはどうでしょう?あなたはそのロガーに懸ける熱意がおありの様ですし、きっと得るものがあるかと存じます。失礼ながら、大学の課題で仕方なく作って…というのではないですよね? 次に、考え方が完璧な方法ありきに偏りすぎているかと存じます。 皆様の提案をみるに、完璧な案でなくても、現状よりベターであるかと存じます。 完璧を求めて現状に足踏みするより、ベターな方向性を一度試して、そこから新しい方法を検討していく方が建設的なやり方じゃないかなと思います。それが、「試行錯誤」ってことですよね? あなたの求める回答ではないかもしれませんが、一応ご提案まで。
お礼
ご提案ありがとうございました。
- koi1234
- ベストアンサー率53% (1866/3459)
#2です >低確率だからいい、という気持ちは持っておりません。 元々の質問文からいけばデータの読み取りで支障をきたさなければいい ということだろうと考えたのですが その考え方があるなら書かれてる方法ではダメです チェックサムを入れるンなどしてデータの整合性を取らないと いずれにしてもデータとしての保証は取れません 更に正確性を持たすなら単純なチェックサムというのも問題となる可能性があります ※ 可能性で話を進めていけばデータろがーのようにデータ垂れ流しではダメだ ってことにもなりかねません
お礼
ありがとうございました。
- yuki-alpha
- ベストアンサー率27% (22/80)
2の方法ですが、記録する前に、例えばランレングス圧縮などをかませたらいかがですか?
お礼
ありがとうございます。 マイコンの性能がそれほど高くなく、圧縮処理は入れることはできません。
- koi1234
- ベストアンサー率53% (1866/3459)
>開始/終了マーカーを使用する場合、データとマーカーが重複しないようにする方法 すべて自作でデータが崩れたときの対処を優先させるという意味であれば ↑をそれほど重要視する必要ないのではないかと思います 仮に重複しても確立的に考えれば(欠落したりしたデータ)両方が たまたま マーカのコードに一致する可能性というのはかなり低いはずですし そもそものデータ書き込みエラーという事象自体かなり低確率ではないかと思います 仮にですが 開始マーカ バイナリデータ 0x01 終了マーカ バイナリデータ 0x02 各マーカ間に固定データ長(2バイトバイナリ) 等と 自分で使用を決めれば それでいいと思います ※ 落としたデータを人が後で目視で見たいという場合ならデータを アスキーで落として置いたほうが目視するという意味では簡単です 結局すべて独自プロトコルでできる環境ということなので その意味では自由に決められていい斧ではないでしょうか と考えます 一般プロトコルSTX/ETXでデータはさんだとしても 間のデータテキストでなくてもいいでしょ? って話
お礼
ご回答ありがとうございます。 >仮に重複しても確立的に考えれば(欠落したりしたデータ)両方が >たまたま マーカのコードに一致する可能性というのはかなり低いはずですし >そもそものデータ書き込みエラーという事象自体かなり低確率ではないかと思います 低確率だからいい、という気持ちは持っておりません。
お礼
回答ありがとうございます。 読み込み側も自分で作成しますので、フォーマットさえ決まれば、どのようなものでも問題ありません。 開始/終了マーカーを使用する場合、データとマーカーが重複しないようにする方法で今のところ思いついているのがBCDの使用です。問題はshort形(0xFFFF)が'FFFF'と4バイトになってしまうところです。