(Qt) を使用してユーザー インターフェイスを作成し、プロセス間通信の形式として共有メモリを使用して C/C++ モーション アプリケーションに接続しています。
現在、多くのメンバーを持つモーション アプリケーションで作成したクラスがあります。これらのメンバーのほとんどは、UI 上のデータを更新するために使用され、そのうちのいくつかは 1 秒間に約 20 ~ 50 回更新されるため、かなり高速です (理由は、モーションを追跡しているためです)。私の問題は、データが UI で頻繁に更新されないことです。数秒ごとに更新されます。「揮発性」を使用して、アプリケーションの構造体で作成された他の変数を使用して機能させることができましたが、クラスのメンバーに対しては機能していないようです。データを更新するサイクルごとにコマンドを使用しているにもかかわらず、アプリケーションで実際のメンバー データが更新されていないことがわかったため、問題が UI (Qt) 側にないことはわかっています。
メンバーが構造体のように揮発性として宣言されていないため、最適化が行われていることが問題であると確信していましたが、揮発性にするとまだ機能しませんでした。モーション アプリケーション内のモーション データを更新する関数でコメントを介して印刷すると、コメントを印刷するコマンドがコンパイラ フォームの最適化を阻止するかのように、UI がより頻繁に更新されることがわかりました。
誰かがこの問題を経験したことがありますか、または可能な解決策を持っていますか?
よろしくお願いいたします。お早めにどうぞ!
編集: インターフェイスは完全にフリーズしません。意図したとおりに継続的に更新するのではなく、数秒ごとに更新するだけです。さまざまなテストを使用して、問題が GUI または共有メモリ側にないことがわかっています。問題は厳密にはモーション アプリケーション側にあります。私が呼び出している関数は以下のとおりです: int
`motionUpdate(MOTION_STAT * stat)
{
positionUpdate(&stat->traj);
}
`
どこ
positionUpdate(){stat->Position = motStatus.pos_fb;}
Position は、x、y、および z を含むクラス メンバーです。positionUpdate() の前にコメントを出力しない限り、関数は位置の値を更新しないようです。UI を更新するために共有メモリの変更を追跡するのではなく、サイクルごとに UI を更新するだけです。