范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Qt串口收发数据

  首先,QT5是自带QSerialPort这个类的,使用时需要在pro文件里面添加一行: QT       += serialport
  然后直接引用头文件就可以使用了。 #include    #include 
  QSerialPort:提供访问串口的功能
  QSerialPortInfo:提供系统中存在的串口的信息
  接下来需要创建一个QSerialPort的对象,对串口的名称、波特率、数据位、校验位、停止位等参数进行设置,然后才进行串口读写操作。
  大概总结了一下,设置、读、写的过程。 一、设置(举例)QSerialPort *serial = new QSerialPort; //设置串口名 serial->setPortName(name); //打开串口 serial->open(QIODevice::ReadWrite); //设置波特率 serial->setBaudRate(BaudRate); //设置数据位数 serial->setDataBits(QSerialPort::Data8);  //设置奇偶校验  serial->setParity(QSerialPort::NoParity); //设置停止位 serial->setStopBits(QSerialPort::OneStop); //设置流控制 serial->setFlowControl(QSerialPort::NoFlowControl);
  这里设置了串口名为name(通常为COM XX),打开串口并设置为可读可写,波特率为BaudRate,数据位为8位,没有奇偶校验位,停止位为1位,没有流控制。设置完这些就能进行读写操作了。作为一名新手,发现遇到不懂得可以在QtCreator里面可以选择关键字,按F1打开文档看类、函数等数据的手册。 二、读取数据void MainWindow::Read_Data() {     QByteArray buf;     buf = serial->readAll(); }
  当串口收到数据并且接收完毕后,会发出一个readyRead()的信号,因此只需要编写一个槽函数Read_Data(),设置信号槽,并在槽函数中使用readAll()把收到的数据读到buf中。 三、发送数据serial->write(data);
  使用write函数便可以把字符串data一个个字节发送出去。
  使用串口就只需以上步骤,使用完后只需要执行 serial->close();
  就可以关闭串口了。我使用了ui界面设计来编写上位机的,界面如下:
  代码如下: //mianwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include  #include  #include  #include  namespace Ui { class MainWindow; } class MainWindow : public QMainWindow {     Q_OBJECT public:     explicit MainWindow(QWidget *parent = 0);     ~MainWindow(); private slots:     void on_clearButton_clicked();     void on_sendButton_clicked();     void on_openButton_clicked();     void Read_Data(); private:     Ui::MainWindow *ui;     QSerialPort *serial; }; #endif // MAINWINDOW_H//mainwindow.c #include "mainwindow.h" #include "ui_mainwindow.h"  MainWindow::MainWindow(QWidget *parent) :     QMainWindow(parent),     ui(new Ui::MainWindow) {     ui->setupUi(this);     //查找可用的串口     foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())     {         QSerialPort serial;         serial.setPort(info);         if(serial.open(QIODevice::ReadWrite))         {             ui->PortBox->addItem(serial.portName());             serial.close();         }     }     //设置波特率下拉菜单默认显示第三项     ui->BaudBox->setCurrentIndex(3);     //关闭发送按钮的使能     ui->sendButton->setEnabled(false);     qDebug() << tr("界面设定成功!"); } MainWindow::~MainWindow() {     delete ui; } //清空接受窗口 void MainWindow::on_clearButton_clicked() {     ui->textEdit->clear(); } //发送数据 void MainWindow::on_sendButton_clicked() {     serial->write(ui->textEdit_2->toPlainText().toLatin1()); } //读取接收到的数据 void MainWindow::Read_Data() {     QByteArray buf;     buf = serial->readAll();     if(!buf.isEmpty())     {         QString str = ui->textEdit->toPlainText();         str+=tr(buf);         ui->textEdit->clear();         ui->textEdit->append(str);     }     buf.clear(); } void MainWindow::on_openButton_clicked() {     if(ui->openButton->text()==tr("打开串口"))     {         serial = new QSerialPort;         //设置串口名         serial->setPortName(ui->PortBox->currentText());         //打开串口         serial->open(QIODevice::ReadWrite);         //设置波特率         serial->setBaudRate(ui->BaudBox->currentText().toInt());         //设置数据位数         switch(ui->BitNumBox->currentIndex())         {         case 8: serial->setDataBits(QSerialPort::Data8); break;         default: break;         }         //设置奇偶校验         switch(ui->ParityBox->currentIndex())         {         case 0: serial->setParity(QSerialPort::NoParity); break;         default: break;         }         //设置停止位         switch(ui->StopBox->currentIndex())         {         case 1: serial->setStopBits(QSerialPort::OneStop); break;         case 2: serial->setStopBits(QSerialPort::TwoStop); break;         default: break;         }         //设置流控制         serial->setFlowControl(QSerialPort::NoFlowControl);         //关闭设置菜单使能         ui->PortBox->setEnabled(false);         ui->BaudBox->setEnabled(false);         ui->BitNumBox->setEnabled(false);         ui->ParityBox->setEnabled(false);         ui->StopBox->setEnabled(false);         ui->openButton->setText(tr("关闭串口"));         ui->sendButton->setEnabled(true);         //连接信号槽         QObject::connect(serial, &QSerialPort::readyRead, this, &MainWindow::Read_Data);     }     else     {         //关闭串口         serial->clear();         serial->close();         serial->deleteLater();         //恢复设置使能         ui->PortBox->setEnabled(true);         ui->BaudBox->setEnabled(true);         ui->BitNumBox->setEnabled(true);         ui->ParityBox->setEnabled(true);         ui->StopBox->setEnabled(true);         ui->openButton->setText(tr("打开串口"));         ui->sendButton->setEnabled(false);     } }//main.c #include "mainwindow.h" #include  int main(int argc, char *argv[]) {     QApplication a(argc, argv);     MainWindow w;     w.show();     return a.exec(); }

