我正在尝试使用serial-> write ...函数将我之前读过的7个变量发送到我的微控制器。
我在我的微控制器上写了一个littile程序,如果有输入,它会闪烁一个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");
我的错误在哪里?
此致
答案 0 :(得分:1)
我会研究UTF-8编码。您确定您的微控制器代码不包括UTF-8字节吗?
指示灯如何响应输入数据取决于您的微控制器代码。也许你可以添加一些微控制器代码。
serial-&gt; write函数返回实际写入字节的计数。所以它应该工作,但你期望另一个返回值。 阅读有关此文档的文档: http://doc.qt.io/qt-5/qiodevice.html#write