Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 操作和使用从Arduino USB获取的字符串_Android_Logging_Usb - Fatal编程技术网

Android 操作和使用从Arduino USB获取的字符串

Android 操作和使用从Arduino USB获取的字符串,android,logging,usb,Android,Logging,Usb,我可以得到字符串来自USB串行工作时,它是在原始格式。但一旦我尝试使用Double.valueOf或其他方法将其转换为数字,应用程序就会崩溃 public void onReceivedData(byte[] arg0) { String data = null; try { data = new String(arg0, "UTF-8"); Double waterLevel=Double.valueOf(data); tvAp

我可以得到字符串来自USB串行工作时,它是在原始格式。但一旦我尝试使用Double.valueOf或其他方法将其转换为数字,应用程序就会崩溃

public void onReceivedData(byte[] arg0) {
    String data = null;
    try {
        data = new String(arg0, "UTF-8");

       Double waterLevel=Double.valueOf(data);

        tvAppend(textView, waterLevel+"m");

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }


}
当使用此选项时,上述操作有效,并且仅尝试将字符串转换为双精度或浮点值会导致问题:

   String waterLevel=data+"m";
错误消息:

2019-02-05 19:02:06.746 915-5126/? E/AwareLog: CPUFeatureAMSCommunicator: set app boost but type is unknown
2019-02-05 19:02:06.824 421-450/? E/DynamicFpsPolicy: FpsInfo: 1a500000000 can not find FpsPolicyService
2019-02-05 19:02:07.683 915-1498/? E/TouchFilter: setTouchFilter LOG Enable prameter: 0
2019-02-05 19:02:08.237 421-450/? E/DynamicFpsPolicy: FpsInfo: 1a500000000 can not find FpsPolicyService
2019-02-05 19:02:08.454 12270-12270/com.jorc.loggergeneral.jorclogger E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
2019-02-05 19:02:08.455 12270-12270/com.jorc.loggergeneral.jorclogger E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
2019-02-05 19:02:09.432 12270-12467/? E/AndroidRuntime: FATAL EXCEPTION: Thread-6
    Process: com.jorc.loggergeneral.jorclogger, PID: 12270
    java.lang.NumberFormatException: empty String
        at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
        at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
        at java.lang.Double.parseDouble(Double.java:539)
        at java.lang.Double.valueOf(Double.java:503)
        at com.jorc.loggergeneral.jorclogger.MainActivity$1.onReceivedData(MainActivity.java:55)
        at com.felhr.usbserial.UsbSerialDevice$WorkerThread.onReceivedData(UsbSerialDevice.java:209)
        at com.felhr.usbserial.UsbSerialDevice$WorkerThread.run(UsbSerialDevice.java:184)
2019-02-05 19:02:09.483 915-1082/? E/InputDispatcher: channel '4af7ed1 com.jorc.loggergeneral.jorclogger/com.jorc.loggergeneral.jorclogger.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
2019-02-05 19:02:09.535 421-450/? E/DynamicFpsPolicy: FpsInfo: 1a500000000 can not find FpsPolicyService
2019-02-05 19:02:09.706 915-1284/? E/TouchFilter: setTouchFilter LOG Enable prameter: 0
2019-02-05 19:02:09.938 1135-1135/? E/FullInputEventModel: onStartInput event aborted: ejh: could not obtain extracted text (class ejh)
2019-02-05 19:02:10.976 485-485/? E/Thermal-daemon: [battery] temp_new :32  temp_old :31
2019-02-05 19:02:10.979 485-485/? E/Thermal-daemon: Report temperature: [battery] temp :32  report_threshold:1
2019-02-05 19:02:11.731 915-1284/? E/TouchFilter: setTouchFilter LOG Enable prameter: 0

你的答案在stacktrace里。您尝试解析一个空字符串。
找个时间尝试使用调试器…

您的答案在stacktrace中。您尝试解析一个空字符串。
找个时间尝试使用调试器…

我可以用catch短语处理这个问题。你不能在第一行使用if短语来避免它:

    if(data.length()!=0 && data.length()>0){
        try {
                tvAppend(textView, Double.parseDouble(data)*6 + "m\n");
         } catch(Exception e) {
            // or some value to mark this field is wrong. or make a function
        }
    }

我可以用流行语来处理这个问题。你不能在第一行使用if短语来避免它:

    if(data.length()!=0 && data.length()>0){
        try {
                tvAppend(textView, Double.parseDouble(data)*6 + "m\n");
         } catch(Exception e) {
            // or some value to mark this field is wrong. or make a function
        }
    }

它不是一个空字符串。我可以在简单地添加到文本视图时看到值。我尝试添加它,然后对几个值起作用,然后做同样的事情。如果(!data.isEmpty()){test=Double.valueOf(data);}它不是空字符串。我可以在简单地添加到文本视图时看到值。我尝试添加它,然后对几个值起作用,然后做同样的事情。如果(!data.isEmpty()){test=Double.valueOf(data);}