首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt ReadyRead和AVR设备

Qt ReadyRead和AVR设备
EN

Stack Overflow用户
提问于 2018-04-17 06:37:49
回答 1查看 126关注 0票数 0

我使用Qt和Arduino UNO构建了一个数据采集系统。现在我想用一个AVR ATmege32u4微控制器把它移植到Qt上。

请看下面的代码。我正在读取由ReadyRead信号触发的Qt传入的串行数据,然后将这些数据打印到Qt调试窗口。这适用于Qt+UNO,但不适用于Qt+32u4。我排除了32u4的任何问题(例如,坏的芯片),因为数据在Arduino IDE中的串口监视器上打印正常。

我的问题是:

(1)为什么程序只适用于一台AVR设备,而不适用于另一台?

(2)如何在32u4微控制器上运行程序?

Arduino代码(简化以突出显示问题):

代码语言:javascript
复制
void setup(){
  Serial.begin(115200);
  while(!Serial){}
}

void loop(){
  // wait for incoming serial data from Qt (code not shown)
  // record data
  // send data back.  In this example, send back some text: "abababab"
  for(unsigned int i=0;i<4;i++){
   Serial.write{0x61}; // "a"
   Serial.write{0x62}; // "b"
  }
}

相关Qt代码:

代码语言:javascript
复制
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QString>
#include <QDebug>
#include <QStringList>
#include <QtSerialPort> 
#include <QDataStream>

MainWindow::MainWindow(QWidget *parent) :
  QMainWindow(parent),
  ui(new Ui::MainWindow)
  {
    ui->setupUi(this);
    microcontroller = new QSerialPort(this);

    // initialize the serial port (baud rate, parity etc.)

connect(microcontroller, &QSerialPort::readyRead, this, &MainWindow::readData);

void MainWindow::readData(){

 serialData += microcontroller->readAll();
 qDebug() << serialData;

}
EN

回答 1

Stack Overflow用户

发布于 2018-04-17 17:38:29

您不能打开同一COM端口两次。如果它是由Arduino IDE打开的,它将无法在您的Qt应用程序上工作。

另外,你应该发布一个MCVE。如果你不给我们看代码,很难说会出什么问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49867253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档