Forum: PC-Programmierung VB-Com Kommunikation


von seppel (Gast)


Lesenswert?

Hallo,
ich möchte mir ein VB.Net Programm schreiben wo ich über die Serielle 
Schnittstelle mit einem uC kommunizieren kann. Wenn ich das RealTerm 
nehme funktioniert das schon, ich kann Daten senden und komme sie auch 
wider zurück, nur in VB funktioniert das noch nicht so.
Habe mir eine Windows Forms anwendung erstellt, wo ich den Com-Port 
einstellen kann und habe 4 Text Felder wo ich Zahlen eintragen kann. Die 
Übertragung soll gestartet werden wenn ich auf einen Button drücke.
Des weiteren habe ich ein TextBox wo ich mir das empfangen wider 
anzeigen lassen kann.
Die Übertragung soll in Ascii erfolgen.

Hier mal mein Programm
1
Private Sub btn_uebertragen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_uebertragen.Click
2
        box_uber.Text = txt_Rot.Text & "," & txt_Rot_Gelb.Text & "," & txt_min_Gruen.Text & "," & txt_Gelb.Text
3
4
        Dim sString As String = box_uber.Text 'String zusammensetzten
5
        Dim nLen As Integer = sString.Length  'Laenge ermitteln
6
7
        Dim msg As String = ""
8
9
        For a As Integer = 1 To nLen
10
            msg = msg & Asc(sString.Chars(a - 1))
11
        Next
12
        box_uber_2.Text = msg
13
        SerialPort1.Write(msg)
14
        SerialPort1.Write("\n")
15
    End Sub
16
17
    Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
18
        Dim x As String
19
        x = SerialPort1.ReadLine.ToString
20
        box_empfagne.Text = x
21
    End Sub

Damit meine gegenseite weiß das keine Daten mehr kommen, beende ich die 
Kommunikation mit einem "\n".
Wenn ich Daten über VB sende mit \n funktioniert das nicht da wartet der 
uC immer noch auf Daten.
Der Datenaufbau zur übertragung soll z.B. so  12,3,5,22 aussehen und 
dann das \n  noch hinten dran.
Wenn ich das alles so ins RealTerm eingebe funktioniert das.

von Peter II (Gast)


Lesenswert?

seppel schrieb:
> Wenn ich das alles so ins RealTerm eingebe funktioniert das.

kann es sein das RealTerm  \r\n sendet?

von seppel (Gast)


Lesenswert?

Peter II schrieb:
> seppel schrieb:
>> Wenn ich das alles so ins RealTerm eingebe funktioniert das.
>
> kann es sein das RealTerm  \r\n sendet?

Habe das mal Testweise ausprobiert.
Ich frage in meinem uC auch nur nach dem endzeichen "\n" ab.

Wenn ich das so schreibe
SerialPort1.Write(CStr(Asc("\n")))
sende ich doch mein "\n" als Ascii zeichen über den SerielPort oder?

von seppel (Gast)


Lesenswert?

Noch ein kurze Frage.
Sendent RealTerm die Ascii zahlen mit Trennkomma oder ohne.
als z.B. 123 als 49,50,51 oder als 495051?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

seppel schrieb:
> Wenn ich das so schreibe
> SerialPort1.Write(CStr(Asc("\n")))
> sende ich doch mein "\n" als Ascii zeichen über den SerielPort oder?

Ja, aber das sind zwei Zeichen.

Tatsächlich willst du aber das Steuerzeichen versenden; die Schreibweise 
\n ist eine in C-artigen Programmiersprachen übliche.

In VB dürfte das die Konstante vbLF sein.

von seppel (Gast)


Lesenswert?

Da hätte ich ja auch drauf kommen können, ist blöd wenn man mehrere 
Sprachen benutzt.
Manchmal sieht man vor lauter Bäumen den Wald nicht mehr.

Danke es geht

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.