问题标签 [qtserialport]

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 回答
2366 浏览

c++ - 如果 arduino-ide 之前没有打开连接,则无法使用 QSerialPort 与 arduino 通信

我正在使用以下代码打开一个串行端口以与 arduino 进行通信。

之后我尝试使用以下代码从连接中读取:

读取不起作用等待 10 秒后超时。但是,当我在运行我的 QT 代码之前打开和关闭 arduino-ide 内的串行监视器时,它可以工作。我的猜测是 ardunio-ide 对我缺少的端口做了一些事情,但据我所知,我使用与 arduino-ide 完全相同的设置来打开串行端口。

这是在 arduino 上运行的代码:

家伙也有类似的问题,他比较了putty和QSerialPort的串口设置。他发现设置fDtrControlfOutX不同fIutX。我尝试更改fDtrControl,但没有效果。我不知道如何设置fOutXfIutX使用 QT。

任何想法可能导致此错误?

编辑: 解决方案:port.setDataTerminalReady(true)丢失

0 投票
1 回答
482 浏览

c++ - 在 BeagleBone Black 上找不到带有 QtSerialPort 的 USB 虚拟端口

我正在使用 Qt Enterprise(到目前为止的 Boot2Qt 评估版)开始一个新的嵌入式软件项目,并尝试使用 QtSerialPort 来检测我系统中的所有虚拟端口。实际上,我只是简单地尝试了 Qt 5.2.1 中 serialport 示例文件夹中的 cenumerator 示例。它可以在 Windows 7 和 Ubuntu 13.04 桌面上完美运行,但是当我使用 Boot2Qt 在 BeagleBone Black 上运行它时,使用 QSerialPortInfo::availablePorts() 无法找到虚拟 comport。它只列出了 5 个端口:ttyO0、ttyS0、ttyS1、ttyS2、ttyS3,我认为这是 BeagleBone Black 上的默认端口。缺少应列为 ttyUSB0 的 USB 虚拟端口。

我还尝试在 BeagleBone Black 上登录 Angstrom 系统,似乎“/dev/ttyUSB0”确实存在。

有没有人知道我做错了什么或者我错过了什么?

非常感谢!

0 投票
1 回答
867 浏览

c++ - QtAddon SerialPort 从 Qt4 到 Qt5

我正在将一个项目从 Qt4 迁移到 Qt5。我完成了项目本身的迁移,现在我正在研究这些库。到目前为止,我在将它们转换和链接到项目时还没有遇到很多问题,但是这个问题抛出了未定义的引用。

该项目使用QtSerialPort,它使用它的Qt4版本完美编译,它在.pro文件中是这样链接的:

我已经用/for Qt5 编译了串行端口库并将其链接如下:

但我不断收到这些错误:

我知道它是一个链接器错误,因为“ld 返回 1 退出状态”我尝试链接 libQt5SerialPortd.a、libQt5SerialPort.dll 和 libQt5SerialPortd.dll 但它会引发相同的错误
(顺便说一句,如果有人知道 libNAMEd 之间的区别.a 和 libNAME.a 请分享您的知识)

也许 QtAddOn 现在在另一个库中?因为否则它不应该识别许多其他功能,不仅是 QtAddOn 的功能。
非常感谢你。我不知道没有stackoverflow我会做什么。

编辑好吧,我发现告诉将任何 SerialPortInfo 声明的变量更改为 QSerialPortInfo,我已经在我的项目中做到了这一点并且我得到了新的错误,但现在我不确定我应该放置哪个#include:

我已经尝试了其中的每一个,但都给了我错误。我会继续尝试,看看是否有什么清楚的

0 投票
1 回答
12379 浏览

c++ - 如何在单独的线程上设置 QSerialPort?

按照官方文档,我正在尝试这样做:

工人构造函数:

没有编译错误,但是当我执行它时会抛出这个:

也就是说,它告诉我serial主线程而不是我创建的线程作为父线程。

如果我不在构造函数中而是在主进程中实例化序列,结果相同,这在我们调用后触发thread->start()

