2014-12-03 25 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

相关问题