2017-08-04 3 views
0

私はQtに取り組んでいますが、私の人生の間は私は全く修正できません。私は自分のコードに多くの異なる組み合わせを試しましたが、それでも私が探している出力を私に与えていません。私は誰かが私を助けることを望んでいます。シリアル入力を読み込んで別の変数に分割する

QStringList buffer_split = serialBuffer.split(","); // split the serialBuffer string, parsing with ',' as the separator 

    // Check to see if there less than 3 tokens in buffer_split. 
    // If there are at least 3 then this means there were 2 commas, 
    // means there is a parsed temperature value as the second token (between 2 commas) 
    if(buffer_split.length() < 3){ 
     // no parsed value yet so continue accumulating bytes from serial in the buffer. 
     serialData = arduino->readAll(); 
     serialBuffer = serialBuffer + QString::fromStdString(serialData.toStdString()); 
     serialData.clear(); 
    }else{ 
     // the second element of buffer_split is parsed correctly, update the temperature value on temp_lcdNumber 
     serialBuffer = ""; 
     qDebug() << buffer_split << "\n"; 
     parsed_data = buffer_split[1]; 

} 

上記の溶液は、順番に私のようなシリアルポートを介して送信される値を読んでいます、私のために働いています

上記
0,0,0,0,0,0 

parsed_dataは、シリアルポートから情報を読み取る方法です、 どちらが正しい。

私が抱えている問題は、それを分割し、別の変数に格納してif文を開始することです。これまでのところ、私はそれを働かせるように見えません。

誰も私を助けることができる場合、私はあなただけint num1 = buffer_split[0].toInt(); int num2 = buffer_split[1].toInt();を必要とするすべて、

あなたは

+0

私はあなたの質問には明確ではありません。 parsed_data = buffer_split [1]で書いたように、個々の値にアクセスして保存することができます。あなたはどこにいるのですか? –

+0

私がbuffer_split [2]のように格納しようとすると、うまくいきません。このようなものを探しています。私はこれが少し理解しやすくなることを願っています。例の配列の送信は45,0,67,0,0,13です、私は変数に格納される各番号が必要です。 int num1 = parsed_data [0]は45、int num2 = parsed_data [1]は0、int num3 = parsed_data [2]は6723になります。 –

答えて

0

あなたは余分なparsed_data変数buffer_split格納し、それらを必要としない感謝感謝される...

+0

こんにちは。たとえ変化したとしても。 'num1 = parsed_data.mid(0,1).toInt();'は動作するようですが、これは正しい方法ではないと私は信じています。 –

+0

ちょっと混乱しました。あなたの問題がシリアルポートから値を分割しないで読むことができない場合、4,0,2,5,7,1のような元のデータを読むことができますか?値を\ n改行文字で終わらせ、行全体を受け取ったときにそれを読むと、canReadLine()関数でチェックできます – onurozturk

関連する問題