问题标签 [qiodevice]
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++ - 未发出 qextserialport 中的 readyRead() 信号
我正在使用qextserialport与 Windows 8.1 上的蓝牙设备进行通信。我定义了一个ComPort类。我需要先{0xA9,0x55}
在“COM5”上写一条消息,要求蓝牙设备开始传输数据。然后我就可以开始读取数据了。我有一个终端应用程序,显示我已经编写了消息,并且数据在“COM5”上可用。
问题定义:
在comport.cpp中,既不waitForBytesWritten()
也不waitForReadyRead()
返回true
。可用字节数为零,并且onReadyRead()
不调用插槽。我的代码有什么问题?
comport.h
和comport.cpp
c++ - 如何防止 QNetworkAccessManager 缓冲来自 QIODevice 的 POST 内容?
我不确定我需要的功能是否不是 Qt 无法提供的功能,但似乎由于有多个有效的用例,我可能做错了什么并且有人已经处理了这个问题。
我想做的很简单——我想发出一个具有给定内容长度的 POST 请求,并从QIODevice
. QNetworkAccessManager
有一种方法QNetworkReply * QNetworkAccessManager::post(const QNetworkRequest & request, QIODevice * data)
似乎对此很理想。内容长度很大(假设为 8 GB),并且似乎 QtQIODevice::readData
在将任何内容发送到网络之前尝试调用以获取所有数据(至少 Wireshark 在设置较小的内容长度时没有显示任何内容,例如 4 ,产生读取 4 个字节并传输所有内容的行为)。这让我相信 Qt 实际上想要缓冲所有的 POST 内容。我已经明确设置了QNetworkRequest::DoNotBufferUploadDataAttribute
属性,但这并没有改变这一点。
可能它实际上是这样工作的,我对此无能为力,但在这种情况下,根本不适合内存的大文件上传如何工作?无论如何,在我调试 Qt 是否真的在缓冲整个事情时,欢迎遇到同样问题的人提供任何反馈。
qt - QIODevice::读写 | QIODevice::Unbuffered - 不支持的打开模式
http://doc.qt.io/qt-5/qserialport.html#open
警告:模式必须是 QIODevice::ReadOnly、QIODevice::WriteOnly 或 QIODevice::ReadWrite。不支持其他模式。
以下代码不打开串口。
使用无缓冲标志的方法是什么?
c++ - QAudioOutput - 应用程序规模不断增长
我正在尝试每 20 毫秒写入一次 QAudioOutput 的缓冲区。当我尝试执行此代码时,我可以看到进程的大小每秒增加约 4-8 kB。我试图找到一些函数来清除 QIODevice 或 DAudioOuptut 的内部缓冲区,但没有运气。
我正在使用 Qt 5.2.1
在下面的示例中,仅写入了静音(零),但具有相同的效果:
c++ - 如何正确使用QSerialPort不断读写数据?
我必须在工作中驾驶激光,为此我需要与 RS232 中的串行端口通信。由于您在使用激光时必须小心,因此您需要不断读取激光状态(温度、功率等...),为此您必须每 1 或 2 秒发送大量命令(~20) .
我使用 Qt 类QserialPort,我的问题是,当我发送所有命令时,我阻塞了 GUI,程序变得不可用。我阅读了很多关于 QSerialPort 以及如何使用它的内容,例如:Blocking Master、Blocking Slave、Async reader、Terminal 等。我仍然无法弄清楚。
首先我想使用线程,但这个人的回答说这是个坏主意。然后,我尝试不使用线程,但得到了相同的结果。
我想要的是一种与激光通信的方式,它不会使整个程序等待发送的答案以及处理相应的答案。我发送我的第一个命令,激光回答,我处理答案,然后我发送第二个命令,等等......所有这些都在后台。
我当前的实现是基于线程的,但我还有一个没有线程的实现。
我有用于 GUI的MainWindow类,一个Laser类,它知道如何为激光编写消息以理解并理解激光的答案,以及一个LaserThread类打开与串行端口的连接,写入和读取。
要发送命令,我会:
这意味着我在发送新命令之前等待收到答复。我尝试使用 waitForBytesWritten但无法获得预期结果。我必须连续调用这个函数 20 次。
阅读答案:
现在我的两个问题是:
- 或者,我等待发送新命令的时间过长,并且 UI 被冻结
- 或者,我不会等待太多,发送 25 条消息,只得到一个回复。
在不冻结程序的情况下不断与串行端口通信(异步或同步)的正确方法是什么?
c++ - 写一个新文本而不丢失以前的值。在 Qt 中
如何在不丢失先前值的情况下编写新文本
每次初始化 okline_Edit 时,stWrite 函数都会在文件中调用一个新值,然后将 .txt 文件中的前一个值丢失。
或者换句话说
c++ - QtAV 和缓冲区的清理
我正在 Qt 中编写一个应用程序,它允许来自字节数组的视频流。作为视频输出组件,我使用的是 QtAV ( http://www.qtav.org/ )。在我的例子中,这个组件的输入是一个 QIODevice (QBuffer),其中有一个 QByteArray 和我的数据。我将在流式传输期间将数据放入 QByteArray 中,但我不知道如何删除我尚未读取的数据。我的问题是,一段时间后,QByteArray 的维度非常大,我不知道如何减少分配的内存。
谢谢
安杰洛
qt - “QIODevice 设备未打开”仅在 Release 中构建时出现
我正在使用 QNetworkAccessManager 传输文件。我的程序在 Debug 中构建时运行没有任何问题。但是内置Release时出现了一个奇怪的问题:QIODevice::read (QFile, "my file path"): device not open
我的代码有什么问题?感谢您的帮助!
python - Pyqt4 QMovie FFMPEG 解码器
我对pyqt很陌生。所以请原谅我可能有的任何误解。
我无法使用以下方法将视频直接加载到 QMovie:
__init__ (self, QString fileName, ...)
QMovie 本身在支持(解码)视频格式方面似乎相当挑剔。
这就是为什么我想使用 FFMPEG 解码 VideoFiles,将帧存储到 QIODevice 并将设备提供给 QMovie 使用:
__init__ (self, QIODevice device, ...)
此代码使用 FFMPEG 解码视频文件并将前 20 帧作为 JPG 存储到 QIODevice 流中。这个 QIODevice 被馈送到 QMovie。
伟大的!QMovie 全速播放......但是......只有一次......并且QMovie.frameCount()
返回只是1
帧而不是 20......(之前查询时QMovie.start()
)
使用 PyQt4、imageio、numpy
为什么是帧数1
而不是 20?我究竟做错了什么?
有没有更直接的方法将 FFMPEG 结果数据存储到 QIODevice 中?Prehaps 一次将 videoFile 加载到 QIODevice 中,而不是单独加载每一帧?
提前谢谢了。
c++ - Qt | 流程 | 将行写入控制台应用程序
我正在使用 QProcess 与控制台应用程序进行通信:我正在写一些单词并读取输出。但我想通过 QProcess 写行。例如,我有下一个控制台应用程序:
所以,我不能通过 QProcess::exec 或 QProcess::start 传递参数,因为它将参数传递给 char* argv[]。我应该在启动 QProcess 后通过它。我试过使用 QProcess::write,但有问题:如果我使用
我会成功的。但如果我使用
我的程序将单独写下所有这个词,它看起来像
控制台应用程序无法将其识别为一个字符串。我尝试过使用不同的方法:在双括号中写行,
和
使用受保护的方法QIODEvice::setOpenMode
并设置QIODevice::Text
标志,使用QDataStream
,使用特殊符号,如,,\r
以及不同的组合。另外,我尝试使用多个\n
\t
QProcess::write
我知道,QProcess 继承了 QIODevice 并且有机会像文件一样处理它(输入和输出)。但是单词是否会在文件中单独写入文件并不重要。就我而言,这确实很重要。
谁能帮我?