我错过了什么?


以发送函数为例(一个槽):

0 投票
0 回答
732 浏览

c++ - 接收 QSerialPort 信号的问题

我正在尝试编写一个简单的程序来测试串行端口,但无法让 QSerialPort 工作。我从来没有收到来自 QSerialPort 对象的信号。我收到 3 个运行时警告/错误,我认为这可能与它有关。

错误是:

下面的代码片段是我可以提供的用于重新创建错误的最小示例,它没有显示连接信号,但我认为这些错误是我看不到它们的原因。如果我不调用 open 函数,则不会发生任何错误。

测试系统是Redhat 5.6。QT 4.7.4 的静态版本。以及最新版本的 QSerialPort(今天从 GIT 构建)。

0 投票
2 回答
620 浏览

c++ - std::string 不能识别大于 127 的字符

我已经用 ascii 代码风格做了一个 tansmition,一切都很好,直到我进行了 crc 检查。在我的项目中 crc 是一个字节。在我的接收器中,我将所有内容都放入 std::string 中,如果 crc 小于 127,则一切正常。但是,如果我的 crc 大于 127,那么向我的 std::string 添加附加数据 - 下面的示例。

我究竟做错了什么?我以为127上面有特殊字符,但现在我迷路了......

编辑:我试图让它变得简单,但我当然可以给你代码:)。

然后在不同的线程中我处理缓冲区数据。问题是当我发送一个大于 127 的字节时 - 在这种情况下,一些额外的字符会附加到我的缓冲区(如第一个示例中)。

0 投票
1 回答
13254 浏览

c++ - 将 Arduino 与 Qt 连接起来

我正在从 Qt 向 Arduino 发送“R”字符
并等待该 R,以使 Arduino 上的 LED 闪烁。但它不起作用...

我认为可能是 waitFotBytesWritten 或 ASCI 的问题...
注意:任何信号都很好;不需要是字符。

我的Qt代码:

我的 Arduino 代码

Qt 输出说:

任何帮助将不胜感激


这是完整的代码:

数量:

阿杜诺:

0 投票
1 回答
1880 浏览

c++ - QtSerialPort 通信问题

从这段代码中,我在 Ubuntu 上运行了 qt。它显示 QIOdevice::write 设备未打开。但是我已经在这个端口上插入了我的 USB 到串口,我该如何解决这个问题。

0 投票
1 回答
2004 浏览

c++ - Qt : 向 GPRS 调制解调器发送 AT 命令

我有一个带有 GPRS 屏蔽的 Arduino 板。我可以使用 Arduino 的 IDE 发送和接收 SMS,但我现在要使用 Wavecom GPRS 调制解调器。

我可以将字符串从 Qt 连接并发送到 Arduino 板,这样当 Arduino 从 Qt 接收到特殊字符串时,它会发送一条短信。请参阅下面的代码。

但是现在,我被困住了......不知道如何直接从 Qt 发送 AT 命令,而不仅仅是发送 Arduino 等待发送 SMS 的字符串......

如果可以从 Qt 向 GPRS 调制解调器发送 AT 命令,现在有人吗?

Arduino代码:

0 投票
1 回答
5940 浏览

c++ - 与 readAll() 相比,QSerialPort readLine() 非常慢

我从串行端口(在 Qt 中,使用 QtSerialPort/QSerialPort)读取的数据由换行符“\n”分隔并返回“\r”字符,这是我打算查看它以进行解析的方式。行长可能很长,但是很容易从每一行的格式中提取数据。

其中 readData() 定义为:

但是,与 QIODevice::readAll() 相比,该QIODevice::readLine()函数非常慢,并且明显阻止了全频接收数据

有人可以解释一下如何正确使用该readLine()函数,这样我就不必循环readAll()QByteArray解析每一行了吗?我使用“终端”Qt Widgets 示例来创建这个异步串行端口读取功能。

提前致谢 - 这似乎是一个常见问题,我还没有在这里看到答案。