Stap 9: Het toevoegen van code aan UI elementen
Ik heb bijgevoegd bestand van de volledige java Serial_monitor.java eerst downloaden en vergelijken met deze kleine code segmenten.
Eerst hebben we maken alle onze UI elementen en bibliotheek variabelen
Button btOpen, btClose, btWrite; EditText etWrite; TextView tvRead; Spinner spBaud; CheckBox cbAutoscroll; Physicaloid mPhysicaloid; // initialising library
vervolgens in de onCreate methode kunnen we deze variabelen die hebben we initialiseren
btOpen = (Button) findViewById(R.id.btOpen); btClose = (Button) findViewById(R.id.btClose); btWrite = (Button) findViewById(R.id.btWrite); etWrite = (EditText) findViewById(R.id.etWrite); tvRead = (TextView) findViewById(R.id.tvRead); spBaud = (Spinner) findViewById(R.id.spBaud); cbAutoscroll = (CheckBox)findViewById(R.id.autoscroll); mPhysicaloid = new Physicaloid(this); // setting the context for library
nu op het scherm we vereist UI elementen weergeven kunnen, ik ben het aanroepen van een methode om dit te doen
Dat methode argument Boolean-waarde die weer app aangeeft is aangesloten op de Arduino of niet
setEnabledUi(false); niet verbonden met Arduino dus valse
//setEnabledUi method to set UI elements on screen private void setEnabledUi(boolean on) { if(on) { // if connected to device btOpen.setEnabled(false); //hide open button (already opened) spBaud.setEnabled(false); //hide baudrate selector cbAutoscroll.setEnabled(false); // hide autoscroll btClose.setEnabled(true); // display close button btWrite.setEnabled(true); // display send button etWrite.setEnabled(true); // display edittext field } else { // if not connected to device btOpen.setEnabled(true); //display open button spBaud.setEnabled(true); //display baudrate selector cbAutoscroll.setEnabled(true); //display autoscroll btClose.setEnabled(false); // hide close button (already closed) btWrite.setEnabled(false); // hide send button etWrite.setEnabled(false); // hide edittext field } }
Nu we alles weergegeven zo nodig, kunnen nu we acties toevoegen aan onze knoppen.
listenermethode voor open knop: In deze methode die wij baudrate dekken, autoscroll optie en verbinding maken met het apparaat.
public void onClickOpen(View v) { // setting the baudrate based on spinner String baudtext = spBaud.getSelectedItem().toString(); // get the text from spinner //switch statement to check for baud rate switch (baudtext) { case "300 baud": mPhysicaloid.setBaudrate(300); break; case "1200 baud": mPhysicaloid.setBaudrate(1200); break; case "2400 baud": mPhysicaloid.setBaudrate(2400); break; case "4800 baud": mPhysicaloid.setBaudrate(4800); break; case "9600 baud": mPhysicaloid.setBaudrate(9600); break; case "19200 baud": mPhysicaloid.setBaudrate(19200); break; case "38400 baud": mPhysicaloid.setBaudrate(38400); break; case "576600 baud": mPhysicaloid.setBaudrate(576600); break; case "744880 baud": mPhysicaloid.setBaudrate(744880); break; case "115200 baud": mPhysicaloid.setBaudrate(115200); break; case "230400 baud": mPhysicaloid.setBaudrate(230400); break; case "250000 baud": mPhysicaloid.setBaudrate(250000); break; default: // default is 9600 mPhysicaloid.setBaudrate(9600); } if(mPhysicaloid.open()) { // tries to connect to device and if device was connected setEnabledUi(true); if(cbAutoscroll.isChecked()) { // if auto scroll was selected tvRead.setMovementMethod(new ScrollingMovementMethod()); } // read listener, When new data is received from Arduino add it to Text view mPhysicaloid.addReadListener(new ReadLisener() { public void onRead(int size) { byte[] buf = new byte[size]; mPhysicaloid.read(buf, size); tvAppend(tvRead, Html.fromHtml("<font color=blue>" + new String(buf) + "</fon t>")); // add data to text viiew } }); } else { //Error while connecting Toast.makeText(this, "Cannot open", Toast.LENGTH_LONG).show(); } }
tvAppend methode ontvangen gegevens wilt schrijven naar Textview
Handler mHandler = new Handler(); private void tvAppend(TextView tv, CharSequence text) { final TextView ftv = tv; final CharSequence ftext = text; mHandler.post(new Runnable() { public void run() { ftv.append(ftext); // add text to Text view } }); }
Luisteraar voor close button
public void onClickClose(View v) { //when close button is pressed if(mPhysicaloid.close()) { //close the connection to arduino mPhysicaloid.clearReadListener(); //clear read listener setEnabledUi(false); // set UI accordingly } }
Listeener voor knop verzenden
public void onClickWrite(View v) { // when send button is prressed String str = etWrite.getText().toString()+"\r\n"; //get text from EditText if(str.length()>0) { byte[] buf = str.getBytes(); //convert string to byte array mPhysicaloid.write(buf, buf.length); //write data to arduino } }
Dat is alles wat alles is voltooid gewoon sluit uw telefoon en uitvoeren van het programma het moet installeren en openen.