問題タブ [labview]
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.
c++ - LabView からアクセスできるように、単純な API を C++ アプリケーションに追加する方法は?
C++ (Visual Studio 6.0) で書かれたデータ取得プログラムがあります。一部のクライアントは、独自のカスタム ソフトウェアまたは LabView からソフトウェアを制御したいと考えています。配布できる dll を使用した単純な API を考え出し、開始方法に関するヒントをいくつか提供したいと考えています。これは非常に基本的なもので、おそらく 4 つまたは 5 つのコマンドです。私の DAQ プログラムは、同じマシンの独自のウィンドウで引き続き実行されます。別のプログラムから制御できるように設定したいと思います。
labview - マルチチャネルデータを高速で収集するときに Labview チャートを定期的に更新する方法
Labview データ収集プログラムのヘルプを探しています。チャネルごとに 8kHz で 2ms のデータを収集できた場合 (16 データ ポイント) (ナショナル インスツルメンツのデータ収集ボードを使用して 4 つのアナログ チャネルでデータを収集しています)。DAQ-MX 収集タスクは、4 つの波形の 1D 配列を提供します。
データを表示しない場合、すべての計算時間は約 2 ミリ秒であり、処理ループが収集ループより少し遅れても問題ありません。Labview のフロント パネルでチャートを更新すると、許容できない遅延が発生します。表示を非常に迅速に更新する必要はありません。おそらく 5 ~ 10Hz で十分でしょう。しかし、私はこれを設定する方法がわかりません。
私の現在のLabview VIには3つの並列ループがあります
- データ収集のタイムループ
- 分析と処理のループ
- データを TDMS ファイルとしてディスクにキャッシュする優先度の低いループ
データは、キューを使用してコレクション ループから他のループに渡されます。Labviewの例でいくつかのアイデアが得られましたが、行き詰まっています。
提案、参考文献、アイデアをいただければ幸いです。
ありがとう
アジム
フォローアップの質問
eaolson は、表示目的でデータを再サンプリングすることを提案しています。DAQ-MX 読み取りからのデータは、波形の 1 次元配列です。したがって、各チャネルの波形データを何らかの方法で構築または連結する必要があります。次に、フロント パネル チャートを更新する前に、データを再サンプリングします。最善の方法は、データをキューに入れ、表示ループでスタック ビルドをデキューし、画面の解像度に基づいてデータを再サンプリングしてから、グラフを更新することだと思います。他のアプローチはありますか。eaolson が提案した詳細については、(NI Labview フォーラム)[ http://forums.ni.com/ni/board?board.id=170]を参照してください。
アップデート
- グラフの許容可能な更新レートを 5 ~ 10Hz に変更 (Underflow と eaolson に感謝)
- ディスク キャッシュ ループは優先度が低い (thanks eaolson)
- すべての応答に感謝します。
labview - LabVIEWの特定の機能で不満に思っていることは何ですか?
ご容赦ください。これは言語論争でも炎上でもありません。本当の意見募集です。
場合によっては、従来のテキスト コーダーに LabVIEW (LV) での考え方を教えなければなりません。このプロセスの中で、LV がいかにひどいものかについて耳にすることがよくあります。この洞察が、「言語 X の方がはるかに優れている!」以外の合理的な観察を伴うことはめったにありません。この声明は彼らにとって満足のいくものですが、何が彼らを苛立たせているのかを理解するのに役立ちません.
では、LabVIEWとテキスト言語の経験がある方は、LVの具体的などのような点に心を奪われますか?
------ まとめ -------
すべての答えをありがとう!一部の問題は以下のコメントで回答されています。一部は他のサイトに存在し、一部は LV の純粋な問題です。元の質問の精神で、ここでこれらすべてに答えようとするつもりはありません。LAVAまたはNIの Web サイトを確認してください。これらの多くが克服できることに驚くでしょう。
- 意図しない同時実行
- 従来のテキスト操作ツールへのアクセスなし
- バイナリのみのソース コード管理
- 分岐とマージが難しい
- 開いているウィンドウが多すぎる
- テキストの構文がより明確/明確/表現力豊かになっている
- クリーンなコーディングには多くの時間と操作が必要です
- 大規模でアクセスが困難な API/パレット システム
- マウスが必要
- ファイルの名前空間: メモリ内に同じ名前の重複ファイルはありません
- LV オブジェクトはネイティブに値渡しのみです
- コードを表示するには開発環境が必要です
- ズーム不足
- 起動が遅い
- 記憶の豚
- 「巨大な」コードは扱いにくい
- UIのロックアップは簡単です
- トラックパッドと LV がうまく混ざらない
- 文字列操作はグラフィカルに肥大化しています
- 限定的な UI カスタマイズ
- 「隠された」プリミティブ (はい、存在します)
- 公式のメタプログラミング機能の欠如 (ただし、それほど長くはありません)
- Unicode サポートの欠如
labview - Labview の for/while ループでインデックスを手動でインクリメント/デクリメントするにはどうすればよいですか
これが私の基本的な使用例です:
Labview が外部ハードウェアからトリガーを受信すると、アナログ データの収集が開始されます。このデータを監視し、アナログ データがしきい値に達すると、別のハードウェアをトリガーします。このしきい値は、試行ごとに異なる値を持つことができます。ただし、オペレーターは試行をやり直したい場合があります (ノイズのためにトリガーが早期に送信された場合、またはしきい値に予想どおりに達しなかった場合)。
インデックスをインクリメント/デクリメントすることは可能ですか、それとも必要に応じてインクリメント/デクリメントできるシフト レジスタを使用する必要がありますか (つまり、やり直しボタンが押された場合にデクリメントします)?
ありがとう
アジム
labview - LabVIEWアプリケーションで使用されるVIのリストを簡単に作成
継承したLabVIEWアプリケーションには、多数のサブVIがあります。クリーンアップの過程で、含まれているVIの一部が使用されていないことを発見しました。VI階層を使用して、アイコンとして含まれているすべてのVIを表示できることは知っていますが、これはディレクトリリストとの比較にはあまり役立ちません。LabVIEWアプリケーションで使用されるVIのリストを作成する(簡単な)方法はありますか?リストが欲しいだけです。
labview - LabVIEWのテキストボックスインジケータとスライダーに値を表示するにはどうすればよいですか?
LabVIEWのフロントパネルで2つのインジケータをリンクして、常に同じ値になるようにする方法はありますか?現在、両方を毎回同じ値に設定していますが、一方を他方をミラーリングするように設定する方法があれば、はるかに簡単です。
deployment - Program Filesの下にLabVIEW計測器ドライバをビルドする必要がありますか?
当社が販売するデバイス用の LabVIEW プラグ アンド プレイ計測器ドライバ プロジェクトを構築しようとしています。指示に従ってプロジェクトを作成すると、LabVIEW プログラムでプロジェクトが作成されました。
C:\Program Files\National Instruments\LabVIEW 2011\instr.lib
そのフォルダーをソース管理に接続して、そこですべての作業を行うこともできると思いますが、Program Files の下で作業しているのは奇妙に感じます。プロジェクト フォルダーを通常のワークスペース フォルダーに移動しようとすると、すべてのサブパレット ファイル (*.mnu) が壊れてしまいました。再作成することはできましたが、LabVIEW の Web サイトからドライバをインストールしたお客様にはうまくいかないのではないかと心配しています。
ドライバー プロジェクトを移動することはできますか?それとも、既定の場所にとどめておく必要がありますか? LabVIEW を別の場所 (ドライブ D: など) にインストールした場合、ドライバ メニューは機能しませんか?
coding-style - LabVIEWではクラスタは推奨されていませんか?
LabVIEW計測器ドライバのガイドライン(セクション6.2)で次のコメントを見つけました。
推奨パターンよりも多くの端子が必要な場合は、VI の制御器と表示器のグループ化を再検討してください。エラーインとエラーアウトを除いて、クラスタを使用して端末の数を最小限に抑えることは避けてください。クラスタでは、多くの場合、ユーザーがクラスタからデータをアンバンドルおよび再バンドルする必要があります。
ナショナルインスツルメンツがクラスタ化を推奨していない場合、「VI の制御器と表示器のグループ化を再検討する」とはどういう意味ですか?
クラスタを使うのがとても好きで、VI が改善されたと思います。何か不足していますか?
.net - ProcessorArchitecture が x86 または MSIL にロックされる原因は何ですか?
COMを使用してLabVIEWアプリケーション(.exeとしてビルド)を呼び出す.Net 2.0アプリケーションがあります。LabVIEW アプリケーションは、作成したさまざまな .Net アセンブリを呼び出します。
通常、これはすべて正常に機能します。LabVIEWアプリを適切なファイルの適切なバージョンにリダイレクトするapp.configがありますが、すべて問題ありません。
昨日、LabVIEW アプリケーションは、この 1 台の PC でアセンブリの 1 つが見つからないと判断しました。Fusion のログ エラーは、アセンブリの x86 バージョンが必要であるが、MSIL バージョンは既に読み込まれていることを示していました。
問題のアセンブリを platform=x86 でビルドしたことに注意してください。また、同じビルドが 5 台の同一の (ハードウェアに至るまで) PC で問題なく動作したことにも注意してください。
だから私は、x86 を強制する理由はないと考えました。ビルドからプラットフォーム スペックを削除し、アセンブリの MSIL バージョンをビルドしました。
その後、Fusion で同じエラーが発生しましたが、x86 バージョンが既に読み込まれているときに、アセンブリの MSIL バージョンが必要であるとのことでした。
(コルフラグもいじってみました。)
アセンブリを GAC に登録しません。アセンブリはすべてアプリケーションに対してローカルであり、その PC にはアセンブリの他のコピーはありません。
ああ、混乱に加えて、データベースを更新した後、すべての問題が解消されました。私が始めたのと同じビルドで、今は動いています。
問題のアセンブリは、DB コードの一部ではなく、別のクラスとそれに関連付けられたファクトリです。DB コード アセンブリを使用しますが、データベースとの直接通信は行いません。
.Net の ProcessorArchitecture が x86 または MSIL にロックされる理由は何ですか?
これはあなたに起こったことがありますか? もしそうなら、それを修正するために何をしましたか?
(問題が再発した場合は、正確な Fusion ログを投稿します。問題が解決したため、利用可能なログがありません。)
http - labviewのURLからjpegを表示する
URLからjpeg画像を表示するLabVIEWVIを作成する必要があります。(URLはいくつかのデータに基づいて生成されます)
ハードドライブから画像を表示する方法(JPEGファイルの読み取り)を見つけたので、おそらく必要なのは、一時ファイルに画像をダウンロードする方法だけです。
私が見つけたのは、いくつかの低レベルTCPクライアントVIだけです。もっと簡単な方法はありますか?ない場合は、ブラウザウィンドウを開くことはできますが、開きたくありません。