Hallo, brauche mal wieder einen Tipp und zwar:
habe ich eine GUI in Visual Basic geschrieben, die über den USB anschluss Daten an den Arduino sendet und diese in die SD-Karte speichert. Außerdem wird über den button receive die SD-Karte ausgelesen und an die GUI gesendet. Das funkitonier auch alles soweit nur mit einem schönheitsfehler.
Diese Parameter, die gesendet werden(3 parameter werden auf einnmal gesendet) sollen zeilenweise in die csv.Datei gespeichert werden.
zb: 2;3;2
2;3;0
doch manchmal werden sie folgendermaßen in die Datei eingetragen: 2;3;3;2;3;0
er macht es aber nicht immer, jetzt weiß ich nicht woran es liegt, kann mir jemand eventuell helfen?
anbei noch meinen code dazu:
Sorry für die formatierung, aber mit den code-tags hat das nicht geklappt bzw. die formatierung ist nicht ok
habe ich eine GUI in Visual Basic geschrieben, die über den USB anschluss Daten an den Arduino sendet und diese in die SD-Karte speichert. Außerdem wird über den button receive die SD-Karte ausgelesen und an die GUI gesendet. Das funkitonier auch alles soweit nur mit einem schönheitsfehler.
Diese Parameter, die gesendet werden(3 parameter werden auf einnmal gesendet) sollen zeilenweise in die csv.Datei gespeichert werden.
zb: 2;3;2
2;3;0
doch manchmal werden sie folgendermaßen in die Datei eingetragen: 2;3;3;2;3;0
er macht es aber nicht immer, jetzt weiß ich nicht woran es liegt, kann mir jemand eventuell helfen?
anbei noch meinen code dazu:
Sorry für die formatierung, aber mit den code-tags hat das nicht geklappt bzw. die formatierung ist nicht ok
VB.NET-Quellcode
- Dim inputdata As String
- 'Dim kontrol_receive As Integer = 1 'kontrolvariable für Empfangen von Arduino
- Dim kontrol_receive As String = "$"
- Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_i2c_receive.Click
- RichTextBox1.ForeColor = Color.Black
- '/------Kontrollvariale an Arduino =1 , somit weiß er das er an GUI senden soll---/
- If Not SerialPort_i2c.IsOpen = True Then
- SerialPort_i2c.Open()
- End If
- SerialPort_i2c.Write("$") 'kontrollvariable
- End Sub
- Private Sub DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort_i2c.DataReceived
- 'das was an buffer ist wird an variable drangehängt und somit nicht ueberschrieben
- inputdata = inputdata & SerialPort_i2c.ReadExisting
- 'HIer wird die funktion aufgerufen, weil damit gibt eskeine verzögerung,
- 'd.h. da wird alles was im EMpfangsbuffer anliegt ausgelesen und ausgegeben. -> brauche im Event vom Button klick nicht definieren
- 'da arduino nur sendet wenn er Dollarzeichen erhält, also -> receive, da kommt erst eventhandler datarecieved zum arbeiten
- Me.Invoke(Sub()
- RichTextBox1.Text = inputdata
- End Sub)
- End Sub
- Dim kontrol_sende As String = "&" 'kontrolvariable für Senden an Arduino
- Private Sub btn_i2c_send_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_i2c_send.Click
- 'Mit try wird versucht Übertragung an Arduino durchzuführen'
- Try
- 'öffne Serielle Anschlussverbindung, sofern nicht bereits geöffnet'
- If Not SerialPort_i2c.IsOpen Then SerialPort_i2c.Open()
- 'SerialPort_i2c.Write("&") 'sende kontrollvariable
- 'falls Verbindung zum Device besteht, doch es wird auf sendbutton gedrückt und leere Texbox, meldung + verbindung schliessen
- 'Falls Enable-box aktiviert, dann sende kontrollvariable, damit pin am arduino auf high gesetzt wird
- If CheckBox_EN.Checked = True Then
- SerialPort_i2c.Write("&")
- End If
- SerialPort_i2c.Write(Numeric_addr_i2c.Value & ";") '; damit in csv datei in spalten
- SerialPort_i2c.Write(Numeric_reg_i2c.Value & ";")
- If CheckBox_i2c.Checked = True Then
- SerialPort_i2c.Write(Numeric_data_i2c.Value) 'durch vbr = Enter, d.h. wenn ein ganzer String wird ein enter gesendet und arduino weiß ok gsnzer String
- End If
- SerialPort_i2c.Write(vbCr)
- MsgBox("Transfer successful")
- If SerialPort_i2c.IsOpen = True Then
- SerialPort_i2c.Close()
- End If
- 'Falls Übertragung fehlschlägt, Catch block um fehler auszubügeln und eigene message von vb'
- Catch ex As Exception
- MsgBox("Transfer failed - Please check the connection" & vbCrLf & ex.Message)
- End Try
- 'Nach Übertragung Port wieder freistellen'
- 'If SerialPort_i2c.IsOpen = True Then
- 'SerialPort_i2c.Close()
- 'End If
- End Sub
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „milito“ ()