QT&C++ 串口通信问题-qextserialport第三方串口类,发出的数据到接收端不正常

用QextSerialPort第三方串口时,发出去的数据正常(转换为Byte都是正常的),可到了接收方面,接收的数据不是0X80就是0X00,很不解

QextSerialPort 下载的是 qextserialport-1.2win-alpha.zip

如图:发送显示正常图片说明

源码如下:
QextserialportDEMO::QextserialportDEMO(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);

QObject::connect(ui.pbtnSetting, SIGNAL(clicked()), this, SLOT(OnpbtnSetting()));
QObject::connect(ui.pbtnSend, SIGNAL(clicked()), this, SLOT(OnpbtnSend()));

serialName = "COM5";

myCom = new Win_QextSerialPort(serialName, Win_QextSerialPort::EventDriven);
connect(myCom, SIGNAL(readyRead()), this, SLOT(Receive()));

}

QextserialportDEMO::~QextserialportDEMO()
{

}

void QextserialportDEMO::OnpbtnSetting()
{
Open();
}

void QextserialportDEMO::OnpbtnSend()
{
Send(QStringLiteral("123"));
//Send(QStringLiteral("中国"));
}

//打开串口
bool QextserialportDEMO::Open()
{

if (!myCom->isOpen())
{
    myCom->setBaudRate(BAUD9600);           //设置波特率           
    myCom->setDataBits(DATA_8);             //设置数据位
    myCom->setParity(PAR_NONE);
    myCom->setStopBits(STOP_1);     
    myCom->setFlowControl(FLOW_OFF);        //设置数据流控制     
    myCom->setTimeout(TIME_OUT);            //设置延时

    QString info;

    if (myCom->open(QIODevice::ReadWrite))
    {
        info = QString(QStringLiteral("成功打开串口 Serial NO:%1 BaudRate=%2 DataBits=%3 Paritys=%4 StopBits=%5")
            .arg(myCom->portName())
            .arg(myCom->baudRate())
            .arg(myCom->dataBits())
            .arg(myCom->parity())
            .arg(myCom->stopBits()));
    }
    else
    {
        myCom->close();
    }
}


return true;

qDebug("打开串口成功");

}

//关闭串口
void QextserialportDEMO::Close()
{
if (myCom != NULL)
{
myCom->close();
delete myCom;
myCom = NULL;
}
}

BOOL QextserialportDEMO::IsOpen()
{
return myCom->isOpen();
}

//接收数据
void QextserialportDEMO::Receive()
{
QThread::msleep(100);

QString strData;
QByteArray temp = myCom->readAll();

tempData = temp;        //将数据存起来

if (!temp.isEmpty())
{
    strData = temp;
}

}

QByteArray QextserialportDEMO::ReadData()
{
return tempData;
}

//发送数据
void QextserialportDEMO::Send(QString str)
{
QByteArray buf;

buf = str.toUtf8();

try
{
    //发送数据
    myCom->write(buf);
}
catch (QString msg)
{
    throw (__FUNCTION__ + msg);
}

}

求知情者帮忙,烦劳告知,在下感激不尽

1个回答

