問題タブ [qtembedded]

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 投票する
1 に答える
657 参照

qt - QByteArray の Qt ランレングス エンコーディング (RLE)

大部分が冗長な画像データの Qt QByteArray でランレングス エンコーディングを実行したいと考えています。現在、デフォルトの圧縮パラメーターで zlib を使用する QByteArrays qCompress および qUncompress 関数を使用しています。

グーグルの後、RLEをすぐに実行できるように見えるサードパーティのライブラリやQtコンポーネントは見つかりませんでした。誰かがQtのRLEエンコーディングを教えてもらえますか?

ありがとう -

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

c++ - QtQSharedMemory共有メモリの場所を更新する方法

2つの異なるQtアプリによってリンクされているライブラリ(testlib-lib.so)があります。私の問題は、共有メモリを初期化した後、それを更新できないことです。

QtアプリAのmain()には次のものがあります。

QtアプリBは、次のようにして共有メモリを更新しようとします。

共有メモリを「12345initsharedmemory」に初期化した後、そこのテキストストアを更新できないようです。アプリBでupdateText()メソッドを呼び出すと、ライブラリメソッドwriteToSharedMemory()が呼び出され、メソッドのqDebug()が共有メモリに更新したいテキストを出力しますが、次のコードを呼び出した後、共有メモリを更新すると、常に元の初期テキスト「12345initsharedmemory」が出力されます。

共有メモリを更新できるのはなぜですか?私は何が間違っているのですか?ありがとう -

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

qt - Qt HTTP 経由の大きなファイルのストリーミングと eMMC フラッシュへのフラッシュ

非常にメモリに制約のある組み込み Linux デバイス上の Qt のサーバーに HTTP 経由で大きなファイル ( 1Gb ) をストリーミングしています。最初にヘッダーを受け取ったときに、ファイル システムのどこにデータを書き込むかを決定し、その場所への QFile ポインターを作成し、追加するためにファイルを開きます。サーバーには、新しいデータがソケットに到着するたびに呼び出される「蓄積」機能があります。その蓄積関数から、write() を介してデータをファイルに直接ストリーミングしたいと考えています。私の蓄積機能を以下に示します。

私の問題は、これを行うときのメモリ使用量です-メモリが不足しています。蓄積の反復ごとに flush() および fsync() を実行でき、RAM の使用を心配する必要はありませんか? 私は何を間違っていますか?どうすれば修正できますか? ありがとう -

累積関数の前にファイルを 1 回開きます。

以下は、蓄積関数の一部です。

編集:

コードを計測すると、'waitForBytesWritten(-1)' 呼び出しは常に 'false' を返します。ドキュメントによると、データがデバイスに書き込まれるまで待機する必要があります。

また、「write(data)」行だけをコメント解除すると、空きメモリが減ることはありません。何が起こっているのでしょうか?「書き込み」はどのようにして大量のメモリを消費するのですか?

編集:

今、私は次のことをしています。メモリが不足することはありませんが、空きメモリが 2Mb に減少し、ファイル全体が転送されるまでそこにとどまります。その時点で、メモリが解放されます。途中で転送を強制終了すると、プロセスを再起動して同じファイルに書き込もうとするまで、約 2Mb の空き領域が残っているため、カーネルがメモリを保持しているように見えます。私はまだ、反復ごとにメモリを使用およびフラッシュできるはずだと思います。

編集:

この種のことは、私が Linux キャッシングを誤解しているように思えます。この投稿 --> http://blog.scoutapp.com/articles/2010/10/06/determining-free-memory-on-linuxを読んだ後、「free -mt」の出力を誤解している可能性があります。私はその出力の「空き」フィールドを監視しており、大規模なファイル転送で 2MB 前後に落ちているのを確認しています。ファイル転送が完了したら、高レベルの無料データに戻ることを望みます.

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

qt - QtConcurrent ::runを使用したQtQTcpSocketには、別のスレッドでのイベントループが必要です

Qtに非常に大きな(〜1Gb)ファイルを読み取り、QTcpSocketを介してデータをリクエスターに返すWebサーバーがあります。このソケットは、メインサーバースレッドによって作成されます。QtConcurrentを使用して、このソケットをワーカースレッドに渡し、そこにデータを送り返したいと思います。

'returnPartialLargeFile'関数は次のようになります。

私が得るエラーは、'loop.exec()'行をコメントアウトしたままにすると、次のエラーが発生することです。

コメントを外すと、ここでの関数はexec()行で短絡し、ソケットにデータを書き込んだりデータを書き込んだりすることはありませんが、エラーは発生しません。whileループからのデータを含まない切り捨てられた応答を取得するだけです。 。

