- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
const QSerialPortInfo* serialPortInfo = nullptr;
bool PortManager::setPort(QString portName) {
const QList<QSerialPortInfo> infoList = QSerialPortInfo::availablePorts();
for (const QSerialPortInfo portInfo : infoList) {
if (portInfo.portName() == portName && serialPortInfo != &portInfo) {
serialPortInfo = &portInfo;
}
}
if (serialPortInfo != nullptr) {
if (portName != "" && serialPortInfo->isValid()) { //segmentation fault
if (serialPort->isOpen()) {
serialPort->close();
}
serialPort = new QSerialPort(*serialPortInfo, this);
if (serialPort->open(QIODevice::ReadWrite)) {
if (serialPort->clear()) {
if (serialPort->setBaudRate(QSerialPort::Baud38400, QSerialPort::AllDirections)
&& serialPort->setFlowControl(QSerialPort::NoFlowControl)
&& serialPort->setParity(QSerialPort::NoParity)) {
isPortSet = true;
}
.
.
.
这是我的代码,可在 Linux 和 Windows 7 上运行。现在我在 Windows 8 上测试它,我在 this->serialPortInfo->isValid()(以及 serialPortInfo 的任何其他函数)上遇到段错误.任何特定 QSerialPortInfo 对象的所有数据都是“不可用的”(如调试器所述),在我看来,我没有使用它们的特权。在 Linux 上,我必须是 uupc(如果我没记错的话)组的成员才能避免出现此类错误,但在 Windows 7 上我不需要做任何事情。我以“管理员身份”运行 Qt Creator,但没有帮助;也许我必须以某种方式告诉它也以管理员身份运行 qmake?但这只是我的猜测,也许原因不同......
最佳答案
问题是这个循环:
for (const QSerialPortInfo portInfo : infoList) {
if (portInfo.portName() == portName && serialPortInfo != &portInfo) {
serialPortInfo = &portInfo;
}
}
变量 portInfo
的范围仅在循环内,并且仅针对当前迭代。一旦循环迭代,该变量就会被破坏。使用指向已破坏对象的指针是 undefined behavior ,以及导致崩溃的可能原因。
关于如何停止它,我的建议是不要使用指针。而是复制结构。
关于c++ - QtSerialPort 有不可用的数据,仅在 Windows 8 下出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24863905/
我为 Qt4 构建了 qtserialport 并编写了一个控制台应用程序来记录来自设备的数据,该设备以 9600 波特、8 个数据位、1 个停止位和无奇偶校验发送信息,我认为这是串行通信的默认设置。
我正在制作一个程序,以每秒 250 个样本(115200 波特)的速度读取来自串行 RN42 蓝牙连接的数据流。运行代码时,我注意到一些数据没有被删除和读取,因此不同步。 SerialMonitor:
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关于您编写的代码问题的问题必须在问题本身中描述具体问题 — 并且包括有效代码 以重现它。参见 SSC
我使用本教程:http://doc-snapshot.qt-project.org/qt5-stable/qtserialport/blockingmaster.html 但是当我想运行它时 Qt C
我正在使用 QtSerialPort通过 USB 与虚拟 COM 端口通信的库。 COM 端口返回数据并在使用 QtSerialPort 给出的示例项目对其进行测试时正常工作,但当我将其作为我的项目的
我正在尝试使用 Qt v5.1.1 中新包含的 QtSerialPort,但在尝试编译时遇到了一些我没有什么经验的问题。从我的搜索看来,qt 5.1 的 QtSerialPort 似乎没有构建好并可以
我正在尝试编译一个使用 QtSerialPort 的项目,但出现链接错误 g++ -m64 -Wl,-O1 -o eTerm main.o eterm.o tcpclient.o tcpserver.
我已经从 git 下载了 qtserialport 文件并尝试在 qt-creator 中编译它。起初我尝试了“Build”选项,但也尝试过“Run qmake”。 两者都给我相同的结果 :-1: e
原来静态链接是有效的,但只适用于 Qt 库。我的第 3 方库 QtSerialPort 没有静态链接。经过一些研究,我发现我要么必须静态构建这个库,要么必须直接链接到我的 .pro 文件中的 .pri
我的应用程序正在通过串行端口(USB 串行)与嵌入式系统通信。 我正在使用来自 gitorious ( https://qt.gitorious.org/qt/qtserialport/ ) 的 Qt
我正在从 USB 串口读取数据,但有时我会遇到数据“卡住”的问题。在收到消息后,我发送新消息并再次等待答复。 我在 Windows 7 上使用 Qt 5.2.1,在异步模式下使用 QtSerialPo
const QSerialPortInfo* serialPortInfo = nullptr; bool PortManager::setPort(QString portName) { c
我正在使用 Qt 4.7.4 和 Qt Creator 2.4.1。我正在尝试为串行通信构建 blockingmaster 代码,Qt 站点上给出了示例。 但是在对我的环境和路径目标进行了必要的修改之
我正在使用 Qt Enterprise(目前为 Boot2Qt 评估版)开始一个新的嵌入式软件项目,并尝试使用 QtSerialPort 来检测我系统中的所有虚拟端口。实际上,我只是简单地尝试了 Qt
我在这里开始讨论这个问题extrange behavior of serial port using Qt但由于这不是最初的主题,我创建了一个新线程。 我在 Windows XP 中使用 QT 4.8
我正在尝试添加 QtSerialPort 模块,但找不到 QSerialPort 文件。 我按照 https://wiki.qt.io/Qt_Serial_Port 上的命令行步骤进行操作但它仍然说找
我是一名优秀的程序员,十分优秀!