DAQの出力ファイルをコピーして、別のファイルを作成し、リアルタイム解析は可能か

このQ&Aのポイント
  • DAQの出力ファイルをコピーして、別のファイルを作成し、そのファイルを元にリアルタイムに解析をしたいのですが、これって可能でしょうか?
  • DAQの出力ファイルをコピーして、別のファイルを作成し、そのファイルを元に解析する方法を考えていますが、C言語の知識が不足しているため、どのように実現できるかわかりません。
  • ファイルをコピーし、別のファイルとして保存し、そのファイルを元に解析することでDAQの出力ファイルを排他制御したいですが、実現可能なのでしょうか?
回答を見る
  • ベストアンサー

DAQの出力ファイルをコピーして、別のファイルを作成し、そのファイルを

DAQの出力ファイルをコピーして、別のファイルを作成し、そのファイルを元にリアルタイムに解析をしたいのですが、これって可能でしょうか?先のエントリ(http://okwave.jp/qa/q5699052.html)と連関しているのですが、DAQの出力ファイルを排他制御する一手(?)として、出力ファイルをコピーし、別ファイルとして保存して、そのファイルを元に解析出来ないかと考えています。C言語は殆ど分かっていないのですが、私が調べた限りでは、ファイルをコピーする際、やはりfopenを使わないといけないという結論に至りました。すなわち、この方法でも排他制御は出来ないという事になるのだろうと理解しております。どなたか、私の理解が正しいか否か教えていただけますでしょうか。よろしくお願いいたします。

  • wsow
  • お礼率35% (16/45)

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

  • ベストアンサー
回答No.1

前の質問の時から気になっていたのですが、 利用する機器ってPCと一緒に写ってますけど。そのPCに表示されているのは機器に対応しているソフトでは? であれば、リアルタイム表示しているように見えるのですが、それでは満足できないのでしょうか? >という結論に至りました。 はい。 前回も他の回答者さんと書いていますが、これは言語に関係ない問題です。 「PC」ではなく、「人」で考えてみてください。 隣に座っている人が、黒板の内容をノートに書き写しているのを、横から横からのぞき見ながら書き写すことと一緒です。 書いている途中にノートが次のページにめくられたら? とか色々と問題は考えられますよね。それと一緒です。

wsow
質問者

お礼

ありがとうございます。簡単な処理(スペクトラムとか)をしたいので、擬似的なリアルタイム解析をしてみようと思ったのです。トレースだけでは、分かりにくので。 そうですよね、、、そこら辺に私の知らないマジックがあるかもしれないと思ったのですが。今回はPCのデータ獲得に関して、少し理解が進んだように思います。ありがとうございました。

その他の回答 (1)

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.2

ファイルをコピーするのは、非常に時間のかかる処理です。 しかも、データのサンプリング周波数が高く、チャンネル数もそこそこある場合、データファイルはどんどん膨れ上がっていくと思います。 ファイルのコピーが終わったときには、データは何十秒も先まで収録進んでいて、リアルタイム性は保たれないでしょう。 C言語はほとんどわからないということですが、基本的なファイルアクセスについて(MATLAB上で)、わかりますか? これがわからないと解決は難しいと思いますが、 ・収録中のファイルを読み込みオープンできるかどうか ・fseek, ftell,freadを使い、収録中のデータを読み込めるかどうか ・読み込んだデータに(書き込み途中の)不正な状態のものがあれば排除できるか(データが固定長であれば、読み込めたデータサイズで確認するのも有効) などが解決の糸口になると思います。 リアルタイムの解析結果を何らかの形で被験者にフィードバックしたり、状態をモニタをしたいというのがやりたいことだと思うのですが、MATLABは低速なので、あまり複雑な処理を組むとリアルタイム解析も間に合わず、なかなか難しいですよ。 MATLABで収録の完了したデータファイルをオフラインでfopen+freadを使って、擬似的にオンラインのように動作するプログラムを組んでみたらどうでしょうか。 それがオンラインで出せる最高の速度です。 組んでみて、満足のいく速度が出なければ、そもそもリアルタイムは無理です。 また、それで、ファイルの扱いに関する技術的な習得はかなり進むはずです。 おまけに解析側のプログラムも作成できます。 あ、ファイルがテキスト形式なら、freadではなく、fscanfやfgetsかな。 #Cと同様の入出力I/FをMATLABはサポートしています。 では。

wsow
質問者

お礼

ありがとうございます。ご指摘のとおりMatlabでやってみました。オフラインで、0.01秒ぐらいでアウトプットを出してくれたので、まずまずかなと思ってました。結局、排他制御が出来ないため、オンラインでは無理でしたが(残念)。今回、いろいろ教えて頂いたおかげで、少しデータ獲得に関して、理解が進みました。直ぐに使えるものではないですが、何処かで役にたつんだろうと思っています。ありがとうございます。

関連するQ&A

  • DAQの出力ファイルを読み込み、リアルタイムに解析をしたいのですが、こ

    DAQの出力ファイルを読み込み、リアルタイムに解析をしたいのですが、これって可能でしょうか?先のエントリ(http://okwave.jp/qa/q5658385.html)と連関しているのですが、DAQの出力ファイルを排他制御しながら、読み込んで、解析する事は可能でしょうか?計測機器は http://www.axona.com/ と考えているのですが、一般的な考えを教えていただけると幸いです。出来ると分かれば、突っ込みようがあるのですが、今のところ出来るのかどうかさえも分からないので。よろしくお願いいたします。

  • 任意のファイルを別のファイルにコピーするプログラム。

    コマンドラインからコピー元、コピー先ファイル名を指定してファイルをコピーするプログラムなんですが… #include <stdio.h> #include <stdlib.h> main(int argc, char *argv[]) { FILE *fp; if ((fp = fopen(argv[0],"r") == NULL){ printf("ファイル%sが存在しません。\n",argv[0]);exit(-1); } if ((fp = fopen(argv[1],"w") == NULL){ printf("ファイル%sがコピーできません。\n",argv[1]);exit(-1); } fclose(fp); } どこか間違っているところがあるでしょうか? ありましたら詳しく教えてもらえると幸いです。 少し自信がないのでわかる方はよろしくおねがいします。

  • バッチファイル 別ファイルにリストしてあるファイルをコピーしたい

    バッチファイルで、ファイル名前をリストしてあるの別ファイルを参照して、リストの名前のファイルを任意のフォルダにコピーしたいです。 ●条件 ・コピー元/コピー先は固定でよいです。 ・できれば、コピー元のサブフォルダのファイルも対象にしたいです。 (この場合、リストにもxxx\○○○.txt のように記述) 「for」コマンドを使うのでしょうか? 宜しくお願いいたします。

  • 複数のファイルをコピーして別フォルダに貼り付けたい

    複数のファイルをコピーして別フォルダに貼り付けたいのですが、やり方がわかりません。 100近いファイルがあるので、コマンドプロンプトを使おうと思い、ネットで調べたのですがわかりませんでした。(ひとつのファイルならできました。) 複数のファイルをコピーさせる際、 copy (コピー元のファイル) (コピー先のフォルダ) で、コピー元のファイルを複数指定したいのですが、*で指定するのではなく、個別に複数指定したいのです。+を使うと結合されてしまうし、,もだめ。;もだめ。 番号順に3、4、5、・・・となっているファイルの23、24、25だけをコピーして貼り付けたい場合、どうすればよいのでしょうか?

  • PHPでの複数ファイル出力

    よろしくお願いします。 複数の文字列を作成し($str_abc,$str_123)、それを元にファイルを作って、画面上に「開く、保存、キャンセル」のファイル出力ウインドウを出したいと思います。 ひとつだけなら、問題なくでるのですが、以下のように二つ一度に出したい(ファイル出力ウインドウが2つ)のですが、うまく出力することが出来ません。 どのようにやったら複数のファイルを一度に出すことができるのでしょうか。 <?php $str_abc = "<html><body>abc</body></html>"; $str_123 = "<html><body>123</body></html>"; //$str_abcを元にabc.htmlをつくる $fp = fopen("abc.html", 'w'); fwrite($fp,$str_abc); $fp = fopen("abc.html",'r'); header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"abc.html\""); fpassthru($fp); //$str_123を元に123.htmlをつくる $hp = fopen("123.html", 'w'); fwrite($hp,$str_123); $hp = fopen("123.html",'r'); header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"123.html\""); fpassthru($hp); ?> よろしくお願いします。

    • 締切済み
    • PHP
  • テキストファイルの排他制御をかけたい

    教えてください。 Windows10でアプリのメモ帳を使っていますが、 あるメモ帳ファイルを開いている最中に、もう一度同じファイルを開くと排他制御されずに開いてしまいます。 Excel等の別のアプリならば排他制御されて読み取り専用などになるのですが…。 設定により、メモ帳も自動的に読み取り専用でないと開けないように、できないでしょうか?

  • 同じファイルを別の名前で一度にコピーしたい

    「aaa.bmp」の元ファイルがあるとします。 同じファイルを1000件別の名前でコピーしたいのです。 ファイル名は、決まっておりexcelデータがあります。 「バッチファイルでやれば?」とか簡単に言われたのですが 素人でも簡単にできるソフトとかないでしょうか? 一回、一個ずつしたのですが死ぬかと思いました。

  • 「隠しファイル・フォルダを別端末にコピーできない」

    「隠しファイル・フォルダを別端末にコピーできない」 初めて質問をさせて頂きます。 Windowsサーバーに接続している端末にUSBメモリを接続し、 同サーバーからUSBメモリに対して隠しファイルや隠しフォルダのコピーを行ったところ、 正常にコピーが行えました。 (コピー元、コピー先でフォルダ数やファイル数、合計サイズ等の一致を確認) そのUSBメモリを、同サーバーに接続されていない 別端末へコピーを行おうとしたところ USBメモリに隠しファイルやフォルダが表示されていませんでした。 もちろんフォルダオプションの「隠しファイルを表示する」の項目に チェックがあることは確認しています。 隠しファイルを別端末に持っていっても認識されないのでしょうか? 知識不足で申し訳ありませんが、宜しくお願い致します。

  • javaのファイルコピーについて教えてください。

    javaプログラミング初心者の者です。 javaでファイルをコピーし、コピーしたファイルを出力したいのですがどのようにしたよいかわかりません。 以下のように実行したら、ファイルをコピーし、コピーしたファイルを出力するといったものです。 実行例: java実行ファイル名 コピー元ファイル名 コピー後のファイル名 (java FileCopy copysarelu.txt copysareta.txt) ※copysarelu.txtはすでに存在し、copysareta.txtは任意の名前で作成します。 どなたかアドバイスまたは、参考URLなどをご紹介いただけますでしょうか?お願いします。

  • file()を使う時のファイルロック

    たいていの場合は問題ないのですが、 アクセスカウンタ等の更新の激しい物の場合、 file()やfile_get_contents()でファイルを開き、 その内容を元にfopen()・flock()・fputs()等を使って書き込むと、 データが破損してしまう事があります。 これはロック中でもfile()等では開けてしまうのが原因だと思いますが、 file()等を使う際の排他処理はどのようにしたら良いのでしょうか。 ロック中は、fopen()の前で解放されるのを待つ仕様なようなので、 $fp=fopen("ロック用ファイル","r"); flock($fp,LOCK_EX); ~複数のファイルの読み書きを含めた、様々な処理~ fclose($fp); としてみたのですが、これで排他処理は完璧になるでしょうか? これまでは、 1. ロック用ファイルが存在する場合、なくなるまでsleep() 2. 空のロック用ファイルを作成 ~複数のファイルの読み書きを含めた、様々な処理~ 3. ロック用ファイルを削除 としていたのですが、これでは度々破損してしまいました。 「1」と「2」の間で、新しいプロセスが「1」に割り込んで来てしまうせいでしょうか。 そうだとすれば、fopen()とflock()の間でも 同じ事が起きてしまう気がするのですが、どうなんでしょうか。

    • 締切済み
    • PHP

専門家に質問してみよう