Libreria Android IO per BieMme Pltouch

In uno dei nostri articoli precedenti, abbiamo presentato il Pltouch, un touch screen HMI basato su Android con uno speciale set di I/O direttamente indirizzabili dal codice Java. 

In questo articolo, vi vogliamo presentare quali sono i principi di funzionamento della libreria Pltouch, libreria fornita gratuitamente con ogni Pltouch. Questa libreria Android si pone come ponte tra il mondo Android e quello più a basso livello dell’I/O.

Entrando più in dettaglio, dopo aver importato la libreria nel workspace di Eclipse ci sono due modalità con cui il codice del progetto principale può essere strutturato. In entrambi i casi, bisogna:

  • Creare un’istanza della libreria I/O
  • Memorizzare questo riferimento per esempio in un campo privato/pubblico dell’activity Android
  • Inizializzazare la libreria fornendo i parametri necessari

Ora prendiamo in rassegna ogni singolo punto e lo analizziamo attraverso dei semplici esempi.

Creare un’istanza della libreria Pltouch e memorizzare il riferimento in un attributo di classe.

Supponiamo il vostro progetto contenga la seguente activity Android: MainActivity. Per creare un’istanza della libreria I/O Pltouch non dovrete far altro che creare un’istanza dell’oggetto PltouchManager e memorizzare un riferimento in un attributo pubblico (meglio se privato) della classe, per esempio:

public class MainActivity extends Activity {

  private PltouchManager pManager;

  @Override
  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    pManager = new PltouchManager();
  }
}

La libreria è fatta in modo tale da aggiornare automaticamente fino a quattro TextView quando il valore degli ingressi analogici cambia. In questo scenario, quando create l’oggetto PltouchManager dovete passare il riferimento dell’activity:

public class MainActivity extends Activity {

  private PltouchManager pManager;

  @Override
  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    pManager = new PltouchManager(this);

  }
}

Chiamare il metodo di inizializzazione della libreria Pltouch.

Non appena la classe PltouchManager è stata istanziata, è necessario chimare un metodo di inizializzazione in modo da far partire i processi in background di gestione della libreria. Il metodo initialize() ha due overload: il primo può essere usato senza nessun parametro (situazione di default).

@Override
protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  pManager = new PltouchManager();
  pManager.initialize();

}

Viceversa, il secondo overload consente di passare come parametri le TextView (al massimo quattro) nel caso in cui vogliate che queste vengano aggiornate automaticamente quando gli ingressi analogici cambiano. Qui sotto un esempio con due TextView che conterranno i valori del primo e secondo ingresso analogico:

public class MainActivity extends Activity{

  private PltouchManager pManager;
  private TextView analog1;
  private TextView analog2;

  @Override
  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    analog1 = (TextView)findViewById(R.id.txtAnalog1);
    analog2 = (TextView)findViewById(R.id.txtAnalog2);

    pManager = new PltouchManager(this);
    pManager.initialize(analog1, analog2);

 }
}

Questi sono gli unici step necessari per il setup della libreria I/O per il Pltouch. A questo punto siete liberi di utilizzare nel vostro codice i quattro metodi chiave per accedere all’I/O, in particolare:

  • digitalRead
  • digitalWrite
  • analogRead
  • analogWrite

Vediamo ora un esempio. Supponiamo di voler aggiungere durante la creazione dell’activity Android, un semplice controllo di sicurezza secondo il quale se un ingresso digitale è alto la corrispondente uscita digitale viene impostata a basso, per esempio:

@Override

protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  analog1 = (TextView)findViewById(R.id.txtAnalog1);
  analog2 = (TextView)findViewById(R.id.txtAnalog2);

  pManager = new PltouchManager(this);
  pManager.setDebug(false);

  pManager.initialize(analog1, analog2);

  for (int i=1; i < 5; ++i){

    try {

      if (pManager.digitalRead(i) == DigitalValues.HIGH){
        pManager.digitalWrite(i, DigitalValues.LOW);
      }

    } catch (IndexOutOfBounds e) {

      Log.d(“Pltouch”, “Index not allowed”);
    }

  }
}

La parte di codice più importante è rappresentata dal ciclo for in cui viene attuata la logica di sicurezza descritta sopra. Si può notare inoltre l’utilizzo del methodo setDebug. Questo permette, specificando un valore booleano come parametro, di attivare o disattivare il log interno della libreria. Ogni entry avrà pltouch come tag.