关于qt读取串口的求助 10C

初学qt,在读取串口数据时遇到了一点问题,就是我用arduino写好的程序一直往电脑发数据,在用串口助手看时是正确的显示结果,但是我写的读取串口的程序读出来全是0,不知道是什么原因,代码及结果附在下面。

 #include "mainwindow.h"
#include "init.h"
#include <QApplication>
#include <QSerialPortInfo>
#include <QtSerialPort>
#include <QDebug>

#define BUFFSIZE 100
main(int argc, char *argv[])
{
    QByteArray Data="SA";
    ///串口初始化
    QSerialPort *serial = new QSerialPort("COM3");
//   QObject::connect(serial, SIGNAL(readyRead()), this, SLOT(ReadData()));

    serial->setBaudRate(QSerialPort::Baud9600);
    serial->setParity(QSerialPort::NoParity);
    serial->setDataBits(QSerialPort::Data8);
    serial->setStopBits(QSerialPort::OneStop);
    serial->setFlowControl(QSerialPort::NoFlowControl);
    if (serial->open(QIODevice::ReadWrite)) {
        qDebug()<<"open success";
    } else {
        qDebug()<<"open failed";
    }
    while(1){
//        if(serial->bytesAvailable()>BUFFSIZE){
            Data=serial->readAll();
            qDebug()<<Data.toInt()<<"1  ";
//        }
    }
    return 0;
}

图片说明

1

5个回答

助手正常说明你发送那端没问题,那么你确认一下你自己做的接收程序的串口参数是不是都作对了,如果已经作对了参数依然无法进行通讯,不妨在本地电脑先用串口助手来对你的接收程序进行调试,这样才方便找出问题

1
phenix2009
白色一大坨 你程序我跑了一下的确不通,qt了解有限,如果是用其他方法倒是懂点
一年多之前 回复

1、确定串口打开了?
2、Data=serial->readAll();可以在这句加断点,看执行完后,data变了没
3.data是个CString,你知道readAll()返回的格式是啥吗,不可能只有一个数吧,应该是1帧吧,你把一帧数拿来去toint,toint只能转一个数,“1 2 3”这种直接toint那就是0
4、建议你用PCOMM这个库,有.h .lib .dll三个文件,比较好用,我也经常写异步串口

1

建议你有c币提问,不如去下点qt串口的资源,里面有不少做这个的

0
qq_40931330
qq_40931330 不好意思我才看见 谢谢你了
一年多之前 回复

serial->setBaudRate(QSerialPort::Baud9600);
serial->setParity(QSerialPort::NoParity);
serial->setDataBits(QSerialPort::Data8);
serial->setStopBits(QSerialPort::OneStop);
serial->setFlowControl(QSerialPort::NoFlowControl);
这几个参数确定是对的吗? 不确定的,可以先只使用波特率设置, 其他的先缺省试试

0
qq_40931330
qq_40931330 还是错的
一年多之前 回复

可能你的通讯延时设置有问题哦

