问题标签 [qextserialport]
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++ - 无法检测到 USB 设备
这是我的代码:
我已经连接了“Dreamcheeky Thunder Missile Launcher”USB 玩具,但我无法获得它的供应商 ID 或产品 ID 或至少任何与之相关的信息!见下图
但是使用 USBDView 软件,我可以得到所有的细节。见下图
我的代码有什么问题?或者如果它根本不适合?
c++ - Qt 和 Windows 中的串口问题:qwineventnotifier
我在 Qt -> C++ 中有一个问题。我需要在 Qt 中打开流动站的串口,我下载了库“qextserialport-1.2rc”。在 Linux 中一切正常,但在 Windows 7 中出现错误(找不到名为“qwineventnotifier”的文件)。
我尝试下载此文件,但这并没有解决问题:当我尝试包含库“qextserialport”时仍然出现错误。
谢谢,马特
编辑:错误是:QtCore/private/qwineventnotifier_p.h:No such file or directory
qt - 无法在 Qt 5.0.2 中打开端口
我正在 Qt 上设计一个实时应用程序。卡在 QExtserialport 设计有硬件部分,通过 UART 通信感知和发送信号。我设计应用程序来显示 GUI 界面。以下代码未在 Qt 中打开端口。但它确实在 Minicom 上,cutecom 显示价值。
头文件.h
主窗口.cpp
主窗口.cpp
它总是显示“端口 ttyS0 无法打开”
c++ - QextSerialPort - 检测断开连接
我有一个作为“COM8”连接到计算机的设备。我想知道它是什么时候从电脑上拔下来的,所以我用下面的代码来检测:
但是,在我拔下设备后它们仍然返回 true 。如何检测设备是否已插入?
c++ - qextserialport 奇怪的读取
我使用 Window 7 x64 问题在于我在 PC 上使用 Arduino 发送信息,并且在读取端口时,我收到 Arduino send(0000000) PC 读取 (0000+000) 或类似的东西 (00000+00) - ( 0+000000) 等等。
例如,我将显示一个屏幕截图
和
打开端口
读取数据
为 PC 发送数据 arduino
我无法理解可能有什么问题,尝试了一切。QexSerialPort 库中的示例读得太多。需要帮助。感谢您的帮助。
qt - Qt 程序(在 Raspberry Pi 上)在数据输入缓慢(串口)时运行缓慢
我正在开发一个在 Raspberry Pi 上运行并使用 Pi 的串行端口与 Arduino 交互的程序。
我的架构是:Pi 连接到 PanStamp(Arduino + 无线收发器),并且有一个 Satellite(一个带有几个传感器的 PanStamp)无线发送数据。Pi 可以激活和停用卫星。卫星每秒发送数据约 5 次,连接到 Pi 的 PanStamp 接收此数据并使用串行端口发送。Pi 的 PanStamp 每秒还会发送一些传感器的读数。
为此,我使用 Qt 框架、qextserialport(实现 Qt 的信号/插槽的串行端口库)wiriginpi 来控制 GPIO 和一些 TCP 和 UDP 套接字以通过互联网发送一些数据。
当卫星发送数据时,一切看起来都运行良好。
但是,当我关闭卫星时,整个程序变得很慢。它只显示大约每两秒的数据...正常操作应该是每秒接收一次读数(PanStamp 正在以正确的时间发送数据,我用示波器检查过)。
我有一个与数据一起发送的数据包计数,并且没有数据包丢失。所以它看起来是一种缓冲区或类似的东西正在抑制数据流。
最奇怪的是,当我再次打开卫星(“高速”数据流)时,Pi 显示“数据突发”,就像所有内容都被缓冲并被缓慢处理一样。硬块的大小看起来也与卫星关闭的时间成正比。
有谁知道发生了什么/我该如何测试它?
一些代码:
串口初始化:
函数incoming_data()(每次有数据要读取时调用):
以下是其他函数和数据结构:
经过大量的测试和研究,我终于发现了发生了什么:readyRead()
每次有新数据时都会发出信号,但是正如文档所说“readyRead() 不是递归发出的”,所以看起来incoming_data()
哪个连接到readyRead()
仅当某些字节到达使我的程序与数据包“不同步”并且只能读取某些数据包时才被调用(其他数据包留在缓冲区中)。
尽管如此,当有大量数据到达时,这种“不同步情况”不会发生。
这是我创建的线程,我将创建另一个线程来解决这个特定问题。
非常感谢所有帮助过我的人!
c++ - QextSerialPort (QIODevice) 的 readyRead() 信号调用速度不够快
我在 Raspberry Pi 上使用 qextserialport 与 PanStamp(Arduino 兼容设备)进行通信。
这个连接到 Pi 的 PanStamp 执行两个功能:
- 每秒发送一些传感器的读数(大约 12 个字节);
- 通过无线链路发送它接收到的所有数据(大约 60 字节,大约每秒 6 次)。
我的架构是:
- 集线器:PanStamp + Raspberry Pi;
- 卫星:PanStamp + 一些传感器。
有两种情况:
- 卫星以无线方式向集线器发送数据。在这种情况下,Pi 每秒都会通过其串行端口接收大量数据;
- 卫星关闭,Pi 通过串行端口每秒接收大约 12 个字节。
当卫星关闭时,readyRead()
不会在每次一个字节到达时生成信号,它会将我的程序驱动到“不同步”状态,其中每个数据包读取一个或多个留在缓冲区中(不断增长)。
但是,当我打开卫星并且 Pi 开始接收大量数据时,这种“不同步”情况消失了,出现了一阵数据(缓冲区增长得更快,之后被清空)并且我的程序开始工作“在即时的”。
这是我的程序输出的示例:www.tiago.eti.br/storage/iSEDE.log
正如您在日志中看到的那样,可用字节不断增长,并且每秒发送一次数据(以开头的行HUB:
不是每秒都被处理。开头有一个时间戳)。过了一会儿,爆发(卫星已打开)并且每秒处理大量数据,开始处理卫星的数据(以 开头的行8
),缓冲区被清空,我的程序开始处理数据“即时的”。
那么我该怎么做才能避免缓冲区增长过多并且不丢失数据呢?我试图readyRead()
在缓冲区大于 100 字节时调用连接的函数,但它造成了混乱,我开始丢失一些数据包。
qt - Qt:支持波特率 250k 的串行库
我都试过了QSerialPort
,QExtSerialPort
似乎都不能正确支持 250k。QExtSerialPort
似乎确实支持它,因为它是列出的波特类型,但是每当我使用它连接到板时,我得到的都是垃圾数据,例如波特率设置不正确。我已经验证了所有其他设置,并且我已经使用 miniterm 对其进行了测试,因此该板确实可以工作超过 250k。有没有其他图书馆或者我应该尝试不同的东西QExtSerialPort
?
c++ - 串行 Hexa 对话框(python 代码到 C++/Qt 5.0)
我需要与 RS232 端口(串行)上的指纹对话。我有一个像魅力一样工作的python代码:
但我需要将此代码转换为 C++/Qt。我不明白我需要使用什么功能。
我试过这个:
如果可能,我想使用 QextSerialPort 扩展。我试过但没有成功。我想我不明白我需要做什么转换。
- 编辑 -
我的问题并不是关于管理串口的类,抱歉我的问题不是很清楚。我不知道重现与 python 相同的代码的解决方案是什么:在 RS232 中将字符发送到 hexa。
multithreading - 在 Qt 中等待几秒钟
我对 Qt 中的线程的了解相当有限,现在我遇到了一个似乎与线程有关的问题。我正在使用 QextSerialPort 通过 uart 进行通信。我的串行通信类看起来像这样(剥离到最低限度):
问题是在方法中等待 15 秒initialize()
而不阻塞串行输入。我试过了
乃至
但是通过这两次尝试,我停止获取串行数据(onDataAvailable
在这 15 秒内不再调用)。这样做的正确方法是什么?