German UsbSerial und Astreams - serielle Verbindung Arduino

Licht2002

Member
Licensed User
Longtime User
Hallo zusammen,

versuche es mal hier im Forum...

Ich habe eine Problem und finde keine Lösung dieses zu lösen bzw. zu verbessern.

An meinem Android-Tablet hängt ein Arduino Uno der mir Funksteckdosen schaltet und Temperatursensoren abfragt.....

20395438dw.jpg


Somit habe ich mir eine USB-Verbindung zwischen dem Arduino und Android rausgesucht....

der nachfolgende Code-Ausschnitt funktioniert auch...

ABER: es kommen meist nur 2 oder 3 Zeichen - danach wird die "Sub Astreams_NewData.. " neu aufgerufen und der Buffer geleert und neu ausgegeben....

B4X:
...
Dim usb As UsbSerial

...
    If usb.Open(9600) Then
        astreams.Initialize(usb.GetInputStream, usb.GetOutputStream, "astreams")
        Main.USB_Feedback = ("USB verbunden")
    Else
        Log("Error opening USB port")
        Main.USB_Feedback = ("Error: " & LastException)
       
    End If



Sub Astreams_NewData (Buffer() As Byte)
    Dim Buf As String
    Buf = (BytesToString(Buffer, 0, Buffer.Length, "UTF8"))
    Log("Buffer Eingang:" & Buf)
End Sub

Die Log-Datei sind dann etwa so aus:

Buffer Eingang: TE
Buffer Eingang: MP_
Buffer Eingang: WZ2
Buffer Eingang: 4C

Gesendet habe ich am Arduino: TEMP_WZ24C

Hab ich da einen Denkfehler drin oder liegt das am den Geschwindigkeiten (Arduino sendet auch mit 9600)...

Vielen Dank!

VG Thomas
 

KMatle

Expert
Licensed User
Longtime User
Scheint wohl normal zu sein: https://www.b4x.com/android/forum/threads/bluetooth-astreams-problem.28047/#content

Die Daten kommen "Stückweise". In dem Thread wird das beschrieben und auch, wie man damit umgeht ("Prefix-Mode")

Selber könntest Du auch den Text mit einem Ende-Kennzichen markieren (z.B. "TEMP_WZ24C#"). Sprich: Wenn "#" ankommt, dann ist alles da. In der Sub die Nachricht in einem String zusammenbauen mit Mess=Mess&Buf, solange bis das "#" kommt. Hier dann eine Bool-Variable nutzen (z.B. "MessComplete = true).
 
Top