How to use Relay on Ltouch43

In our Ltouch43 Android HMI  there are 4 Relays and all the relays are in exchange contact. They have 24Vdc coil and max 5A contact current. All RELAY outputs are high quality relay and protected by varistors, all connectors are removable.

BMTouchGP12 – Relay R2

BMTouchGP13 – Relay R4

BMTouchGP14 – Relay R1

BMTouchGP15 – Relay R3

Before using them we must in the onCreate method :

instantiate the library BMtouch::

  • tmp = BMTouch.LIBsetup(BMTouch.EN12 + BMTouch.EN13 + BMTouch.EN14 + BMTouch.EN15);

Set PIN (GP–) as output, sets the pin (pin) indicated as output and sets its logical level as value::

    • val[0]= 0;
    • BMTouch.GPIOSetupOut(BMTouch.GP12, val[0]);
    • BMTouch.GPIOSetupOut(BMTouch.GP13, val[0]);
    • BMTouch.GPIOSetupOut(BMTouch.GP14, val[0]);
    • BMTouch.GPIOSetupOut(BMTouch.GP15, val[0]);

To switch the output by activating it or not, use this command::

    • tmp=BMTouch.GPIOWrite(BMTouch.GP13, val[0]);

where val [0] corresponds to:

  • 0 relay OFF
  • 1 relay ON

Salviamo dei dati nella memoria interna Android (variabili ritentive)

Capita alle volte di voler salvare dei dati così da non perdere il loro valore in un secondo momento.
Android dispone di un comando molto semplice per scrivere dei valori in formato testo nella memoria interna del dispositivo, in questo caso all’interno dei nostri pannelli Ltouch e pLtouch e successivamente recuperarli.

Premetto che questa procedura rende i dati che andiamo a salvare privati, ciò vuol dire che solamente la nostra app potrà accedervi e nessun’altra e nel momento in cui la disinstalleremo tutti i dati verranno persi.

Troverete molto utile questo Tutorial

Android dispone delle classi openFileInput e openFileOutput per scambiare dei pacchetti alla memoria interna.

  •  openFileOutput : è il metodo per creare e salvare un file
FileOutputStream fOut = openFileOutput("file name",Context.MODE_PRIVATE);

Il metodo restituisce un’istanza FileOutputStream, così è possibile richiamarla e scrivere i dati sul file:

String str = "test data";
fOut.write(str.getBytes());
fOut.close();
  • openFileInput () : Questo metodo viene utilizzato per aprire un file e leggerlo. Tale restituisce un’istanza di FileInputStream.
FileInputStream fin = openFileInput(file)

Dopodichè chiamamiamo quest’isanza per leggere un carattere alla volta e rappresentarlo:

int c;
String temp="";
while( (c = fin.read()) != -1){
temp = temp + Character.toString((char)c);
}
fin.close();

Vediamo ora un esempio pratico:

Supponiamo che si voglia salvare un dato e renderlo nel gergo tecnico dei plc ” ritentivo “, in poche parole che al riavvio della nostra app il dato non si perda, ma che si possa recuperarlo.
Salviamo il dato alla pressione di un bottone:

@Override
	public void onClick(View v) {
             if (v.getId()==R.id.btnWrite){
                 // add-write text into file
        try {
            FileOutputStream fileout=openFileOutput("BieMmeItalia.txt", MODE_PRIVATE);
            OutputStreamWriter outputWriter=new OutputStreamWriter(fileout);
            outputWriter.write("250");
            outputWriter.close();

            //display file saved message
            Toast.makeText(getBaseContext(), "File saved successfully!",
                    Toast.LENGTH_SHORT).show();

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

All’avvio dell’app andiamo a leggere il valore nel file di testo allocato nella memoria del dispostivo e poi lo rappresentiamo a video tramite una texView:

	@Override
    protected void onCreate(Bundle savedInstanceState) {
			    requestWindowFeature(Window.FEATURE_NO_TITLE);
			super.onCreate(savedInstanceState);
			setContentView(R.layout.activity_main);

			TextView valreadtoMemory = (TextView)findViewById(R.id.editText1);
		try {
	            FileInputStream fileIn=openFileInput("BieMmeItalia.txt");
	            InputStreamReader InputRead= new InputStreamReader(fileIn);

	            char[] inputBuffer= new char[READ_BLOCK_SIZE];
	            String s1="";
	            int charRead;

	            while ((charRead=InputRead.read(inputBuffer))>0) {
	                // char to string conversion
	                String readstring=String.copyValueOf(inputBuffer,0,charRead);
	                s1 +=readstring;
	           }
	            InputRead.close();
	            valreadtoMemory.setText(s1);

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

    }

Per maggior informazioni troverete del materiale anche nel nostro WiKi