問題タブ [cvi]
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.
python - Python を使用した NI CVI
Python IDLE 風のコマンド プロンプト インターフェイスを既存の NI-CVI (LabWindows) アプリケーションに統合したいと考えています。私は Python.org の議論に従おうとしましたが、詳細に迷っているようです。私のような愚か者のためのリソースはありますか?
c - Labwindows / CVI Cプログラムが番号2573を嫌う原因は何ですか?
Windowsの使用
だから私はバイナリファイルからunsignedintデータ値のリストを読んでいます。このファイルには、順番にリストされた多数のデータセットが含まれています。開始を指すchar*から単一のデータセットを読み取る関数は次のとおりです。
このようなコンテキストでのread_datasetの場合:
私のループが番号2573を読み取るまで、すべてが順調に進みます。突然、ランダムで巨大な番号が吐き出され始めます。
たとえば、どうあるべきか
になります
それらの16進数が疑わしいと思われる場合は、その通りです。変更された値の16進値は非常によく知られていることがわかります。
したがって、明らかにこの番号2573により、ストリームポインタが1バイトを取得します。これは、次のデータセットがロードされて解析されるまで続き、神はそれが番号2573を含むことを禁じています。これが発生するスポットをいくつかチェックしました。チェックした各スポットは2573から始まりました。
私はCの世界ではそれほど才能がないことを認めます。これを引き起こす可能性のあるものは、私には完全に不透明です。
compiler-construction - WindowsXPまたはWindows2000OSを検出してCVI実行可能ファイルを実行する方法
私はNILabWindowsCVI 8.1を使用して、WindowsXPとWindows2000OSのいずれかで実行する必要のある実行可能プログラムをコンパイルおよびビルドしています。Windows XPを使用して、実行可能ファイルをコンパイルおよびビルドします。私がこれまでに持っている情報は、次のようにいくつかのステートメントを配置する必要があるということです。
正確な構文とそれを配置する場所(どのヘッダーまたはソースファイルを配置するかなど)を知る必要があります。
command - LabWindows/CVIのRS232を介してFastrackSupremeにATDコマンドを送信する
私は、シリアルRS232を介してコマンドを受信する必要があるFASTRACKSUPREMEに基づいたプロジェクトに取り組んでいます。The
問題は次のとおりです。HyperTermを使用すると、コマンドATDxxxxxxxxx; 正常に動作します。CVI RS232ライブラリを使用しても、何も起こりません。私のコマンドがブロックされたままになる可能性はありますか
シリアルバッファ?これが私のコードです:
問題はどこだ?助けてください!ありがとう。
c - memcpyのパフォーマンスを向上させる方法
概要:
memcpyは、実際のアプリケーションまたはテストアプリケーションのシステムで2GB/秒を超えて転送できないようです。メモリ間のコピーを高速化するにはどうすればよいですか?
全詳細:
データキャプチャアプリケーションの一部として(いくつかの特殊なハードウェアを使用)、一時バッファからメインメモリに約3GB/秒をコピーする必要があります。データを取得するために、ハードウェアドライバーに一連のバッファー(各2MB)を提供します。ハードウェアはデータを各バッファにDMAし、各バッファがいっぱいになるとプログラムに通知します。私のプログラムはバッファを空にし(memcpyを別のより大きなRAMブロックに)、処理されたバッファをカードに再ポストして再度埋めます。memcpyがデータを十分に速く移動することに問題があります。メモリからメモリへのコピーは、実行しているハードウェアで3GB/秒をサポートするのに十分な速度である必要があるようです。Lavalys EVERESTは、9337MB /秒のメモリコピーベンチマーク結果を提供しますが、単純なテストプログラムであっても、memcpyではこれらの速度に近づくことはできません。
バッファ処理コード内のmemcpy呼び出しを追加/削除することで、パフォーマンスの問題を切り分けました。memcpyがなくても、約3GB/秒のフルデータレートで実行できます。memcpyを有効にすると、約550Mb /秒に制限されます(現在のコンパイラを使用)。
私のシステムでmemcpyのベンチマークを行うために、データのいくつかのブロックでmemcpyを呼び出すだけの別のテストプログラムを作成しました。(以下のコードを投稿しました)これは、使用しているコンパイラ/ IDE(National Instruments CVI)とVisual Studio2010の両方で実行しました。現在VisualStudioを使用していませんが、喜んで使用します。必要なパフォーマンスが得られる場合は、切り替えを行います。しかし、やみくもに移動する前に、それが私のmemcpyパフォーマンスの問題を解決することを確認したかったのです。
Visual C ++ 2010:1900MB/秒
NI CVI 2009:550MB/秒
CVIがVisualStudioよりも大幅に遅いことに驚いていませんが、memcpyのパフォーマンスがこれほど低いことに驚いています。これが直接比較できるかどうかはわかりませんが、これはEVERESTベンチマーク帯域幅よりもはるかに低くなっています。そのレベルのパフォーマンスは必要ありませんが、最低3GB/秒が必要です。確かに、標準ライブラリの実装は、エベレストが使用しているものよりもはるかに悪くなることはありません!
この状況でmemcpyを高速化するために、もしあれば、何ができますか?
ハードウェアの詳細:AMDMagnyCours-4xオクタルコア128GBDDR3 Windows Server 2003 Enterprise X64
テストプログラム:
編集:余分な5分があり、貢献したい場合は、上記のコードをマシンで実行して、コメントとして時間を投稿できますか?
unit-testing - NI Lab Windows CVIで利用できるテストフレームワークは何ですか?
NI Lab Windows CVI を使用せざるを得ないので、TDD で作業したいと思っています。ただし、その IDE のテストフレームワークは見つかりませんでした。既知の解決策はありますか?
c++ - リンカ エラー LNK2019 が __stdcall にトレース バックされる 正しいライブラリを取得したと思います - これを解決するにはどうすればよいですか?
LabCVI プロジェクトを MSVS 2010 C++ Express に移植しようとしました。次のようなコード行があります。
リンカー エラーが発生します: LNK2019 "_InitCVIRTEEx@12" - すべての関連するヘッダーには既に cpp ステートメントが含まれています。
私はあなたのために組み合わせたこれらのスニペットにエラーをさかのぼります:
これを要約すると:
この呼び出しは cvirt.lib で定義する必要があります - ライブラリパス (CVI2009\extlib\msvc) に追加されます。リンカー エラーが引き続き発生し、理由がわかりません。
ライブラリを別の方法で追加する必要がありますか? これが本当に正しいライブラリであることを確認するにはどうすればよいですか? エラーはまったく別のものを意味しますか?
cvi - libファイルを調べるにはどうすればよいですか?
私は 390 のライブラリのリストを持っており、ラボ CVI から Visual C にソフトウェアを移植する必要があります。これらの依存関係が私を殺しています。
それらのすべてをインポートすることはできません。それはやり過ぎです-そして、それらのすべてが一意であるとは限らず、まったくロードできるわけではありません。
lib ファイルがどのような呼び出しを行うかを判断する簡単な方法はありますか? このための編集者はいますか?
c - dirent.hなしでC90のディレクトリにアクセスするにはどうすればよいですか?
私はC90に基づいてLabCVIで働いています。
手元にあるタンクは、「..\data」ディレクトリとサブディレクトリにある「*.spec」ファイルの絶対パスを見つけることです。
dirent.hでこれを行う方法についての説明があることは承知していますが、dirent.hなしで行う必要があります。この(パートI、パートII)チュートリアルは、私が探しているものではありません。LabCVIはdirentヘッダーを備えておらず、dirent.hの依存関係がLabCVIと互換性がないため、インターネットからistをインポートできません。
LabCVIへのすべての依存関係を削除したら、より優れたIDE /言語に移行する予定ですが、その日までコードをキャンプ可能に保つ必要があります。そのため、LabCVIのディレクトリユーティリティを使用できません。
これを回避してディレクトリアクセスを取得するにはどうすればよいですか?(コードはXPマシンで実行されます。)