ソケットの親を変更して新しいスレッドに移動しているので、問題がイベントループとソケットの信号とスロットだけにあることを願っています。私がここで間違っていることについて何か考えはありますか?どうすればこれを機能させることができますか?信号/スロットの問題が発生した場合、ここで接続する必要があるのはどれですか?ありがとう -

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

c++ - pthread_createエラー:

私は自分の目的のためにこのコードを書きました。event_handler()という名前のルーチンを実行するスレッドを作成します。ルーチンevent_handlerは、引数としてクラスオブジェクトQApplicationのインスタンスを取り、そのexec()メソッドを呼び出します。

しかし、このコードを作成しようとすると、このエラーが発生します

私のコードの問題は何ですか(私はこの分野の初心者であることを覚えておいてください、それは非常にばかげた間違いかもしれません:-))

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

qt - Qt 4.8.4 クロスコンパイル for Embedded Linux が QNetworkProxy エラーで失敗する

次のオプションを使用して、組み込み Linux 用に Qt をクロスコンパイルしようとしています。

組み込みデバイス用の Webkit が本当に必要です。構成オプションに「-webkit」を含めると、ビルドは最終的に以下のトレースバックで失敗します。

「-webkit」オプションのみを削除すると、ビルドは問題なく完了します。

では、なぜ QNetworkProxy エラーが発生するのでしょうか? どうすれば修正できますか? ありがとう!

編集:QNetworkProxyを明示的に含めるために以下を追加しようとしたことにも注意してくださいが、まったく同じエラーが発生します:

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

qt - いくつかの書き込みが成功した後の Qt QSharedMemory セグメンテーション違反

QSharedMemory を使用していくつかのデータを保存しており、その後、そこに含まれているものにデータを追加したいと考えています。そこで、新しいデータで次のコードを数回呼び出します。「audioBuffer」は、この関数に与えられた新しいデータです。memcpy 操作でエラーを検出する前に、この関数を約 4 ~ 7 回呼び出すことができます (時間はさまざまです)。QSharedMemory の場所のサイズは非常に大きいため、セグ フォールトの前に行ういくつかの呼び出しでは、memcpy が境界を越えてデータをコピーするという問題はありません。また、m_SharedAudioBuffer.errorString() は memcpy 操作までエラーを出しません。現在、この QSharedMemory セグメントを使用するプロセスは 1 つだけです。また、毎回追加せずに継続的に書き込もうとしましたが、それは正常に機能するため、共有メモリセグメントにさらにデータを追加しようとすると何かが発生します. 何か案は?ありがとう!

編集:おそらく、これは私のターゲットの組み込みデバイスが非常に小さいためです。共有メモリに書き込もうとすると、使用可能な RAM が大きくなりますが、/tmp ディレクトリ (4Mb しか指定されていません) に次のエントリがあることに気付きました。メモリを割り当てられなかった理由がわかりません。また、QSharedMemory::create メソッドが最大サイズの 960000 で失敗することはありません。

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

c++ - Qt GraphicsScene の背景が変わらない

私は Qt の初心者です。QGraphicsScene クラスを介してキャンバス ウィジェットを処理しています。しかし、ウィジェットのデフォルトの白い背景を変更することはできません。コードは次のとおりです。QBrush を使用して背景を設定しようとしましたが、機能しませんでした。 .それは白いままです.次のコードの問題は何ですか?

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

qt - プロセスが開始されたときと同じように、Qt GUI 内からプロセスを終了する必要がある

SBC6845 内 [図のように /ftest 内] に配置された C++ 実行可能ファイルを実行しようとしています。現在、これらの実行可能ファイルは

無限ループ。ターミナルからコードのみを実行すると、いつでもそれらを殺すことができます。しかし、GUI 内から実行中にそれらを殺すことはできません。これらのコードを Qprocess で次のように実行します。

ここでの問題は、pushbuttonまたはpushbutton_2 ievcm_test()またはoffloader_test()が呼び出されると、GUI が応答しなくなることです。GUI は /ftest のコードが終了するのを待ち続けるため、quit オプションが機能せず、ターミナルから再度終了する必要があります。また、ターミナルを終了すると、コードと GUI の両方が閉じます。

私は解決策を検索してみましたが、スレッドも使用しました。しかし、プッシュボタンからスレッドを開始すると、セグメンテーション エラーが発生します。

実行中にプロセスを終了できるようにする必要があります (このコードの変更または新しいアイデアは大歓迎です)。私は初心者なので、私のコーディングスキルの低さは無視してください。ありがとう。