Как использовать класс Java для управления GPIO для создания приложения, работающего на ОС Android

#java #android #android-activity #gpio

#java #Android #android-активность #gpio

Вопрос:

Я пытаюсь разработать приложение, которое позволило бы проводить тестирование GPIO, например cat /sys/class/gpio/%s/direction , на пользовательской плате с сенсорным дисплеем.

У меня не слишком много опыта в разработке Android, и я не уверен, как я могу реализовать это приложение.

Ответ №1:

Если вы используете класс GPIO, подобный тому, который вы указали, вы хотите создать новый экземпляр для каждого GPIO, который хотите протестировать. Вам не нужно создавать класс direction или что-то подобное — все может быть реализовано в MainActivity.java .

 package com.pckg.gpio;


import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;


public class MainActivity extends AppCompatActivity {

private final String TAG = "GpioTest";
private GPIO gpio27;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    gpio27 = new GPIO(27) // new Instance of gpio 27


final Button Direction = (Button) findViewById(R.id.ButtonDir);
    Direction.setOnClickListener(new View.OnClickListener() {
                                     public void onClick(View view) {
                                        Log.d(TAG, "direction for pin 27:"   gpio27.getInOut();
                                     }
    });
}
  

В этом небольшом примере вы можете увидеть в журналах указания для вывода 27.
Я создал новый экземпляр, используя contractor в классе GPIO.
Вы можете сделать это для нескольких gpio, просто создав новый экземпляр.

Комментарии:

1. Привет, спасибо за помощь. Я добился большого прогресса. Что касается экземпляров, как я могу использовать их для выбора между разными выводами? Или мне нужно редактировать свой код каждый раз, когда я тестирую новый gpio?

2. Если вы хотите протестировать другой GPIO, вы просто создаете другой экземпляр для этого GPIO: ` private GPIO gpioX; … gpioX = new GPIO (X)` где X — количество GPIO, которое вы хотите

3. по какой-то причине setState и setInOut не выполняется, но getState и `getInOut` работает нормально. Я чего-то не хватает?

4. Ну, я не использовал этот класс, и я не уверен, как он работает. У вас могут быть некоторые ограничения из kernel / sepolicy. Для этого вам следует проверить свои журналы