2014-12-03 32 views
0

我試圖通過串行將單個字節寫入Arduino。 「命令」是從另一種方法發送的單個字符。當我查看byteCommand[0]時,'s'正確轉移到115,但當我查看byteCommand作爲一個整體時,它將顯示爲一個字符串盯着[[email protected],然後是一串十六進制字符。我可以修改Arduino代碼來查找,而不是char值,但我覺得可以通過正確的方式發送字節。將字節[]寫入串行時,該值與單個字節的值不同

 byte[] byteCommand = new byte[1];   
     byteCommand[0] = (byte) command[0] 

     if (command == 's' || command == 'f') { 
      mSerialPort.write(byteCommand); 
      commandInfo.setText(String.valueOf(command)); 
      rawInfo.setText(String.valueOf(byteCommand)); 
     } 
+0

我想,這是很正常的,當你發送數組。如果你將使用幾乎所有的數組方法toString(),那麼它將導致這個奇怪的東西王。我認爲,這可以幫助你:http://stackoverflow.com/questions/6684665/java-byte-array-to-string-to-byte-array – 2014-12-03 20:22:11

+0

這是有道理的,但我仍然困惑,爲什麼字符串隨着每次迭代而改變。如果唯一的字節是'115',那麼不應該保持字符串不變? – JHinne 2014-12-03 20:25:58

+0

它正在改變,因爲它顯示的是內存位置。 – 2014-12-03 20:28:38

回答

0

這是因爲,當你看到「byteCommand作爲一個整體」你是不是真的在看該數組內,而是你在尋找對象「byteArray.toString()」方法返回的字符串,這通常就像你看到的東西...

如果你想實際看到你的數組中的值,如[115,23,56],那麼你必須使用數組方法如下所示:

String arryValuesString = Arrays.toString(byteCommand); 

希望它有幫助!

問候!

+0

我明白了,謝謝!我現在試圖弄清楚如何從Arduino中讀取這個vaue。 – JHinne 2014-12-03 20:36:57

相關問題