Qt串行写入功能的输出错误/太少

Wrong/ too few output from Qt serial write function

本文关键字:输出 错误 太少 功能 Qt      更新时间:2023-10-16

我正在尝试发送我之前使用串行>写从 GUI 读取的 7 个变量... 功能到我的微控制器。

我在微控制器上编写了一个程序,如果有输入,它会闪烁 LED。但它只显示 5 个输入。

猜可能是我的微控制器不够快,我停止了Qt程序,但这不起作用。所以我不明白为什么输入太少。

此外,我使用 qDebug() <<函数在控制台中打印出我发送到微控制器的内容,但这只显示我发送的字符数(例如,如果我发送 500 个 qDebug() 显示"3")。所以我想我的转换也不正确。

这是我的代码:

 //conversion from QString into const char*
    q_bauteillaenge      = (ui->Bauteillaenge_e->text());
    q_messintervall_vert = (ui->Messintervall_vert_e->text());
    q_anz_inkrem_vert    = (ui->Anzahl_Inkremente_vert_e->text());
    q_inkrem_laenge_vert = (ui->Inkrementlaenge_vert_e->text());
    q_anz_messungen_vert = (ui->Anzahl_Messungen_vert_e->text());
    q_abs_messungen_vert = (ui->Abstand_Messungen_vert_e->text());
    a_bauteillaenge      =  q_bauteillaenge.toUtf8();
    a_messintervall_vert =  q_messintervall_vert.toUtf8() ;
    a_anz_inkrem_vert    =  q_anz_inkrem_vert.toUtf8() ;
    a_inkrem_laenge_vert =  q_inkrem_laenge_vert.toUtf8() ;
    a_anz_messungen_vert =  q_anz_messungen_vert.toUtf8();
    a_abs_messungen_vert =  q_abs_messungen_vert.toUtf8();
    bauteillaenge      = a_bauteillaenge.constData();
    messintervall_vert = a_messintervall_vert.constData() ;
    anz_inkrem_vert    = a_anz_inkrem_vert.constData() ;
    inkrem_laenge_vert = a_inkrem_laenge_vert.constData() ;
    anz_messungen_vert = a_anz_messungen_vert.constData();
    abs_messungen_vert = a_abs_messungen_vert.constData();

    //Sending
    qDebug() << serial->write("1");
    serial->write("n");
    qDebug() << serial->write(bauteillaenge);
    serial->write("n");
    qDebug() << serial->write(messintervall_vert);
    serial->write("n");
    qDebug() << serial->write(anz_inkrem_vert);
    serial->write("n");
    qDebug() << serial->write(inkrem_laenge_vert);
    serial->write("n");
    qDebug() << serial->write(anz_messungen_vert);
    serial->write("n");
    qDebug() << serial->write(abs_messungen_vert);
    serial->write("n");

我的缺点在哪里?

问候

  1. 我会研究 UTF-8 编码。您确定您的微控制器代码不包括 UTF-8 字节吗?

  2. LED 如何响应传入数据取决于微控制器的代码。也许您可以添加一些微控制器代码。

  3. 串行>写函数返回实际写入字节的计数。因此,它正常工作,但您希望返回另一个值。阅读有关此文档的文档:http://doc.qt.io/qt-5/qiodevice.html#write