【问题标题】:Sending Arduino ADC Data to Android Tablet via USB Serial通过 USB 串口将 Arduino ADC 数据发送到 Android 平板电脑
【发布时间】:2020-02-02 13:24:22
【问题描述】:

我正在尝试使用 USB 串行通信将 Arduino ADC 数据发送到 android 平板电脑。我在 arduino 端使用Serial.println()。我的问题是我无法解码在 android 端收到的数据。
例如。假设我从 arduino 发送 Serial.println(768),我检查了我的 android 接收缓冲区,它显示 (55,54,56,13,10)

如何将此数据解码回 768 值?

【问题讨论】:

标签: android arduino usb


【解决方案1】:

查看ASCII table 你会发现

55,54,56,13,10

代表

"768\n\r"

大多数编程语言通过其字符串库提供字节值和字符/字符串之间的转换方法。所以你不必自己实现解码。

参考https://howtodoinjava.com/array/convert-byte-array-string-vice-versa/

UTF-8 byte[] to String

或您在网上找到的“字节到字符串 Android”的任何其他内容

【讨论】:

  • 感谢您的回复。您提供的链接确实帮助我解决了我的问题。在发布我的问题后,我已经弄清楚了解码部分。实际上 .getbytes 方法也将新的 CR 和 LN 放入字符串中,但我想省略这些字节,只对数字部分感兴趣
【解决方案2】:

字符串原始数据 = " " ; 字符串最终数据 = " "; UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() { //定义一个在读取数据时触发的回调。 @覆盖 公共无效 onReceivedData(byte[] arg0) {

        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);

}

【讨论】:

    猜你喜欢
    • 2012-06-23
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多