Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.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/3/android/191.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
Java 用arduino开发android_Java_Android_Methods_Arduino Uno - Fatal编程技术网

Java 用arduino开发android

Java 用arduino开发android,java,android,methods,arduino-uno,Java,Android,Methods,Arduino Uno,所以我对Java和android开发还不熟悉。到目前为止,我一直在创建一个能够连接arduino并与之交互的应用程序。我有一个方法,可以从arduino读取数据(以字节为单位),然后以UTF-8的字符串形式打印数据……然而,我只是希望这个方法能够读取和解释数据,并且可以从另一个方法调用解释后的数据,比如安卓的按钮。下面是读取数据的代码 public class MainActivity extends AppCompatActivity { public final String Act

所以我对Java和android开发还不熟悉。到目前为止,我一直在创建一个能够连接arduino并与之交互的应用程序。我有一个方法,可以从arduino读取数据(以字节为单位),然后以UTF-8的字符串形式打印数据……然而,我只是希望这个方法能够读取和解释数据,并且可以从另一个方法调用解释后的数据,比如安卓的按钮。下面是读取数据的代码

public class MainActivity extends AppCompatActivity {
    public final String Action_USB_Permission = "com.example.myapplication.USB_PERMISSION";
    UsbManager usbManager;
    UsbDevice device;
    UsbSerialDevice serial;
    UsbDeviceConnection connection;
    String data;
    String adata;
    TextView textView;
    Button tempButton

    UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() {
        @Override
        public void onReceivedData(byte[] arg0) {
            try {
                data = new String(arg0, "UTF-8"); //edit (removed String in "String data =" )


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

    // Serial codes and commands
    public void pushcmd(String command) { //command for serial
        serial.write(command.getBytes());
    }

    public void gettemp() {
        pushcmd("T\n");
        serial.read(mCallback);
        adata = data;
    }

    //This is for the app creation i think
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        usbManager = (UsbManager) getSystemService(this.USB_SERVICE);
        tempButton = (Button) findViewById(R.id.buttontemp);
    }

    public void onClickTemp(View view) { //This is the command to print data
        gettemp();
        tvAppend(textView, "\n Measured temperature \n" + adata);
    }

    private void tvAppend(TextView tv, CharSequence text) {
        final TextView ftv = tv;
        final CharSequence ftext = text;

        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                ftv.append(ftext);
            }
        });
    }
}
tvAppend是一种在屏幕上的文本视图上打印字符串的方法。 我从那里得到了图书馆,上面说只要用

read(mcallback),我已经尝试了这个命令,但是我收到了一个“测量的temperaturenull”,然后从onReceivedData方法打印测量值。如果您有任何建议,我们将不胜感激。如果我不清楚,请告诉我,我会尝试进一步澄清

编辑:我添加了tvAppend方法,定义了一个textview字段和一个按钮。我还指出,我没有包括整个程序,我遵循了所有关于电路的实现,再次感谢反馈


关于编辑的注释:当代码更改为上面的方式时。adata不显示,仅显示“测量温度”

我认为你对这里的数据流感到困惑

  • 您单击应用程序上的按钮
  • 它对Arduino调用
    pushcmd
  • Arduino在将来的某个未知点发回一些数据
  • 您读取该数据并更新
    TextView
  • 现在,有了这种逻辑,代码就可以这样构造了。(可以按照您的意愿重新组织回到您的应用程序中)

    或者,如果您想将所有这些都合并到一个方法中,那么

    public void onClickTemp(View view) {
        pushcmd("T\n");
    
        serial.read(new UsbSerialInterface.UsbReadCallback() {
            @Override
            public void onReceivedData(byte[] arg0) {
                try {
                    // Here, you are guaranteed some data
                    String data = new String(arg0, "UTF-8");
                    tvAppend(textView, "\n Measured temperature \n" + data);
                } catch (UnsupportedEncodingException e) {
                    e.getStackTrace();
                }
            }
        });
    }
    

    尝试从
    String data=
    中删除
    String
    。此外,您似乎还缺少创建一个字符串的完整部分。您缺少textView变量和tvAppendmethod@cricket_007谢谢你让我知道你不够清楚。我还尝试从字符串数据中删除字符串=您从未初始化textview?是的,我已初始化textview。我只是以前没有在帖子上展示。
    public void onClickTemp(View view) {
        pushcmd("T\n");
    
        serial.read(new UsbSerialInterface.UsbReadCallback() {
            @Override
            public void onReceivedData(byte[] arg0) {
                try {
                    // Here, you are guaranteed some data
                    String data = new String(arg0, "UTF-8");
                    tvAppend(textView, "\n Measured temperature \n" + data);
                } catch (UnsupportedEncodingException e) {
                    e.getStackTrace();
                }
            }
        });
    }