2017-04-19 48 views
0

嗨我是新手編程,需要爲我的學校項目提取數據。數據來自Arduino設備,該設備發送的數據看起來像這樣。在netbeans中分割尖括號之間的傳入數據

<call_sign>IVV-HAM</call_sign> 
<mission_call>ARP</mission_call> 
<absolute_time>13:13:13</absolute_time> 
<elapsed_time>43</elapsed_time> 
<imu_accel_x>240</imu_accel_x> 
<imu_accel_y>196</imu_accel_y> 
<imu_accel_z>62</imu_accel_z> 
<imu_gyro_x>599</imu_gyro_x> 
<imu_gyro_y>1013</imu_gyro_y> 
<imu_gyro_z>215</imu_gyro_z> 
<imu_mag_x>402</imu_mag_x> 
<imu_mag_y>495</imu_mag_y> 
<imu_mag_z>447</imu_mag_z> 
<imu_temp>453</imu_temp> 

我需要擺脫前三行,然後發送剩餘的代碼進行繪圖。我試圖劃分和分割尖括號但我知道怎麼做似乎工作。 任何幫助意見或建議我可以找到答案(我已經在這裏看了一天已經),將不勝感激謝謝。

public void run(){ 
        //create a new Scanner and connect it to the Serial Port 
        input = new Scanner(connectedPort.getInputStream()); 
        //HERE I tried to use input.useDelimiter("></") 
        // I also tried to split by creating a string.split but 
        // it did not work either. 
        //loop indefinitely until you get data from the Serial Port 
        while(input.hasNextLine()){ 
         //get line of text from serial port 
         String line = input.nextLine(); 

         //dump the raw data to the output text area 
         //taRawOutput.append(Integer.toString(number)+'\n'); 
         textArea_RawData.append(line+"\n"); 
        }//end of loop 

        //close the scanner object reading from the serial port 
        input.close(); 
       }//end of methd run() 
      };//end of inner class definition 

      //start the thread that was just defined running 
      thread.start(); 

     }catch(IOException e){ 
      JOptionPane.showMessageDialog(this, e.getMessage()); 
     }//end of catch block 
    } 

我試着編輯問題來顯示我做了什麼。

+0

請告訴我們你試過的東西 –

+0

PS看起來像XML –

+0

「新掃描儀」之後,我嘗試使用「input.useDelimiter(」>

回答

1

您需要在之前將拆分爲一個開放式括號,但不要在其後面加斜槓。你需要拆分不消耗括號。所有這些都可以通過展望完成。

試試這個:

scanner.useDelimiter("(?=<[^/])"); 

然後每次調用時scanner.next(),你會在整個標籤讀取。

正則表達式的意思是「以下字符是一個<然後一個字符不是斜槓」,它不會消耗任何輸入的(匹配是零長度的,實際上字符之間)

+1

沒有解釋,只是一個先進的正則表達式拋出新手。嚴肅的問題:如果你在主持人角色中遇到這樣的答案,你會怎麼做? – GhostCat

+1

@GhostCat在你跳到結論之前,我在一個非常糟糕的移動接收區域,無法發佈解釋部分(保持超時)。我在帖子上的第一次嘗試死了,所以我再次嘗試(從頭開始)。現在我回來了,我已經發布了一個正確的答案。如果我看到原稿,我可能會要求海報來解釋它。 – Bohemian

+0

謝謝。說得通。 – GhostCat

0

我決定放棄一個分隔符,並使用帶有「indexOf(」>「)+ 1,lastIndexOf(」<「)的Vector,我知道這已經過時了,但它適用於我的目的。它擁有我需要的數據,並可以發送到我需要的不同圖表。 謝謝你的幫助,雖然我很感激。