現在、リアルタイムでセンサーで値を取得してそれをファイルに書きだすと同時にgnuplotで描画するwindows(VC++)プログラムを作っております。
手順としては
(1)ADCの装置から値が送信されるのでそれを取得
(2)fprintfでデータ書き出し
(3)gnuplotでグラフを作る
ということをやっています。
データの書き出し、リアルタイムでのグラフ表示はできるようになったものの、グラフを作る際、データがそれまで取った値全てのデータでグラフを作ってしまうので非常に膨大なデータをプロットしてしまいます。
そこで、「最新の1000個だけをプロットする」ようなことをしたいのですが、このとき、データを保存するファイルとは別に、一時ファイルを作り最新の1000個のデータをその一時ファイルに書き込みそれをplotすることを考えました。(1秒おきに、最新のデータが一番後ろの行について、1000個前のデータが削除される)
しかしながら、「最初の行(1000個前のデータの行)を削除する」というところでどう実現すれば良いのか分からなくなってしまいました。
ご存じの方いらっしゃいましたら教えていただきたいです。
どうぞよろしくお願い致します。
===== 一時ファイル ======
#a b
a0 b0 ←ここの行を削除したい!
a1 b1
・
・
・
a999 b999
a1000 b1000 ←ここが追加される
No.3ベストアンサー
- 回答日時:
「常にファイルに書く」のは処理コストも高いですから1000個のリングバッファで処理する方がいいんじゃないでしょうかね。
これなら常に最新の1000個分のデータが出ることになります。
あとは下記URLを参考にして標準入力に突っ込んでやれば良さそうです。
http://d.hatena.ne.jp/tanakaBox/20070826/1188078 …
どうもありがとうございます。
手動入力もできるとは!
リングバッファも今ちょうど調べていました!
これで完ぺきにできそうです
どうもありがとうございます。
No.2
- 回答日時:
書きだすデータ量、タイミングがシビアなら使えませんが
GnuWin32などのtailコマンドを定期的に実行して、一時ファイルにリダイレクトしてはどうでしょう。
No.1
- 回答日時:
読み込み行数カウンタを設けインクリメント。
指定範囲の場合のみ出力。
では?
一定時間ごとに出力ファイルを閉じ新たに開くことで出力ファイルそのものを変えるのも手かも。
この回答への補足
どうもありがとうございます。
実はgnuplotの数値データのplotの仕様で、
あるファイルを開いて最初の行からプロットするみたいで、困っております。
(途中からプロットするコマンドはなく、ファイルを通さず直にデータを送ることもできない)
どうぞよろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCSVファイルを途中行まで...
-
VBAでCSVファイルの特定行を書...
-
ExcelをCSV書き出す場合のシー...
-
エクセルVBA コードが同じでも...
-
拡張子 ”log” と ” dat” の違い
-
CSVが可変長の場合の検索方法
-
csvファイル改行コードの置換に...
-
VBAで巨大なファイルの途中から...
-
VBScriptでファイル保存先のデ...
-
検索ボックスから製品名を検索...
-
ファイルロックのおすすめプロ...
-
Perlの変数に文字数制限(容量...
-
エクセルVBAでCSVファイ...
-
openした後、closeしないでプロ...
-
MATLAB グローバル変数の宣言
-
C言語でのファイルのデータ更...
-
close()で例外が投げられる理由
-
awkスクリプトでダブルクォーテ...
-
エクセルVBAで素数だけを出力す...
-
vba dir の相対パス
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでCSVファイルを途中行まで...
-
エクセルVBA コードが同じでも...
-
VBAでCSVファイルの特定行を書...
-
ExcelをCSV書き出す場合のシー...
-
ReadLineでの読み出し行を指定する
-
openした後、closeしないでプロ...
-
JavaでCSVファイルを高速に読む...
-
VBAで巨大なファイルの途中から...
-
拡張子 ”log” と ” dat” の違い
-
csvファイル改行コードの置換に...
-
C言語でのファイルのデータ更...
-
VB6.0でDB接続する際に切断時の...
-
Perlの変数に文字数制限(容量...
-
Perl Vlookupみたいに
-
CSVファイルについて
-
MATLAB グローバル変数の宣言
-
エクセルVBAでCSVファイ...
-
VBScriptでファイル保存先のデ...
-
Monster'sの改造・・・ボスモン...
-
perlで、後ろの行を読んで、前...
おすすめ情報