是不是两边的串口属性设置不一样?最好用串口助手测试,自己的程序给串口助手发,串口助手给程序发,排除一下自己程序发送方还是接收方出了问题

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
QT安装包(QT Assistant、QT Designer、QT Linguist、QT Creator)
简单完整的QT安装包,最适合初学者。它会自动安装好QT Assistant、QT Designer、QT Linguist、QT Creator。由于我只能上传最大60MB的文件,所以只能把它分成6份,下载时只需全部下下来一起安装就好,我只在第一部分收取1个资源分。
Qt 安装问题。Qt sdk,Qt library,Qt Creator,Qt + VS2010
我看的是霍亚飞的《Qt Creator 快速入门》rn最开始我安装的是qt-opensource-windows-x86-mingw48_opengl-5.2.1rn这个好,但是代码和书上不兼容,好吧,我忍rnrn我在官网上找到了下面两个东西和书上说的一个字母都不差, rnqt-win-opensource-4.7.2-mingw.exernqt-creaotr-win-opensource-2.1.0.exern终于安装完毕,新建 gui 程序,结果又有问题了rn如下图:rn[img=https://img-bbs.csdn.net/upload/201402/14/1392391940_719190.png][/img]rnrn我在工具中设置了qmake,不过没有作用啊rn[img=https://img-bbs.csdn.net/upload/201402/14/1392392163_771556.png][/img]rnrn在网上看到的都是Linux下的方式,于是我在Command中运行,没有问题rnrn我应该怎么设置?rnrn还有,如果我用VS2010写QT程序的话,应该怎么做?主要是VS_X的代码提示功能很喜欢,不知道VS+QT的话,会不会有提示?rnrn
QT creator 和QT实战
QT creator 和QT实战是两本比较好的QT入门到精通教程,详细
有关Qt和Qt designer
有哪位大虾是做过这方面的开发的,希望能够交流一下!小弟有很多的问题.rnrn联系方式:hulimin@vip.sina.comrn qq:153231369
【Qt】Qt简介
00. 目录 文章目录00. 目录01. Qt简介02. Qt的历史03. 支持平台04. Qt的优点05. Qt Creator介绍06. Qt Creator功能和优势07. Qt Designer08. Qt Linguist09.Qt Assistant11. Qt应用实例 01. Qt简介 ​ Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既...
Qt 环境搭建(Qt Creator)
简述 上一节中介绍了如何进行Qt和Visual Studio的下载安装,随后演示了如何将Qt集成到Visual Studio中,并完成了我们第一个Qt小程序-Hello World。下面主要讲解如何利用Qt Creator来编写Qt程序。 简述 Hello World 配置环境 下载Windows Debugging 配置调试器 Hello World 1、首先我们找到
Qt:Qt导出Excel表格
借鉴参考文献中的内容,并将其封装成一个ExcelExporter类,除了实现一些基本的写数据的功能,还增加了设置单元格样式、合并单元格的功能。在Qt中使用QAxObject类访问Com组件对象,需要在pro文件中添加下面的内容: QT +=axcontainer 核心代码:   /*! *新建一个excel表格 */ bool ExcelExporter::newExcel(
【QT】Qt QFlags源码分析
QFlags是个模板类,目的是提供类型安全的enum,在头文件qflags.h中定义,传统上C++使用int或uint存储enum值,却没有作类型检查。1、QFlagQFlag是一个基础类,还用到了QTypeInfo类,定义如下:// 在C++11中Q_DECL_CONSTEXPR为constexpr // 在C++11中Q_DECL_NOTHROW为noexcept // 重载了operator(
QT参考手册&&QT参考文档
QT参考手册&&QT参考文档,有利于快速学习和掌握QT编程
Qt
我想用Qt实现这样一个功能:rn屏幕中排列着两行比较大的图片缩略图大约200*200(图片肯定比这大,要求图片能自动缩小到这么大),这些缩略图都可以点击,且点击时图片尺寸会瞬间变大,松开后又缩小,而且点击图片时,能够做响应我定义的一系列操作,就像单击按钮就执行槽函数那样或类似的。rnrn请问:rn1.我该用什么控件存放这些图片缩略图;rn2.用什么控件存放这些可以点击的图片;rn3.如何让程序响应我的单击操作;rn4.如何让图片缩略图在点击的时候略微放大一些,手离开又缩小rnrn我是新手,希望大侠们讲解时能够略微耐心细致,最好配上代码,这样更清晰,谢谢!
qt
我在qt的designer中添加了一个pushbutton控件,想通过按下这个控件能显示messagebox对话框,请问该怎么操作,要具体过程
【Qt】
Qt动画中常常和状态机相互练习,那么什么是状态机呢? 网上的一些解释太高端了,不是很亲民。。。状态机: 回想之前的动画,运行之后就开始在桌面上运动。那么有什么方法能够控制这一点呢? 比如,按下button之后,动画才出现; 我想:信号和槽应该是一种想法。。。 那么,类似于这种机制,也就是状态机啦。 例如,按钮1处于状态1下是静止的,clicked(
【Qt】Qt初体验
看我之前的博客就知道,最开始我了解一点的就是MFC的图形化编程。但是看到很多网友在评论下面吐槽VC已经是老古董了,Qt很好。我很是纠结了一段时间,最终决定来学习Qt了解一下。 第一面,感觉软件有点像eclipse等IDE的界面。建工程的时候(界面如下)也是比较懵逼,很多东西都不懂。 默认进去之后,设计图形化界面很像java 接下来,由于不了解我想实现的功能应该如何去实现。打算
QT:Qt的背景与软件安装
Qt的背景与安装 一、QT的概述 1. 历史发展  1)1991年诞生 Haavard/Eirik  window :  win_label  unix : unix_label  2)1994年创立 Trolltech(奇趣公司)  3)2005年QT4.0发布  4)2008年被Nokia收购  5)2009年源代码开放  6)2012年诺基亚将全部QT业务和知识产权出售
QT软件包(QT CREATOR)
QT软件(内涵creator),亲测,保证好用,不足的地方请多提宝贵建议
QT之Qt Quick学习笔记
       Qt4的设计用于满足开发者在主流桌面操作系统上有一套表现一致的窗口组件可以使用。如今Qt的使用者面临了新的问题,他们需要提供可触碰交互的用户界面以满足软件界面需求,并在主流桌面操作系统和移动操作系统上实现这些界面。从Qt4.7版本开始引进了Qt Quick,它让Qt的使用者可以用简单的元素对象创建一套界面组件,并通过组合界面组件的方式来完成软件界面需求。 Qt Quick是Qt5中...
