2015-10-12 33 views
0

我從Arduino發送字符串。 字符串看起來像這樣將通過Arduino串行發送的字符串轉換爲處理

2,0/3,0/4,0/5,0/6,0/7,0/8,1/9,1/10,1/11,1/12,1/13,1/ 

其中第一個數字是Arduino的銷,然後通過拐角,然後銷狀態1 =高0 =低

所以這裏它的引腳2 =低,銷分離3 =低....銷13 =高

當此字符串到達​​處理我需要向上分割字符串和分配的值,以對應於所述銷的變量

類似

int p2 = 0; int p3 = 0; .. .. .. int pin8 = 1;

什麼將是一個很好的實現這一目標的有效方法?

與輸入我來到這裏這裏是我做了什麼,

rawInput = "2,0/3,0/4,0/5,0/6,0/7,0/8,1/9,1/10,1/11,1/12,1/13,1"; 
pinNumber = split(rawInput, '/'); 
for (int i =0; i < pinNumber.length; i++) { 
    pinValue = split(pinNumber[i], ","); 
    hm.put(Integer.parseInt(pinValue[0]), Integer.parseInt(pinValue[1])); 
} 

沒有任何明顯的缺陷嗎?似乎在工作

+0

聽起來像一個HashMap給我的作業,這是一個帶有值的唯一鍵。那麼你甚至不需要維護多個變量。如果你想得到高/低的實際文本或給你的代碼可讀性,那麼你可以有一個枚舉,或者如果這不重要,你可以評估它的值 – Michael

回答

0

除了存儲爲HashMap。您可以將字符串",/"拆分爲字符串數組。然後用你的模式,甚至指數是你的針數,奇數指數是你的針數。一個循環可以快速實現這一點。

String str = "1,0/2,1" 
String[] strArr = str.split("/,"); 
Map<String, Integer> storeMap = new HashMap(); 
for (int i = 0, i < strArr.length; i++) { 
    if (i % 2 == 0) { 
     storeMap.put(String.valueOf(i), Integer.parseInt(strArr[i + 1])); 
    } 
} 
相關問題