![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
現在、リアルタイムでセンサーで値を取得してそれをファイルに書きだすと同時に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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Visual Basic(VBA) VBA 毎日取得するデータを順番に反映していく方法 6 2023/08/26 16:22
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCSVファイルを途中行まで...
-
ExcelをCSV書き出す場合のシー...
-
VBAでCSVファイルの特定行を書...
-
openした後、closeしないでプロ...
-
ReadLineでの読み出し行を指定する
-
DBMとテキストファイルのどちら...
-
__DATA__の意味
-
テキストデータから指定した1...
-
gnuplotで複数の長さの関数の表示
-
VB6.0でDB接続する際に切断時の...
-
ADOによるCSVファイルからのデ...
-
open( ) の読み込み量
-
C言語でファイル名を取得
-
ダイアモンド演算子<>に対するb...
-
ListBoxのデータを高速でファイ...
-
does not map to shiftjis は解...
-
ファイル名の変更
-
pushをすると行ができる
-
perlでの三次元配列の作り方
-
[perl5.8] SJISから読み込んだ~と
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでCSVファイルを途中行まで...
-
VBAでCSVファイルの特定行を書...
-
openした後、closeしないでプロ...
-
ExcelをCSV書き出す場合のシー...
-
エクセルVBA コードが同じでも...
-
VBAで巨大なファイルの途中から...
-
ReadLineでの読み出し行を指定する
-
perlで、後ろの行を読んで、前...
-
JavaでCSVファイルを高速に読む...
-
MATLAB グローバル変数の宣言
-
perlにて2つのファイル比較
-
C言語でのファイルのデータ更...
-
拡張子 ”log” と ” dat” の違い
-
ADOによるCSVファイルからのデ...
-
VB6.0でDB接続する際に切断時の...
-
2つのCSVファイルをマッチング
-
Perlの変数に文字数制限(容量...
-
perlで容量の大きいCSVファイル...
-
データファイルをプロットする(...
-
Perl Vlookupみたいに
おすすめ情報