下位机单片机用:sprintf(print_buff,"\r\nAPIKEY = %s\r\n\r\nOK\r\n",apikey);给上位机发送字符串,这里我用上位机Qt的 TextEdit框接收到的数据是:
APIKEY = m3Tffjl3gMtwLIAcWpe3q=gERsk=
OK
而我用lineEdit框接收到的数据总是:
=gERsk= OK
问题:
我要怎么提取”m3Tffjl3gMtwLIAcWpe3q=gERsk=“这串数据并用lineEdit框全部显示出来,请问有什么办法?
下面是我的串口接收数据 :
QByteArray data= SPort->readAll();
//实现了从本地字符集GBK到Unicode的转换
QString str = QString::fromLocal8Bit(data);
//方法1:显示在TextEdit框上
ui->TextEdit->insertPlainText(str);
//方法2:显示在lineEdit框上
ui->lineEdit->setText(str);
这问题卡已久,请好心人帮我一下呗。可以有偿奖励。
调试啊,你觉得哪里可能出问题就看它出没出问题嘛
调了,我个人认为原因有如下:因为字符太多导致lineEdit分多行显示,每次显示都是最后一行,前面几行都被覆盖显示了,现在想朋友们能不吝啬提供思路解决这个问题。因为我要选择显示前面的字符串
@千浦千钰: 那直接从字符串里头提取要显示的部分不就好了么
@jakio6: 这个我做了试验,能提取的总是最后一行其中的字符串而已,肯本没操作到前面几行。我用一个数组装端口AllRead()读来的数据总是没有数据。不知道串口发送来的数据把数据分隔到buffer 里了还是怎么了,看有些网友说读可能不是一次性读完,而是多线程的
@千浦千钰: ?不是说有个方法能显示出数据了吗,接收到的数据肯定都已经在字符串里了啊,和多线程有什么关系