我是Qt C ++开发的新手。我有一个控制硬件的处理器。从服务器(Java)我将指令发送到该硬件。根据该特定指令,它将执行。这是我项目的总体思路。
船上写有基本控制指令。现在我想要什么,我将要描述的问题是什么?抱歉我的英语不好。
我将从服务器发送JSON字符串。例如
working|pq|0|1
从网络套接字我会收到字符串
else if(message.contains("working")) {
emit OnMsgRecievedConnect("connect");
workingpq = message;
qDebug() << workingpq;
}
现在我收到了服务器的字符串。我已将该字符串带入另一个线程,以便向硬件发出指令。
workingvaluepq = EchoClient::workingpq ;
qDebug() << "End pq value Received from server :" << workingvaluepq ;
QStringList pq = workingvaluepq.split("|");
int pqSize = pq.size(); // get the pq list size;
qDebug() << "End pq size :" << pqSize;
if(pqSize == 5){
p = pq[3];
q = pq[4];
}
int pInt = p.toInt(&ok);
int qInt = q.toInt(&ok);
if(!ok && pqSize == 5){
pend = pInt;
}
if(!ok && pqSize == 5){
qend = qInt;
}
pend = pInt;
qend = qInt;
if(pqSize == 1 ){
pend = jread->endvaluep;
qend = jread->endvalueq;
}
while(true)
{ (All other stuff here)
if(pqSize == 5){
if (pend == pstart && qend == qstart)
{
Jsonendflag = 1;
}
}
if(pqSize == 1){
if (pend == pstart && qend == qstart)
{
Rightstopflag = 1;
}
}
因此,当这一点(无论我们修复了什么)达到特定任务时,最终它将停止。也许上面的代码有一些经验问题。所以一个人可以帮助我改进代码。还有一个问题,这只是我尝试过的一项任务。
注意:pstart,qstart,pend,qend在板载JSON文件中定义的这些内容。只是我会阅读并执行所以阅读执行并不是什么大问题 如果我从服务器机器收到多个字符串(任务)必须逐个完成任务。例如,将收到如下所示的字符串
working|xy|2|3*working1|xy|8|7*working3|xy|12|15*working4|xy|17|20
上面的字符串有四个不同的任务,我会在同一时间收到,现在我想连续拆分并完成任务。我希望在这里有这么多有经验的人可以帮助解决这个问题。
答案 0 :(得分:0)
使用*拆分后,使用循环逐个处理任务。
const QStringList taskList = QString("working|xy|2|3*working1|xy|8|7*working3|xy|12|15*working4|xy|17|20").split('*');
for (const QString& task : taskList)
{
auto params = task.split('|');
/* Perform 1 task */
// ...
}
/* Report back to server */
// ...
上面的代码使用C ++ ranged-for-loop。
您可以使用较旧的for循环执行相同的操作:
for (int i = 0; i < taskList.count(); ++i)
{
auto params = taskList[i].split('|');
/* Perform 1 task */
// ...
}