Hallo liebe Forengemeinde,
aus meinem Titel kann man schon erkennen, dass ich ein Problem mit der
Seriellen Datenübertragung zwischen Arduino und PC habe.
Ich habe mit Visual Studio 2015 einen kleinen Code geschrieben, der die
am Computer angeschlossenen Geräte erkennt, ich dann in einer ComboBox
meinen Arduino auswähle, in einer anderen Box die Baudrate einstelle und
schlussendlich Daten an den Arduno sende.
So weit funktioniert das ganze auch mal, denn der Arduino zeigt mit der
RX LED an, dass er etwas erhalten hat. Laut Arduino-Code, sollte der
dann etwas zurückschreiben, tut er aber nicht. Komisch ist aber der
umstand, dass der Arduino auf den eigenen Serial Monitor reagiert und
Daten zurücksendet.
Ich würde mich freuen, über etwaige Lösungsvorschläge
Danke im Voraus
MP
Hier der VB Code:
1
Imports System
2
Imports System.Threading
3
Imports System.IO.Ports
4
Imports System.ComponentModel
5
Public Class Form1
6
7
Dim myPort As Array
8
Delegate Sub SetTextCallBack(ByVal [text] As String)
9
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
10
11
12
write.Enabled = False
13
close.Enabled = False
14
15
End Sub
16
17
Private Sub init_Click(sender As Object, e As EventArgs) Handles init.Click
18
19
If portlist.Text = "" Then
20
Exit Sub
21
ElseIf baudlist.text = "" Then
22
Exit Sub
23
End If
24
25
SerialPort1.PortName = portlist.Text
26
SerialPort1.BaudRate = baudlist.Text
27
SerialPort1.ReadTimeout = 10000
28
SerialPort1.Open()
29
30
write.Enabled = True
31
close.Enabled = True
32
init.Enabled = False
33
34
End Sub
35
36
Private Sub write_Click(sender As Object, e As EventArgs) Handles write.Click
37
38
SerialPort1.Write(input.Text)
39
40
41
End Sub
42
43
Private Sub close_Click(sender As Object, e As EventArgs) Handles close.Click
44
45
SerialPort1.Close()
46
47
write.Enabled = False
48
close.Enabled = False
49
init.Enabled = True
50
51
End Sub
52
53
Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Hallo Danny,
vielen Dank für den Tipp, aber ich denke es liegt nicht am erkennen des
Zeischens, sondern viel eher daran, dass der Arduino, so blöd wie es
auch klingt, nicht auf das vb script antworten will.
Ich habe nämlich den Arduino-Code ein klein wenig geändert, und jetzt
sollte er jede sec. schreiben, dass er das Eingangszeichen nicht
erhalten hat, oder im falle des erhaltens des Zeichens dies bestätigt.
Im Serial Monitor der Arduino IDE funktioniert alles bestens, aber
sobald ich das mit dem vb Script versuche, erhält der Arduino zwar
Daten, schreibt aber nicht zurück (TX LED blinkt nicht).
Kann es vl. sein, dass meinem Atmega 32U4 für die Seriell auf USB
umsetzung ein Firmwareupdate benötigt?
Danke,
MP
Arduino-Code:
1
char inChar;
2
3
4
void setup() {
5
// put your setup code here, to run once:
6
Serial.begin(9600); //beginn der Seriellen Komunikation
7
while (!Serial){} //Warten auf öffnen des SerialPorts
8
9
}
10
11
void loop() {
12
13
if (Serial.available() > 0) //wenn Daten vorhanden sind...
Ich würde mal mit einem Terminal Programm prüfen ob am µC alles läuft
und erst dann das VB Programm testen. So hast Du nich zwei Unbekannte wo
Fehler sein können.
Was passiert wenn mehr als ein Zeichen vom µC empfangen wird, welches
steht dann in inChar? Möglicherweise hängt dein VB Programm noch nen CR
dran.
Halo Tek,
danke für den Tipp, habs gleich mit HTerm ausprobiert, aber der Arduino
sendet immer noch nichts an andere Programme als die eigene IDE...
Danke,
MP
Hallo an alle,
ich habe in der Zwischenzeit die Lösung herausgefunden.
Der Arduinotreiber der instaliert werden muss, um den Arduino mit der
eigenen IDE zu programmieren ist nicht kompatibel mit vb.
Ich hab jetzt einfach einen USB zu Serial communication Board genommen
und hat mit meinen Programmen super funktioniert.
Ich konnte leider keinen win Treiber für den Arduino Installieren,
brauche aber zur zeit keine bessere Lösung.
Danke,
MP
Bist Du sicher, dass Du in das richtige Ende der Röhre schaust?
Viele Arduinos haben zwar etwas, das sich serielle Schnittstelle nennt
aber kein RS232 Anschluss ist. Auf der PC-Seite wird praktisch nie so
eine Pseudoschnittstelle zu finden sein, sondern eine "echte" (alt),
oder eine USB-Seriell-Krücke. Ist ein Pegelproblem.