将字符串从 QT 发送到 Arduino

Posted

技术标签:

【中文标题】将字符串从 QT 发送到 Arduino【英文标题】:sending a string from QT to Arduino 【发布时间】:2015-04-03 10:05:22 【问题描述】:

我正在尝试从 qt 应用程序向 arduino 发送一个字符串,起初我发送了一个简单的字符并且它有效,但是当我尝试从我的Linedit 中获取一个字符串并通过串行端口将其发送到 arduino ,它告诉我一个错误:

erreur : 没有匹配的函数调用 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);



【问题讨论】:

【参考方案1】:

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) 方法。

如果这有帮助,请告诉我。

【讨论】:

以上是关于将字符串从 QT 发送到 Arduino的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Qt 中的程序不断向我的 Arduino 发送字符串?

qserialport 不向 arduino 发送字符

无法将字符串从 python 发送到 arduino

Arduino - 处理串行通信

在两个 arduino 微控制器上使用 i2c 通信发送字符串

如何将 0 值发送到 ESP8266/arduino