小白修炼中 |
2016-04-21 22:08 |
打开串口总是失败QIODevice::read: device not open
/******************************************************widget.h************************************************/ #ifndef WIDGET_H #define WIDGET_H
#include <QWidget> #include <QtSerialPort/QSerialPort> #include <QtSerialPort/QSerialPortInfo> #include <QTimer>
namespace Ui { class Widget; }
class Widget : public QWidget { Q_OBJECT
public: explicit Widget(QWidget *parent = 0); ~Widget(); private slots:
void on_cmopen_clicked();
void on_send_clicked(); void updateAA();
private: Ui::Widget *ui; QSerialPort *my_serialport; QByteArray requestData; QTimer *timer; };
#endif // WIDGET_H
/*********************************************************widget.cpp***************************************************************/ #include "widget.h" #include "ui_widget.h" #include <QtSerialPort/QSerialPort> #include <QtSerialPort/QSerialPortInfo> #include <QDebug> #include <QTimer> #include <QIODevice>
Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this);
foreach (const QSerialPortInfo &info,QSerialPortInfo::availablePorts()) { qDebug()<<"Name :"<<info.portName() ; qDebug()<<"Description :"<<info.description(); qDebug()<<"Manufacturer :"<<info.manufacturer();
//Example use QSerialPort QSerialPort serial; serial.setPort(info); if(serial.open(QIODevice::ReadOnly)) { ui->comboBox->addItem(info.portName()); serial.close(); } } }
Widget::~Widget() { delete ui; }
void Widget::on_cmopen_clicked() { my_serialport = new QSerialPort(); qDebug()<<ui->comboBox->currentText(); my_serialport->setPortName(ui->comboBox->currentText()); my_serialport->open(QIODevice::ReadWrite); qDebug()<<ui->lineEdit->text().toInt();
my_serialport->setBaudRate(ui->lineEdit->text().toInt()); my_serialport->setDataBits(QSerialPort::Data8); my_serialport->setParity(QSerialPort::NoParity); my_serialport->setStopBits(QSerialPort::OneStop); my_serialport->setFlowControl(QSerialPort::NoFlowControl);
timer = new QTimer(this); connect(timer,SIGNAL(timeout()),this,SLOT(updateAA())); timer->start(1000); }
void Widget::on_send_clicked() { QByteArray TxData = "aaaa"; my_serialport->write(TxData); }
void Widget::updateAA() { requestData = my_serialport->readAll(); if(requestData!=NULL) { ui->textEdit->append(requestData); } requestData.clear(); }
[attachment=15032] 代码是不是哪里写错了?求解
|
|