Hallo Leute,
ich scheitere daran einen mehrzeiligen String über den COM-Port auf Arduino zu transferieren.
Generell funktioniert es (mit sehr kurzen Strings). Aber wenn der String länger ist, dann fehlen immer irgendwelche Zeilen daraus.
Hier mein Code (aktuell):
Hier der Arduino-Code:
Habt Ihr eine Idee, woran es liegen könnte?
Wenn ich nur
ich scheitere daran einen mehrzeiligen String über den COM-Port auf Arduino zu transferieren.
Generell funktioniert es (mit sehr kurzen Strings). Aber wenn der String länger ist, dann fehlen immer irgendwelche Zeilen daraus.
Hier mein Code (aktuell):
VB.NET-Quellcode
-
- Dim SendeString As String = "#BEGIN#" + vbCrLf + ConfigContent + vbCrLf + "#END#" 'ConfigContent enhält einen mehrzeiligen String aus einer mehrzeiligen Textdatei
- If SerialPort1.IsOpen Then SerialPort1.Close()
- SerialPort1.PortName = "COM19"
- SerialPort1.BaudRate = 9600
- SerialPort1.DataBits = 8
- SerialPort1.Parity = Parity.None
- SerialPort1.StopBits = StopBits.One
- SerialPort1.Handshake = Handshake.None
- SerialPort1.Encoding = System.Text.Encoding.Default
- SerialPort1.ReadTimeout = 10000
- SerialPort1.WriteBufferSize = 100000
- Try
- SerialPort1.Open()
- Catch
- MsgBox("Serialport " + SerialPort1.PortName + " not available or blocked by an other application.") 'jetzt nur mal für Debuggen
- Exit Sub
- End Try
- Dim Zeilen() As String = SendeString.Split(Chr(10))
- For i As Integer = 0 To Zeilen.Count - 1
- If Trim(Zeilen(i)) <> "" Then
- SerialPort1.WriteLine(Zeilen(i))
- End If
- Next i
- SerialPort1.Close()
Hier der Arduino-Code:
VB.NET-Quellcode
-
- int ByteReceived = 0;
- String EmpfangsString = "";
- EmpfangsString = ""; //String leeren
- while (Serial.available() > 0) {
- ByteReceived = 0;
- ByteReceived = Serial.read();
- EmpfangsString = EmpfangsString + (char)ByteReceived;
- }
- if (EmpfangsString != "") {
- // hier wird der String dann weiterbearbeitet und gespeichert - aber hier fehlen meist viele übermittelte Zeilen - meist in der Mitte des Strings.
- }
Habt Ihr eine Idee, woran es liegen könnte?
Wenn ich nur
SerialPort1.Write(SendeString)
verwende (also alles auf einmal sende), dann kommt am Arduino nicht alles an. Liebe Grüße
Roland Berghöfer
Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
Roland Berghöfer
Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at