#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. Для этого вам следует проверить свои журналы