ターミナルエミュレータライブラリを使用してターミナルを作成し、それを使用して、シリアルで入力されたデータをシリアルデバイスに送信します。データが返送されたら、それを解析して、editTextでユーザーに最も重要な情報を表示したいと思います。現在、バイト配列/チャンクを受け取り、それらを文字列に変換しています。\rまたは\nを取得すると、新しい文字列を作成し、プロセスを繰り返します。これはほとんどのコマンドで問題ありませんが、一部のコマンドは、ここで「showvlan」のように複数行にわたって結果を返します。
これをループすると、各行に文字列が表示されます。最初の例には、VLAN名のステータスとポートが含まれます。だから今私は問題を抱えています、どうすればVLAN1でxポートをアクティブにすることができますか?それらは異なる文字列になっています。これが、1行に関心がある現在の簡単なコマンドのコードとスクリーンショットです。
Handler viewHandler = new Handler();
Runnable updateView = new Runnable() {
@Override
public void run() {
mEmulatorView.invalidate();
if (statusBool == true) {
for (int i = 0; i < dataReceived.length(); i++) {
parseCommand = parseCommand + dataReceived.charAt(i);
if (dataReceived.charAt(i) == '\n' || dataReceived.charAt(i) == '\r'){
if(parseCommand.contains("KlasOS"))
{
String[] tokens = parseCommand.split("\\s{1,}");
final String ReceivedText = mReceiveBox.getText().toString() + " "
+ new String("Software Version: " + tokens[1] + "\n" );
runOnUiThread(new Runnable() {
public void run() {
mReceiveBox.setText(ReceivedText);
mReceiveBox.setSelection(ReceivedText.length());
}
});
}
parseCommand = "";
}
}
statusBool = false;
viewHandler.postDelayed(updateView, 1000);
}
}
};
これを変更して、複数の行を処理できるようにします。文字列に特定の情報が含まれている場合、文字列を格納するのが最も簡単な方法でしょうか?
これを右側のeditTextに出力する必要があります。
"次のポートはVLAN1にあります:Fa1 / 0、fa1 / 1、fa1 / 2、fa1 / 3、fa1 / 4、fa1 / 5、fa1 / 6、fa1 / 7、fa1 / 8、fa1 / 9、fa1 / 10、fa1 / 11、Gi0 "