问题标签 [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.

0 投票
1 回答
345 浏览

c++ - 无法检测到 USB 设备

这是我的代码:

我已经连接了“Dreamcheeky Thunder Missile Launcher”USB 玩具,但我无法获得它的供应商 ID 或产品 ID 或至少任何与之相关的信息!见下图

在此处输入图像描述

但是使用 USBDView 软件,我可以得到所有的细节。见下图

在此处输入图像描述

我的代码有什么问题?或者如果它根本不适合?

0 投票
0 回答
562 浏览

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

0 投票
1 回答
395 浏览

qt - 无法在 Qt 5.0.2 中打开端口

我正在 Qt 上设计一个实时应用程序。卡在 QExtserialport 设计有硬件部分,通过 UART 通信感知和发送信号。我设计应用程序来显示 GUI 界面。以下代码未在 Qt 中打开端口。但它确实在 Minicom 上,cutecom 显示价值。

头文件.h

主窗口.cpp

主窗口.cpp

它总是显示“端口 ttyS0 无法打开”

0 投票
2 回答
209 浏览

c++ - QextSerialPort - 检测断开连接

我有一个作为“COM8”连接到计算机的设备。我想知道它是什么时候从电脑上拔下来的,所以我用下面的代码来检测:

但是,在我拔下设备后它们仍然返回 true 。如何检测设备是否已插入?

0 投票
1 回答
1031 浏览

c++ - qextserialport 奇怪的读取

我使用 Window 7 x64 问题在于我在 PC 上使用 Arduino 发送信息,并且在读取端口时,我收到 Arduino send(0000000) PC 读取 (0000+000) 或类似的东西 (00000+00) - ( 0+000000) 等等。

例如,我将显示一个屏幕截图

在此处输入图像描述

在此处输入图像描述

打开端口

读取数据

为 PC 发送数据 arduino

我无法理解可能有什么问题,尝试了一切。QexSerialPort 库中的示例读得太多。需要帮助。感谢您的帮助。

0 投票
1 回答
1930 浏览

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()仅当某些字节到达使我的程序与数据包“不同步”并且只能读取某些数据包时才被调用(其他数据包留在缓冲区中)。

尽管如此,当有大量数据到达时,这种“不同步情况”不会发生。

这是我创建的线程,我将创建另一个线程来解决这个特定问题。

非常感谢所有帮助过我的人!

0 投票
1 回答
1381 浏览

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 字节时调用连接的函数,但它造成了混乱,我开始丢失一些数据包。

0 投票
1 回答
1503 浏览

qt - Qt:支持波特率 250k 的串行库

我都试过了QSerialPortQExtSerialPort似乎都不能正确支持 250k。QExtSerialPort似乎确实支持它,因为它是列出的波特类型,但是每当我使用它连接到板时,我得到的都是垃圾数据,例如波特率设置不正确。我已经验证了所有其他设置,并且我已经使用 miniterm 对其进行了测试,因此该板确实可以工作超过 250k。有没有其他图书馆或者我应该尝试不同的东西QExtSerialPort

0 投票
2 回答
381 浏览

c++ - 串行 Hexa 对话框(python 代码到 C++/Qt 5.0)

我需要与 RS232 端口(串行)上的指纹对话。我有一个像魅力一样工作的python代码:

但我需要将此代码转换为 C++/Qt。我不明白我需要使用什么功能。

我试过这个:

如果可能,我想使用 QextSerialPort 扩展。我试过但没有成功。我想我不明白我需要做什么转换。

- 编辑 -

我的问题并不是关于管理串口的类,抱歉我的问题不是很清楚。我不知道重现与 python 相同的代码的解决方案是什么:在 RS232 中将字符发送到 hexa。

0 投票
2 回答
923 浏览

multithreading - 在 Qt 中等待几秒钟

我对 Qt 中的线程的了解相当有限,现在我遇到了一个似乎与线程有关的问题。我正在使用 QextSerialPort 通过 uart 进行通信。我的串行通信类看起来像这样(剥离到最低限度):

问题是在方法中等待 15 秒initialize()而不阻塞串行输入。我试过了

乃至

但是通过这两次尝试,我停止获取串行数据(onDataAvailable在这 15 秒内不再调用)。这样做的正确方法是什么?