2015-04-03 117 views
0

我想從qt應用程序發送一個字符串到arduino,起初我發送了一個簡單的字符,它的工作,但是當我嘗試從我的Linedit採取一個字符串,並將其發送到通過串口Arduino的,它告訴我一個錯誤:從QT發送一個字符串到Arduino

erreur : no matching function for call to QSerialPort::write(QString&)

這個代碼

void MainWindow::on_pushButton_clicked() 

{ 
QString envoi ; 

envoi = ui->lineEdit->text(); 

/* ui->label->setText(envoi); */ 


    serial.setPortName("com17"); 

    serial.setBaudRate(QSerialPort::Baud9600); 

    serial.setDataBits(QSerialPort::Data8); 

    serial.setParity(QSerialPort::NoParity); 

    serial.setStopBits(QSerialPort::OneStop); 

    serial.setFlowControl(QSerialPort::NoFlowControl); 

    serial.open(QIODevice::ReadWrite); 

    serial.write(envoi); 


} 

回答

0

有在QSerialPort三種可用write方法所有這一切都是從QIODevice

繼承
qint64 QIODevice::write(const char * data, qint64 maxSize) 
qint64 QIODevice::write(const char * data) // equivalent to QIODevice::write(data, qstrlen(data)); 

,最後

qint64 QIODevice::write(const QByteArray & byteArray) 

你有幾個可能性,使您寫調用,最簡單的我似乎

serial.write(envoi.toUtf8()); 

它採用

QByteArray QString::toUtf8() 

你也可以使用錯綜複雜的東西,如

serial.write(envoi.toStdString.c_str()); 

然後它將使用write(const char * data)方法。

讓我知道這是否有幫助。