German Serielle Daten per BT einlesen und Anzeigen

Discussion in 'German Forum' started by charly_01, Feb 15, 2015.

  1. charly_01

    charly_01 New Member

    Hallo,

    ich möchte gerne Daten die per Bluetooth (BT) von einem Arduino kommen auf dem Tablet/Smartphone darstellen. Es werden immer 9 Daten nacheinander gesendet wobei zwei Strings jeweils den Start und das Ende markieren. Es bleiben also 7 Nutzdaten.

    Die Daten werden wie folgt als String gesendet und mit einen CRLF je Zeile abgeschlossen:

    START (hier beginnen die Daten)
    45 (Darstellung in Label1)
    0.8 (Darstellung in Label2)
    79 (Darstellung in Label3)
    23 (Darstellung in Label4)
    15 (Darstellung in Label5)
    4 (Darstellung in Label6)
    0.05 (Darstellung in Label7)
    ENDE (Daten fertig übertragen)

    Ich habe es mit dem SerialExample versucht aber komme mit der Auswertung nicht weiter. BT Verbindung bekomme ich schon hin, nur das Verteilen der Einzeldaten in die Labels macht mir Schwierigkeiten. Die Frage ist also wie kann ich alle Daten zwischen START und ENDE in einem Array speichern. Die Daten werden alle 5 sec. neu vom Arduino gesendet und ändern natürlich Ihren Inhalt und somit sollen sich dann auch alle 5 sce. die Labels aktualisieren bzw. wenn neue Daten im Puffer vorliegen sollen sie abgerufen und dann angezeigt werden.

    Ich bedanke mich schon mal für eure Hilfe.

    LG Charly
     
  2. eurojam

    eurojam Well-Known Member Licensed User

    Hallo Charly,
    das sollte eigentlich nicht all zu viele Schwierigkeiten bereiten. Ich gehe mal davon aus, dass Du den String in der App lesen kannst als String. Dann wandelst Du ihn erst Mal in eine Liste um, das geht mit der stringfunctions Lib, wobei der CRLF als Delimiter dient:
    Code:
    Dim l As List
    Dim sf As StringFunctions
    sf.Initialize
    l = sf.Split(mystring,(
    Chr(13)& Chr(10)))
    Log(l.Size)
    Die 7 Labels würde ich in einer map halten und immer bei neuen Daten nur Texteigenschaft der 7 Labels ändern.

    Viele Grüße
    stefan
     
  3. Harmlos

    Harmlos Member Licensed User

    ich hätte auch gedacht als Liste aber die umwandlung von eurojam kannte ich noch nicht *Daumen hoch*

    ich bin grad an was ähnlichem dran. Wenn du (wie auch empfohlen) mit asyncstream arbeitest solltest du keine Probleme haben. Wird dann direkt bei eingehenden Daten ein Event aufgerufen, in dem du dann deine Labels aktualisieren kannst, dann könntest du dir die Zwischenspeicherung in einem Array sparen wenn du die Daten nicht anderweitig brauchst. Kannst se dann direkt vor Ort "zerflücken"
    Ansonsten musst du dein Problem nochmal etwas genaure beschreiben

    P.S. bei mir sieht das zum bespiel so aus, ich kriege 20 mal pro sec aktuelle Werte von 2 Arduinoeingängen z.B. ?A1023 <- Eingang A = 1023:
    Code:
    Sub asyncstream_NewText(Text As String)
    If Text = "" Then
        
    'verhindert fehler bei leeren text
       
    Else If Text.Contains("?A"Then 'Regler A
        Text = Text.SubString(2'die ersten analyse Zeichen entfernen
        Empfangsdaten = Text
        Empfang_A 
    'Rergler A Aufrufen
        Senden_A  'Sub zum Stellgröße senden aufrufen
       
    Else If Text.Contains("?B"Then 'Regler B
        Text = Text.SubString(2'die ersten analyse Zeichen entfernen   
        Empfangsdaten = Text
        Empfang_B 
    'Regler B Aufrufen
        Senden_B  'Sub zum Stellgröße senden aufrufen
       
    Else
        
    ToastMessageShow("Empfangsdaten fehlerhaft"False'fehler -> Text nicht zuordenbar
    End If

    End Sub
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice