问题标签 [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 进行运行长度编码。现在我正在使用 QByteArrays qCompress 和 qUncompress 函数,它们使用 zlib 和默认压缩参数。

谷歌搜索后,我没有发现任何第三方库或 Qt 组件似乎可以开箱即用地执行 RLE。谁能给我指点 Qt 的 RLE 编码?

谢谢 -

0 投票
1 回答
4498 浏览

c++ - Qt QSharedMemory 如何更新共享内存位置

我有一个由 2 个不同的 Qt 应用程序链接的库( testlib-lib.so )。我的问题是初始化后无法更新共享内存。

Qt App A 在它的 main() 中有以下内容:

Qt App B,尝试通过执行以下操作更新共享内存:

将共享内存初始化为“12345 init shared memory”后,我似乎无法更新那里的文本存储。当我在 App B 中调用 updateText() 方法时,会调用库方法 writeToSharedMemory() 并且该方法中的 qDebug() 会打印我希望在共享内存中更新的文本,但是当我在尝试之后调用以下代码时更新共享内存,它总是打印原始初始文本“12345 init shared memory”:

为什么我似乎无法更新共享内存?我究竟做错了什么?谢谢 -

0 投票
1 回答
917 浏览

qt - Qt 通过 HTTP 流式传输大文件并刷新到 eMMC Flash

我正在一个内存非常有限的嵌入式 Linux 设备上通过 HTTP 将一个大文件 ( 1Gb ) 流式传输到我在 Qt 中的服务器。当我第一次收到标头时,我确定将数据写入文件系统的哪个位置,创建一个指向该位置的 QFile 指针,然后打开文件进行追加。服务器中有一个“累积”函数,每次新数据到达套接字时都会调用该函数。从那个累积函数中,我想通过 write() 将数据流式传输到文件中。您可以在下面看到我的累积功能。

我的问题是执行此操作时的内存使用情况——我的内存不足。我不应该能够在每次累积迭代中刷新()和 fsync(),而不必担心 RAM 的使用吗?我做错了什么,我该如何解决?谢谢 -

我在累积功能之前打开我的文件一次:

这是累加函数的一部分:

编辑:

我检测了我的代码,“waitForBytesWritten(-1)”调用总是返回“false”。文档说这应该等到数据写入设备。

此外,如果我只取消注释“写入(数据)”行,那么我的可用内存永远不会减少。会发生什么?“写”是如何消耗这么多内存的?

编辑:

现在我正在做以下事情。我没有用完内存,但我的可用内存下降到 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 的 Qt QTcpSocket 需要在单独的线程中进行事件循环

我在 Qt 中有一个 Web 服务器,它将读取一个非常大的(~1Gb)文件并通过 QTcpSocket 将数据返回给请求者。此套接字由主服务器线程创建。我想使用 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 Cross-Compiled 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 段的进程。我还尝试在不每次都追加的情况下连续写入并且效果很好,因此当我尝试将更多数据追加到共享内存段时发生了一些事情。有任何想法吗?谢谢!

编辑:也许,这是由于我的目标嵌入式设备非常小。当我尝试写入共享内存时,可用 RAM 很大,但我注意到在 /tmp 目录(仅给出 4Mb )中我有以下条目 - 虽然 /tmp 中几乎没有消耗大小所以我'我不知道为什么我不能分配更多的内存,QSharedMemory::create 方法也不会因为我的最大大小 960000 失败:

0 投票
2 回答
2893 浏览

c++ - Qt GraphicsScene 背景不变

我是 Qt 的新手。我正在通过 QGraphicsScene 类处理画布小部件。但我无法更改小部件的默认白色背景。这是代码。我尝试使用 QBrush 设置背景。但它不起作用.它仍然是白色的。下面的代码有什么问题?

0 投票
1 回答
1717 浏览

qt - Qt QProcess 抱怨 QThread::Start ,线程创建错误

我有一个非常简单的应用程序,它应该使用 QProcess 来进行一些系统控制。然后整个程序如下。每次我运行该应用程序时,它都会抱怨以下内容:

我使用 _POSIX_THREAD_THREADS_MAX 打印出一个进程的最大线程数,它打印 64。我也可以在命令行上运行 QProcess 命令,没有任何问题。是什么赋予了?

代码:

注意:我最近从 Qt 4.8.3 升级到 Qt 4.8.4 但这真的不应该破坏 QProcess .. 我也找不到错误报告。

0 投票
2 回答
1123 浏览

qt - 需要从 Qt GUI 中退出一个进程,就像它启动一样

我正在尝试运行放置在 SBC6845 [在 /ftest 中,如图所示] 内的 C++ 可执行文件。现在这些可执行文件正在运行

无限循环。现在,当我只从终端运行代码时,我可以随时杀死它们。但是我无法在从 gui 内部运行时杀死它们。我使用 Qpr​​ocess 执行这些代码,如下所示:

现在的问题是当pushbuttonpushbutton_2vcm_test()或被offloader_test()调用时,gui 变得无响应。由于 gui 一直在等待 /ftest 中的代码完成退出选项不起作用,我必须再次从终端退出。从终端退出也会关闭代码和 gui。

我也尝试过搜索解决方案并使用过线程。但是从按钮启动线程时出现分段错误。

我需要能够在执行过程中退出该过程(非常感谢修改此代码或任何新想法)。我是新手,所以请忽略我糟糕的编码技能。谢谢。