方脸女星才是真抗老!从王菲舒淇到周涛,个个都显年轻为了让自己的脸蛋更精致,不少女明星都踏上了动脸的道路。细数女星做的动脸项目,最为火爆的就是削骨,许多女星都一刀削骨,把自己的方脸变成了锥子脸。这样的方式,虽说简单粗暴,即使效果到好一个比一个廉价,辱智的五毛特效,但凡上点心都做不出这种东西虽说国产剧号称投资上千万,甚至有不少过亿,但很多剧的特效真是一言难尽,常有粗制滥造。特效差,制作技术水平廉价,被称为五毛特效,一个比一个侮辱观众智商。极光之恋里,马可骑着摩托车,就在乔家演技拉胯,又在小敏家里拖后腿,唐艺昕别演戏了播出第一天收视就破1,前有小别离小欢喜,今有小敏家,黄磊又带着他的王炸来了。周迅秦海璐,两大视后联手,看起来确实相当过瘾。周迅的演技四平八稳,挑不出任何毛病。但最惊喜的还是数秦海璐10天卖出150多吨,90后大学生在京东生鲜推动大凉山草莓畅销12月,四川的天气阴冷潮湿,但这不能阻挡新农人贾石的脚步。一大早,他就踏上了去往四川的路。这个月,就是四川草莓收获的季节了,巧克力红颜黔莓等品质优良口味甜美深受消费者欢迎的草莓品种快自查!这106款App被下架关于下架侵害用户权益APP名单的通报今年以来,我部持续推进APP侵害用户权益专项整治行动,加大常态化检查力度,先后三次组织对用户反映强烈的重点问题开展回头看。11月3日,我部针对A日系11月销量缩水,日产最惨,就丰田还在硬撑曾几何时,日系车在中国市场销量一直相对比较稳定。甚至去年经历疫情波折之后,日系三强年底都取得了逆势上涨的成绩。不过,2021年的情况似乎不容乐观,尤其是下半年,稳如泰山的日系三强也中了头彩1000万!怎么支配?假如你中了头彩1000万,你是会选择挥霍?还是投资?人都渴望自己拥有财富,生活无忧无虑,想买什么就买什么,如同自己拥有一只会不断下金蛋的母鸡。但现实是不是所有人都拥有会下金蛋的母鸡1959年,李敏婚礼,毛主席亲自花钱操办,不胜酒力的他连喝数杯谁在橘子洲头看鹰击长空?谁在北国雪境惜秦皇汉武?几千年历史,数天下英雄,莫能出其左右,此人便是毛主席。主席不只是伟大的革命前辈国家领袖,更是一位豪杰英雄。可惜的是主席平时不怎么喜欢老照片1908年的广东河源,风光宜人底蕴深厚的千年客家古邑河源,别名槎城客家古邑,地处广东东北部东江中上游韩江上游。元和郡县志河源县县东北三百里有三河之源,故名。河源上古时代属扬州南境,战国属楚,秦于龙川置县。南朝齐永明元年(483年),首发骁龙8Gen1?小米12系列连第二都没抢到本月初,高通正式发布了机圈谈论已久的新一代骁龙旗舰处理器骁龙8Gen1。由此,各大厂商围绕首发权展开了激烈竞争。彼时,业界普遍认为小米将是骁龙8Gen1的首发者,毕竟小米曾多次首发Apple的CarPlay即将有重大改进苹果正准备发布新的iPhone操作系统更新,好消息是,CarPlay也会有重大更新。iOS15。2已经进入候选发布阶段,这意味着苹果公司已经选择了要发布到生产设备的版本,现在正在进
荣耀Play6C今日开售搭载骁龙480Plus5G芯片,1099元起IT之家10月13日消息,荣耀入门级机型Play6C于10月8日发布,售价1099元起,将于今日1008正式开售。IT之家了解到,荣耀Play6C拥有163。6675。138。68Win7支持的最后一版PS,初学者必备Photoshop2018安装教程Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具,可以有效地进行图片编辑和创造工作。1下载完成之后右键压缩包解压到AdobePhotoshopCC201华擎推出LiveMixer系列主板,最多23个USB接口华擎宣布推出LiveMixer系列主板,专为直播串流等需求而打造。首批产品包括英特尔和AMD平台各一款产品,分别为Z790LiveMixer和B650LiveMixer。LiveM一百多元就能买个降噪耳机?竹林鸟锦瑟真无线蓝牙耳机开箱测评一百多块钱就能买个降噪耳机,说实话我一开始是不怎么抱有期待,但是鉴于对竹林鸟的品牌印象极好,所以在首发时搞了过来,发现依旧符合真香定律!包装与配件锦瑟的包装依旧带有国风气息,不过相不推荐购买!这三款PCIE4。0固态硬盘慎重考虑,大厂也不一定靠谱最近SSD固态硬盘降价,估计有不少小伙伴动心思了,毕竟现在很多产品价格已经非常便宜。但俗话说买的没有卖的精。当你盯着某些产品的时候,有一些品牌也已经盯上了你。简单地说,降价确实提升微软SurfaceLaptop5发布,7888元起IT之家10月12日消息,微软于今晚正式发布了SurfaceLaptop5笔记本,处理器由上一代的英特尔11代酷睿升级到了12代酷睿,新增仙茶绿配色,暂无AMD处理器版本。微软Su好评率96!全能本无畏Pro16高刷好屏独显直连,游戏生产全都要近年来,为了满足不同消费者的需求,各大厂商纷纷在全能本上发力,凭借高性能释放轻薄的机身设计丰富的拓展性,成为了许多人心目中的梦中情本,实现了办公娱乐两不误。尤其是今年发布的全能本,大侠传奇之元宝获取教程介绍传奇大侠大家应该都知道,它是一款热血搏斗游戏,游戏中的角色无论是服装或是武器装备,都需要一次又一次通过在线升级来提升自己的战斗力,因为这游戏里边整体实力才算是大哥,那在线升级那就需warhaven战争避难所进不去?点击获取教程PVP动作游戏Warhaven战争避难所将10月12日8点到11月2日15点,在Steam平台进行国际版的内测。这款游戏以奇幻中世纪战场为背景,玩家可进行近距离大规模肉搏战,结合魔大佬用6个多锐评逆水寒手游,玩家总结不就是武侠版原神?号称要重铸MMO荣光,逆水寒手游在前期吊足了期待,因此当其盲盒测试结束后,网上还有不少对于游戏的激烈讨论,就比如B站某位资深游戏大佬,用六个多来锐评逆水寒手游,如此多内容的游戏,到NASA宣布人类史上首次,改变天体运动大获成功加拿大魁北客传媒10月13日报道美国国家航空暨太空总署(NASA)11日宣布了上月底进行的双小行星改道测试(DART)的最终成果。NASA兴奋宣称,太空飞行器,成功改变了目标行星的