問題タブ [data-acquisition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1090 参照

python - PyVISA にないメソッド

Win 7 x64、NI 488.2、PyVISA 1.5、および numpy/scipy/ipython を使用した python を実行しています。GPIB-USB 接続を介してケースレー機器に接続し、簡単なコマンドを送信しようとしています。しかし、インストゥルメント オブジェクトを作成しようとすると、PyVISA の ResourceManager には、インストゥルメントの検索、読み取り、書き込みに必要なメソッドが欠落していることがわかりました。

PyVISA のページのサンプル コードに従うと、現在、次のようになっています。

get_instrument が存在しないというエラーを返します。タブ補完を使用して、リソース マネージャー rm から利用できるものを確認します。rm.init、rm.close、およびその他のいくつかのみを含む、必要なすべてのメソッドが実質的に不足していることを明らかにしています。これらはすべて何もしないか、4099L を返します。rm 自体を呼び出そうとすると、文字列 'ResourceManager()' が出力されます。

さらに調べてみると、visa.VisaLibrary() がどこにも見つからず、問題はインストールの失敗であることが示唆されます。ただし、(pip を使用して) パッケージ全体を再ダウンロードして再インストールすると、ファイルが見つからないという問題が解決しません。Visa モジュール自体は正常に読み込まれますが、重要なファイルのほとんどが欠落しています。インストールを台無しにしていますか、それとも何か他のことが起こっていますか?

0 投票する
1 に答える
109 参照

c++ - その面積からガウス高さを推定する

私たち (私と私の同僚) には、ガウス分布を持つ傾向がある大量の離散整数データ (強度) を毎秒送信するデバイスが与えられました。これらの疑似ガウスは 1 つずつ流れ、各ガウスの中心から最大強度をできるだけ速く選択することになっています。さらに、これらのデータにはノイズが含まれているため、各ガウス分布が 2 つの単調な部分に分離できるとは言えません => データが減少し始めれば最大値が見つかるという単純な事実に頼ることはできません。

私の同僚はアイデアを思いつきました:

  • 強度しきい値を導入してガウス分布を互いに分離する
  • 各ガウスの強度を合計してその面積を推定し、次にその高さを推定します

しかし、問題は、この疑似ガウス分布の高さをその面積からどのようにすばやく推定できるかということです。

アップデート:

より明確にするために、私が得る強度はガウスの「関数値」を表しているか、ヒストグラムのビンの高さを表しています。

0 投票する
1 に答える
463 参照

matlab - Matlab データ収集、PCI カードが PXI シャーシ カードとして誤って検出される

Matlab 2014b、2014a、2013b、2013a (simulink を使用しない)

Windows7 64 ビット セッション ベースのデータ取得ツールボックス

NI-DAQmx 14.1 および NI-DAQmx 14.0 を使用する

PXI シャーシにあると誤って検出される PCI カードがあります。これにより、実際に取り付けられている PCI カードではなく、存在しない PXI シャーシ カードを誤って参照しているため、次のような操作が失敗します。

obj.startBackground()、obj.startForeground()、どちらもエラーを生成します。例えば:

このモジュールは、PXI シャーシ 4294967295 のスロット 4294967295 にあります。

誰かが解決策をアドバイスしてもらえますか? これは、daqsupport が生成するテキスト ファイルとしての出力も示しています (ただし、上記の情報とほとんど重複しています)。

これは、64 ビット Windows7 の新規インストールで発生することに注意してください。

0 投票する
1 に答える
770 参照

c# - Adlink PCI-7250 イベントコールバック

デジタル入力のいずれかが高くなったときに PCI-7250 (データ取得カード) からイベントコールバックを取得する単純な C# を作成しました。これが私のコードです:

実行すると、実行時にいくつかの乱数を投げ続け、最終的にクラッシュします。EventType (DASK.DBEvent) と関係があると思います。マニュアルを読みましたが、DASK.DBEvent については何も言及されていません。 .

よろしければアドバイスお願いします。

0 投票する
1 に答える
1161 参照

python - Pythonでデータの取得、処理、視覚化を適切に分離する方法は?

私はプロジェクトに取り組んでおり、データ取得、データ処理、および GUI 視覚化 (pyqt と pyqtgraph を使用) をすべて Python で実行したいと考えています。各部分は原則として実装されていますが、さまざまな部分がうまく分離されていないため、ベンチマークとパフォーマンスの向上が困難です。質問は次のとおりです。

ソフトウェアの異なる部分間で大量のデータを処理する良い方法はありますか?

次のシナリオのようなものを考えます。

  • 取得:いくつかのデバイスからデータを取得し、他の場所からアクセスできるデータ コンテナーに保存します。(この部分は、処理と視覚化の部分がなくても実行できるはずです。データ ポイントを失いたくないので、この部分は時間が重要です!)
  • 処理:データ コンテナーからデータを取得して処理し、結果を別のデータ コンテナーに格納します。(また、この部分は、GUI を使用せずに、取得後に遅延して実行できるはずです (たとえば、先週記録したプロセス データ)。)
  • GUI/視覚化:コンテナーから取得および処理されたデータを取得し、視覚化します。
  • データの保存: データの特定の部分をディスクに保存/ストリーミングできるようにしたいと考えています。

「大量のデータ」とは、1 秒あたり約 200 万のデータ ポイント (16 ビット) を処理し、場合によっては保存する必要がある配列を取得することを意味します。

この大量のデータを適切に処理するために使用できる Python のフレームワークはありますか? たぶん、私が接続できるデータサーバーの形で。

0 投票する
0 に答える
81 参照

python - 私のMatlab実験で高いサンプリングレートを得る

私が達成しようとしていることの簡単な説明: 私は、コンピューター画面上のカーソルを制御するために使用されるポテンショメーターを備えた水平に取り付けられたレバーを持っています。これには、Windows XP マシンで Matlab 2011a と Psychtoolbox および Data Acquisition Toolbox を使用します。DAQはAgilent U2300 Aです。多くの異なるアプローチの後、私はこれになりました(サンプルコード):

これは機能しています。時間チェックも含めたので、この while ループは CPU が許容する速度で実行されません。毎秒約 200 ループに制限されており、同じ数のサンプルを取得できます。しかし実際には、これらは別個のサンプルではありません。個別のサンプルを確認すると、1 秒あたり約 15 の異なるサンプルが取得されるため、15 Hz では、画面上でカーソルをスムーズに移動するには不十分です。また、コマンド getSample を使用してみましたが、同じ結果が得られました。

私は何か間違ったことをしていて、誰かがそれを別の方法で行う方法を知っていることを願っています. また、さまざまな言語 (できれば Python) や、場合によってはさまざまな DAQ ハードウェアを使用したさまざまなアプローチの推奨事項も受け入れます。

0 投票する
2 に答える
862 参照

c# - 追加書き込みの間、ファイル ハンドラーを開いたままにしておく必要がありますか?

私はデータ収集を伴うプロジェクトに取り組んでいます。非常に重要な要件の 1 つが次のように説明されています。

  1. 記録の開始時に、ファイルを作成し、そのヘッダーを書き込む必要があります。
  2. データ取得が開始されるとすぐに、アプリケーションは収集したデータを定期的に (通常は 1 秒に 1 回) ファイルに保存し続ける必要があります。
  3. 書き込みは、可能であればアトミックにファイルにデータブロックを追加することから成ります。
  4. エラーが発生した場合 (プログラム エラー、電源障害)、エラーの前の最後の書き込みまでファイルを有効に保つ必要があります。

したがって、スレッドを使用して受信したデータを監視し、このデータ do ファイルを書き込む予定ですが、どの方法が最適かはわかりません (以下のコードは実際のものではありません。感覚をつかむためです)。

最初のオプション: シングル オープン

2 番目のオプション: 複数オープン:

アプリケーションはクライアント マシンで動作することが想定されており、他のプロセスによるファイル アクセスは問題になりません。私が最も懸念していることは次のとおりです。

  1. 複数のオープン/クローズ インパクト パフォーマンスを実行します (通常の書き込み間隔は 1 秒に 1 回であることに注意してください)。
  2. 障害が発生した場合 (明示的な電源障害を含む)、ファイルの整合性を安全に保つのに最適なのはどれですか?
  3. このフォームのいずれかが特に良いまたは悪いプラクティスと見なされますか、または目前の問題の詳細に応じていずれかを使用できますか?