0
qq_40931330
qq_40931330 解决了,加个个信号和槽之后就能收到数据了,这是延时的原因吗
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Qt5的QSerialPort类使用信号槽实现串口读写
Qt5 信号槽实现串口读写,大家可以参照,谢谢评论
QT串口打开和读写
关于QT串口打开和读写的程序实现 1、串口打开 串口打开包括两个过程,一是串口查找,二是设置并打开串口。具体实现见如下代码 foreach(const QSerialPortInfo &amp;amp;info, QSerialPortInfo::availablePorts()) { qDebug() &amp;lt;&amp;lt; &quot;Name : &quot; &amp;lt;&amp;lt; info.portName...
QT串口读取数据
QT串口读取数据
Qt5读取串口数据
使用Qt5自带的QSerialPort和QSerialPortInfo写的控制台程序,可读取串口数据。环境:win7 64位系统,Qt版本:qt-opensource-windows-x86-mingw482_opengl-5.3.0
qt实现串口读取GPS信息
qt实现GPS信息读取,基于NMEA-0183 协议,含注释与完整运行软件,值得参考
QT5的串口数据读取
刚建立好时候 在工程中添加如下代码 在mainwindow.cpp中 ui就是指的自己设计的主界面 这里就是界面初始化显示出来时候执行的内容 对于串口 可以在这里自动寻找串口 界面设计 修改名字下拉框Combo Box 名字 以此类推 对按钮改名字后 转到槽 click消息 ...
QT子线程读取串口数据并传到主线程实时显示心电波形图
最近在做测试心电的项目,我用QT开发了一个简单的界面,实时显示底层采集到的心电数据波形图,由于完全靠自己开发,所以很苦恼,在网上也查了不少资料,也问了一些老师,最后基本完成了,由于网上查资料看到类似案例资料并不多,也不齐全,所以将自己的心得分享出来,大家一起讨论。有不对或者需要改进的地方请各位大佬指出,共同进步。以下贴上示例代码及解析。 读取串口部分借鉴于Quartz010的文章《如何在QT中读
QT打开二进制文件(.bin),串口定时发送
本例由《qt开发环境 - 简易二进制文件打开,串口自发自收》更改来。(由qt官方terminal demo 修改) 实现功能:打开.bin文件,显示文件内容           通过串口按固定字节大小发送文件           显示串口收到的内容 下面是源代码: 代码下载地址:http://download.csdn.net/download/zn2857/10194028 /*
Qt 在windows下的串口读写
在windows下的串口读写添加serialport模块支持添加头文件创建串口对象创建必要的槽函数初始化串口参数连接相关曹函数槽函数 添加serialport模块支持 QT += core gui serialport 添加头文件 #include &amp;lt;QtSerialPort&amp;gt; 创建串口对象 private: QSerialPort *serial; 创建必要的槽...
QT(2)----QT获取设备的串口信息
QT编写串口通信软件时需要用到 QSerialPortInfo  这个类,这个类可以获取到设备所有的串口信息 一,获取串口 使用QSerialPortInfo :: availablePorts();获取串口信息,它返回的是QList 类类型的 二,利用foreach来解析上面的信息 foreach(const QSerialPortInfo &portinfo,QSerialP
Qt 实时读串口数据,并将读到的数据从网口发送出去
Qt 实时读串口数据,并将读到的数据从网口发送出去
QT5下的高速串口访问
win7 qt5.6测试完成版本.修改相应的小问题,可以根据我的博客进行完全可以使用的测试。
QT编写的基于串口接收的GPS上位机,详细注释版
基于QT编写的串口通信接收GPS信号的上位机软件,基于QT界面编写的源码,可以生成release版本。详细加了注释,以及每个功能函数的意义,综合使用了槽,变量函数等,对于初学者上手学习和实践QT有帮助。
qt 写的绘制串口接收到数据的实时曲线
qt 写的绘制串口接收到数据的实时曲线。 qt写的绘制串口接收到数据的实时曲线,单片机串口发送格式为“AAA%-5d” qt 串口 实时曲线
Qt windows下串口读写
Qt在windows下的串口读写操作的demo工程,适合初学者快速实现功能。
QT实时绘制串口数据
采用多线程方法,主线程解析数据和绘图,子线程接收数据,QWT绘图,有历史回顾功能
QT 串口QSerialPort + 解决接收数据不完整问题
类:QSerialPort 例程:Examples\Qt-5.9.1\serialport\terminal,该例子完美展示了qt串口收发过程,直接在这上面修改就可以得到自己的串口软件。核心方法 //读串口 QByteArray QSerialPort::readAll() //写串口 qint64 QSerialPort::write(const QByteArray &amp;amp;data) 注
read函数读串口数据“分包”问题及解决方案
最近在做一个项目,其中要实现一个简单的数据透传功能。 功能简介: 实现通过网络向485串口(温湿度传感器)发送指令,然后把串口返回的数据发送到网络端。 实现方法: 采用多线程技术,函数执行时创建两个线程, 一个线程负责接收(recv)网络端的数据指令,并把收到的指令写到(write)串口。 另一个线程负责读取(read)串口的数据,并且把读到的数据发送(send)到网络端。 遇到的问
Qt (六) -- Qt5.5.1实现通用串口程序
最近教研室在做高速相机,通过图像采集卡和自己做的高速相机链接,从而采集和收集图像。图像采集卡和高速相机是通过Cameralink连接,其中也包含了相机和图像采集卡之间的串口的硬件借口,在老师的要求下,实现了两种串口程序,一种是通过cameralink的API实现串口数据的传输,一种则是通过USB转RS422的转接器,实现对高速相机的寄存器的读写。本文主要介绍了通过Qt的QSerialPort和QS
Ubuntu中qt调用串口设备读写权限问题
ubuntu qtcreator 硬件权限问题 在使用 qtcreator 在 ubuntu(debian、mint 等类同)下做开发时,常用到权限问题,无法直接操作硬件,比如串口等。 办法之一是使用 root 打开 creator,进而进行其他操作。但是,这样做的问题是,文件也全部都被改成了 root 权限,会带来其他的障碍。 这里考虑从 linux group 权限入手。 比如,串口 ...
《Qt串口通信》--实时显示接收的数据
为了能在接收到串口发送的数据便即时显示在文本框中,首先要在连接串口时绑定信号和槽,即将serialport的signal(QIODevice::readyRead)与this的槽函数SePort::ReadCom连接在一起,这样,一旦serialport的准备读取数据信号过来时,就会调用自定义的ReadCom函数,把缓存区的数据读取到私有成员变量m_bReceiveData中。为了能在界面上显示,
qt开发环境 - 简易二进制文件打开,串口自发自收
qt版本:5.9.1 win版本:10.1706 改自上篇文章的串口助手,加入linEdit显示文件路径,加入新pushButton加载文件, 文件加载后显示在串口发送窗口 短接串口助手收发,后可以实现把文件发送到textBrowser 目前效果一般般发送大文件十分的卡 下面是代码 /******************************
ubuntu14.04下qt5.7读取串口数据,包括UI界面设计
ubuntu14.04下qt5.7读取串口数据,包括UI界面设计,使用的是第三方类:posix_qextserialport
回顾Qt调用串口设备
    最近一直在学习如何使用 Qt5.10 编写一些小程序,学的很多很杂,难免有些容易遗忘的东西。今天就打算用写博客的形式做一下小小的回顾,把之前写过的一些东西整理分享一下,非常欢迎各路大佬们前来交流指正。    那么废话不多说了,今天要回顾的内容是关于Qt这个软件中调用系统串口设备进行通信的方法。一、串口基本操作1.环境配置    Qt5中有一个QSerialPort类,使用它我们就可以方便的...
关于Qt5 SerialPort串口传输丢失数据问题。
什么是Qt5 serialPort? 虽然现在大多数的家用PC机上已经不提供RS232接口了。但是由于RS232串口操作简单、通讯可靠,在工业领域中仍然有大量的应用。Qt以前的版本中,没有提供官方的对RS232串口的支持,编写串口程序很不方便。现在好了,在 Qt5.1 中提供了QtSerialPort模块,方便编程人员快速的开发应用串口的应用程序。 Qt5 serialPort存在的问题。
qt写的绘制串口接收到数据的实时曲线
qt写的绘制串口接收到数据的实时曲线,单片机串口发送格式为“AAA%-5d”
linux下基于QT的串口程序
Qt5发布之前,Qt实现串口通信一般是采用第三方类库qextserialport。Qt5发布后自带了QtSerialPort 能够支持串口通信。 一:QT5.0以下版本 1.在工程中引入4个文件。 qextserialbase.cpp和qextserialbase.h 以及posix_qextserialport.cpp和posix_qextserialport.h 2.添
解决Qt5中的QSerialPort分多次接收串口数据的问题
问题:QSerialPort的readyRead()信号,只要有数据就抛出,这就导致一条数据分多次抛出。由于正常的数据没有固定的开头和结尾,这就导致无法获取正常的一组数据 解决思路:增加接收延时功能,把多次读取的数据保存到缓冲区,延时结束,一次性读取数据
Qt串口助手程序的一点理解
1.str = str.setNum(num,16); 2.serialport-&amp;gt;write(ui-&amp;gt;send_text_window-&amp;gt;toPlainText().toLatin1()); Latin1是ISO-8859-1的别名,因为ISO-8859-1编码范围使用了单字节内的所有空间,在支持ISO-8859-1的系统中传输和存储其他任何编码的字节流都不会被抛弃。 ...
QT 开启线程接收串口数据并由主线程界面实时显示心电波形图
在主线程开启子线程初始化,读写串口数据,有数据就读,提取有效数据,并用信号将数据传送给主线程,创建界面对象,主线程通过开关按钮槽函数控制串口的打开关闭,图形的显示以及暂停,实时刷新波形。串口读取数据参考了博友的代码。
QT编写串口助手所遇到的问题!关于readall()函数的疑惑,还望大神们不吝赐教,非常感谢
首先交代的环境。下位机是用STM32 开发的一个模块,模块串口收到指定的字符串命令后,会通过DMA回复特定的字符串命令。 在QT里关于串口读取的: 收到的数据debug后显示如下: 实际应该显示的字符应该是:#SWAP:FlashWrite OK! (使用其他串口工具已经验证过) 疑问:1,单片机串口发送数据时以ASC码发送的么? 2,是不是因为串口读取缓...
QT QSerialPort 封装,阻塞方式发送数据后等待读取缓冲区数据结果,使用QT信号量阻塞,线程中初始化串口和读取数据。
QT QSerialPort 封装,阻塞方式发送数据后等待读取缓冲区数据结果,使用QT信号量阻塞,线程中初始化串口和读取数据。
串口的读数据接收readAll()函数的问题
void MainWindow::serialRead() { // ui-&amp;gt;textEdit-&amp;gt;append(serial.readAll());///此句话要注释才能看到qdebug的显示出来的数据 QByteArray buf; buf = serial.readAll(); QString str = QString(buf)...
Qt - 读取GPS数据
1.GPS型号为ublox(EVK-M8L),配有USB接口,Qt版本5.7 2.实现步骤: (1)实现串口通信   采用Qt5.7 内置的串口操作类QSerialPort和QSerialPortInfo,通过QSerialPortInfo提供的函数availablePorts(),可枚举出当前计算机中可用的com口。使用该类需在pro文件中添加: QT += serialport (2...
Qt串口通信接收数据不完整的解决方法
    在使用串口接收数据时,当数据量大的时候会出现数据接收不完整的情况。因为串口数据获取函数readAll()由readyRead()信号触发,但readyRead()信号在串口读到起始标志时立即发送,并不保证一定是当前所发数据的起始部分。因此串口通信双方在通信前应制定好通信协议,规定好数据的起始和结束标志,串口当读到完整的起始和结束标志之后,才认定读完一条完整的数据。    本例中用串口定时发...
QT解决串口数据接收不完整问题
使用QT编写串口上位机时,串口通信的过程中有时会遇到数据接收不完整的问题,下位机一次发送的数据可能会分为两次甚至多次接收,这样就导致数据接收不完整,解决方案如下:void MainWindow::Read_Data()//读取数据函数,只要串口中有数据,就会进入这个函数 { static QByteArray buf;//QByteArray 类是定义一个字节数组(char *) 一定...
物联网结课设计----QT串口通信RFID门禁系统
效果图:
QT 串口温湿度控制系统
QT界面开发,可以设置温湿度报警值,串口默认波特率115200
认清基本数据类型和Qt串口通信数据类型转换
1、C语言基本数据类型      在C语言中,仅有4种基本数据类型——整型、浮点型、指针和聚合类型(如数组和结构等),所有其他的类型都是从这4种基本类型的某种组合派生而来。      整型包括char(字符)、short(短整型)、int(整型)、long(长整型),浮点型包括float(单精度型)和double(双精度型)。取值范围如下:      总结:      ①应该有人和我一样,很多情况下
C++串口通信类(阻塞和非阻塞都支持)
C++串口通信类。 可以方便的进行串口通信,如果需要用串口可以试用一下哈。包括阻塞与非阻塞方法。