QT? Qt Embedded?
需要做一个手持机操作系统界面的开发,以前没有接触过Qt,我现在直接装windows版的Qt可以做吗?还是需要装Qt Embedded 才可以做?
【Qt】Qt Creator快捷键
问题: 用QT Creater编程,如果没有自动补全是很痛苦的事情,于是便查阅了QT的文档,发现CTRL+SPACE是自动补全的快捷键; 但是在 Creater里使用居然没有效果,估计是输入法切换的冲突(CTRL+SPACE是我中英文输入的默认快捷键)   解决方法: 在QT Creater->Tools->Options... 里找到environment->Keyboard,发现Te
Qt打开网络摄像头~[Qt]
使用Qt打开网络摄像头,需要用到摄像头自己的API,处理函数只能在API的回调函数里面进行,需要在回调函数里面调用Widget类的部件,但是这样不行,有没有什么办法啊》求大神指导!!在VS下没问题,只需要在void CALLBACK DecCBFun1()这个回调函数里面cvShowImage(rgbimg1);就可以了,但是在Qt里面就不行~需要可提供摄像头的SDK~rnrnWidget.hrnrn#ifndef WIDGET_Hrn#define WIDGET_Hrnrn#include rn#includern#includern#includern#includern#includern#includern#includern#includernrnusing namespace cv;rnrnnamespace Ui rnclass Widget;rnrnrnclass Widget : public QWidgetrnrn Q_OBJECTrn rnpublic:rn explicit Widget(QWidget *parent = 0);rn ~Widget();rnrnprivate slots:rn void opencamera();rnrnprivate:rn Ui::Widget *ui;rn //IplImage* rgbimg1;rn QSize size;rn //QImage qimage;rn;rnrn#endif // WIDGET_HrnrnWidget.cpprnrn#include "widget.h"rn#include "ui_widget.h"rnrn#define PLAYPORT1 1rn#define HEIGHT 720rn#define WIDTH 1280rnrn//全局变量rnunsigned long lLogin1;rnlong lRealPlay1;rnIplImage *rgbimg1 = cvCreateImage(cvSize(1280, 720),IPL_DEPTH_8U,3);rnQImage qimage;rnrnWidget::Widget(QWidget *parent) :rn QWidget(parent),rn ui(new Ui::Widget)rnrn ui->setupUi(this);rn rgbimg1=NULL;rnrn QObject::connect(ui->openCamBtn,SIGNAL(clicked()),this,SLOT(opencamera()));rnrnrnWidget::~Widget()rnrn delete ui;rnrnrnvoid copy_yuvImage_to_IplImage_color(const unsigned char *input_img,IplImage* out_img)rnrn IplImage *image,*yimg,*uimg,*vimg,*uuimg,*vvimg;rn unsigned char *ptr_yimg,*ptr_uimg,*ptr_vimg;rn int col,row;rnrn CvSize frameSize = (WIDTH,HEIGHT);rn CvSize frameSize_q = (WIDTH/2,HEIGHT/2);rn image = cvCreateImage(frameSize,IPL_DEPTH_8U,3);rn yimg = cvCreateImage(frameSize,IPL_DEPTH_8U,1);rn uimg = cvCreateImage(frameSize_q,IPL_DEPTH_8U,1);rn vimg = cvCreateImage(frameSize_q,IPL_DEPTH_8U,1);rnrn uuimg = cvCreateImage(frameSize,IPL_DEPTH_8U,1);rn vvimg = cvCreateImage(frameSize,IPL_DEPTH_8U,1);rnrn for(row=0;rowimageData + row*yimg->widthStep);rnrn for(col=0;colimageData + row*uimg->widthStep);rn ptr_vimg = (unsigned char*)(vimg->imageData + row*vimg->widthStep);rnrn for(col=0;colnType == 3) //视频数据rn copy_yuvImage_to_IplImage_color((const unsigned char *)pBuf,rgbimg1);rn cvShowImage("1",rgbimg1);rn //qimage = QImage((const uchar*)rgbimg1->imageData, rgbimg1->width, rgbimg1->height, QImage::Format_RGB888).rgbSwapped();//rgbSwapped()rn qimage = qimage.scaled(ui->label->width(), ui->label->height(),Qt::IgnoreAspectRatio, Qt::SmoothTransformation);//设置图片大小和label的长宽一致rn// ui->label->setPixmap(QPixmap::fromImage(qimage));rn// ui->label->resize(ui->label->pixmap()->size());rn cvWaitKey(10);rn return;rnrnrnvoid Widget::opencamera()rnrn //打开播放通道rn PLAY_OpenStream(PLAYPORT1,0,0,1024*1024);rn PLAY_SetDecCallBackEx(PLAYPORT1, DecCBFun1,NULL);rn PLAY_Play(PLAYPORT1,NULL);rnrn CLIENT_LogClose();rn NET_DEVICEINFO deviceInfo =0;rnrn CLIENT_Init(DisConnectFunc, 0);//初始化sdk,设置断线回调函数rn CLIENT_SetAutoReconnect(AutoReConnectFunc, 0);rn lLogin1 = CLIENT_Login("192.168.1.109",37777,"admin","admin",&deviceInfo);//登陆设备,用户需另选设备。rnrn if(lLogin1 != 0)rn rn ui->lineEdit->setText(QString("Login Success ,Start Real Play\n"));rn lRealPlay1 = CLIENT_RealPlay(lLogin1,0,0);rnrn if(lRealPlay1 != 0)rn rn //窗口句柄传空值,网络库只回调原始数据rn CLIENT_SetRealDataCallBackEx(lRealPlay1, RealDataCallBackEx1, 0, 0x1f);rn rn rn elsern rn ui->lineEdit->setText(QString(" Login Fail \n)"));rn rn//rnrnrnrnrn
qt 学习笔记 qt学习笔记
qt学习笔记 qt学习笔记 qt学习笔记 qt学习笔记
QT?
QT,对于俺来说是一个古老而神奇的东西!rnrn就知道他是跨平台的一个类库,好象能集成到VC的IDE中,请问哪有下载包???rn俺也学习学习,发给俺个更好,谢谢,谢谢!rnrnxiaobei525@163.com rnrn哥哥们,谢了。
Qt hello QT
Qt hello QT
QT入门教程QT入门教程
关于对QT的学习和入门、、不同平台的应用Linux
Qt汉化包Qt汉化包
Qt 汉化包 汉化QT,方便Qt的中文用户
【Qt】Qt国际化
参考博客:https://blog.csdn.net/hebbely/article/details/69388763 Qt官网:http://doc.qt.io/qt-5/linguist-manager.html 使用的工具 lupdate –> linguist –> lrelease 使用步骤 tr 在程序中将需要翻译的文本使用tr()函数来处理 修改pro ...
qt/QT安装指导
QT 的安装包与指导 qt-everywhere-opensource-src-4.7.3.tar.bz2 qt-creator-opensource-linux-x86-3.5.0.run
【QT】Qt版本史
【Qt】https://www.qt.io/ 【Qt Developer】https://developer.android.com/index.html1、Qt 11995年5月20日,第一个公开发行的预览版,版本0.90。 1996年5月,版本0.97。 1996年9月24日,第一个稳定版,版本1.0。 1996年晚些时候,版本1.1。 1997年4月,版本1.2。 1997年9月,
QT:面向对象的Qt编程
面向对象的QT编程 1. 基于对象的QT编程        // QT的功能受到限制,不推荐 2. 面向对象的QT编程 《案例》 加法计算器 class CalculateDialog : public QDialog { // 行为:     构造函数 ( ) { 初始化界面 }     槽函数:当输入左右操作数时,发送信号,检测是否都为有效数字,使能等号按钮;     槽函
Qt图形库——Qt画图板
Qt图形库——Qt画图板(完整代码) 代码仍然还有部分问题,比如按住shift以后,虽然能画出正方形和正圆形,但是直线部分还有点问题
【QT】:QT中的信号和槽
QT中的信号就是某个按钮执行后该之行的函数 QT中的槽就是一个通用的函数我们需要把信号和槽关联起来,这样才能实现我们想要的功能。 总结需要3步: 1,在widget.h中添加一个函数的声明 2,在widget.cpp添加函数的具体声明 3,在widget.cpp添加信号与槽的对应具体代码:#ifndef WIDGET_H #define WIDGET_H#include <QWidget>
Qt 学习QT
原文博客 :https://blog.csdn.net/xdw_it/article/category/7654415 等我项目做完来更。 ======================================================================= 2019.4.1号更新: 项目中用QT做一个界面,实现功能: 1、打开新的文件选择对话框;选出想要的文件/...
【QT】:QT实现登录界面
QT实现登录功能,密码会表现为加密显示 如下图: 思路非常简单,大致如下: 1,先把几个控件弄上去 2,捕获控件的值进行判定 3,进行显示要把密码项设为带密码的,这种方法要在cpp里面设置一个lineEdit的模式,让他为Password,方法如下#include "widget.h" #include "ui_widget.h" #include <QDebug> #include <Q
子类化QWidget IconEditor实现
现在我们从iconEditor构造函数入手: iconeditor::iconeditor(QWidget *parent) : QWidget(parent) { setAttribute(Qt::WA_StaticContents); setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
Qt动态库 Qt环境
Qt的动态链接库 建议解压缩到C:\Qt\bin\ 然后设置环境变量中的path, 增加上述路径即可
qt编程 qt 国际化
Qt 使用了自己定义的Locale机制,在编码支持和信息文件(Message File)的翻译上弥补 了目前Unix上所普遍采用Locale和gettext的不足之处。 Qt 的这种机制可以使 Qt 的同一 组件(QWidget)上同时显示不同编码的文本。 比如,Qt 的标签上可以同时使用中文简体 和中文繁体文本。
QT基础教程qt入门
转自yafeilinux 编写多窗口、文本编辑、数据库基础、基本绘图、网络基础等等
Qt程序设计Qt程序设计
Qt程序设计,超星阅览器看,kdnfksfldsnfkd
qt的
dumpcpp 工具 dumpcpp ---- ActiveQt模块的命令行工具,可以导出Qt能识别的COM组件的接口。这个工具在Qt库的bin目录下可以找到。如果没有,也可以在Qt库\tools\activeqt\dumpcpp文件夹中找到源码,自己编译一下就有了。在命令行中进入某个目录,比如D:\,然后执行dumpcpp {00020813-0000-0000-C000-000000000046
[Qt]Qt Creator汉化方法 qt汉化包
D:\Qt\2010.04\share\qtcreator\translations目录下重启Qt Creator仍然可以汉化,qtcreator_zh_CN.qm的基础上进行汉化
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件