通过USB串行总线将Arduino ADC数据发送到Android平板电脑
我正在尝试使用USB串行通信将Arduino ADC数据发送到android平板电脑。我正在arduino端使用通过USB串行总线将Arduino ADC数据发送到Android平板电脑,android,arduino,usb,Android,Arduino,Usb,我正在尝试使用USB串行通信将Arduino ADC数据发送到android平板电脑。我正在arduino端使用Serial.println()。我的问题是我无法解码android端接收到的数据。 例如,假设我从arduino发送Serial.println(768),我检查我的android接收缓冲区,它显示(55,54,56,13,10) 如何将此数据解码回768值?查看 55,54,56,13,10 代表 "768\n\r" 大多数编程语言通过其字符串库提供字节值和字符/字符串之间的转
Serial.println()
。我的问题是我无法解码android端接收到的数据。例如,假设我从arduino发送
Serial.println(768)
,我检查我的android接收缓冲区,它显示(55,54,56,13,10)
如何将此数据解码回768值?查看
55,54,56,13,10
代表
"768\n\r"
大多数编程语言通过其字符串库提供字节值和字符/字符串之间的转换方法。因此,您不必自己实现解码
指
或
或者您在网上找到的“字节到字符串的Android”string rawdata=“”;
字符串finaldata=“”;
UsbSerialInterface.UsbReadCallback mCallback=新的UsbSerialInterface.UsbReadCallback(){//定义一个回调,该回调在读取数据时触发。
@凌驾
接收数据时的公共无效(字节[]arg0){
byte[]buffer=arg0;
对于(i=0;我可能重复感谢您的回复。您提供的链接确实帮助我解决了我的问题。在发布我的问题后,我已经找到了解码部分。实际上,.getbytes方法也在字符串中添加了新的CR&LN,但我想省略这些字节,只对数字部分感兴趣
byte[] buffer = arg0;
for (i =0;i <=(buffer.length-1);i++) {
if(buffer[i]!= 13) {
if(buffer[i]== 10){
finaldata = rawdata;
rawdata = "";
}else {
chdata = (char) buffer[i];
rawdata += chdata;
}
}
}
data = Integer.parseInt(finaldata);