2017-08-28 1 views
-1

J'ai déjà reçu des données d'affichage reçues du microprocesseur via bluetooth. Il m'envoie une trame de 8 bits avec l'état réel de tension et de température chaque seconde.Données d'affichage dynamique TextView

Le problème est que TextView n'affiche pas les données réelles. Lorsque l'application est chargée, les données sont affichées et restent inchangées. Une méthode pour actualiser les données consiste à recharger l'application.

J'ai reçu un gestionnaire et ConnectedThread quel code j'attache.

Tout le meilleur de Pologne.

bluetoothIn = new Handler() { 
     public void handleMessage(android.os.Message msg) { 
      if (msg.what == handlerState) { 
       String readMessage = (String) msg.obj; 
       sb.append(readMessage); 
       int endOfLineIndex = sb.indexOf(";\r\n"); 

       if (endOfLineIndex > 0) { 
        String dataInPrint = sb.substring(0, endOfLineIndex); 
        strDlugosc.setText(dataInPrint); 
        int dataLenght = dataInPrint.length(); 
        strLenght.setText("ilość otrzymanych znakow =" + String.valueOf(dataLenght)); 

        if (sb.charAt(0) == '9') { 

         String statusb = sb.substring(8,9); 
         String temperatura = sb.substring(21, 27); 
         String napiecie = sb.substring(12, 18); 

         status.setText("Status :" + statusb); 
         temp_1.setText("TEMPERATURA = " + temperatura + " *C"); 
         nap_1.setText("NAPIECIE = " + napiecie + " V"); 


        } 
       } 
      } 


    private class ConnectedThread extends Thread { 
    private final InputStream mmInStream; 


    //creation of the connect thread 
    public ConnectedThread(BluetoothSocket socket) { 
     InputStream tmpIn = null; 

     try { 
      //Create I/O streams for connection 
      tmpIn = socket.getInputStream(); 
     } catch (IOException e) { } 

     mmInStream = tmpIn; 
    } 


    public void run() { 
     byte[] buffer = new byte[1024]; 
     int bytes; 

     // Keep looping to listen for received messages 
     while (!ConnectedThread.interrupted()) { 
      try { 
       bytes = mmInStream.read(buffer);   //read bytes from input buffer 
       String readMessage = new String(buffer, 0, bytes); 
       // Send the obtained bytes to the UI Activity via handler 
       bluetoothIn.obtainMessage(handlerState, bytes, -1, readMessage).sendToTarget(); 

      } catch (IOException e) { 

       break; 
      } 
     } 
    } 

Répondre

0

Je l'ai fait avant. J'ai utilisé une minuterie pour obtenir des données du socket BlueTooth toutes les 1 seconde

Timer t = new Timer(); 
t.scheduleAtFixedRate(new TimerTask() { 

    @Override 
    public void run() { 
    // get data from socket and set to text view here 
    } 

}, 0, 10000 /** milliseconds **/);