Forum: PC-Programmierung SerialPort VB.2005 mit C-Control


von Christoph (Gast)


Lesenswert?

Hallo Zusammen!

Ich bin habe hier einen C-Controler von Conrad Elektronik. Mit dem
Controler sende ich mit Print “12345“ an die RS232 Schnittstelle. Nun
habe ich mit VB.2005 ein kleines Testprogramm erstellt, mit dem ich
Daten von der RS232 Schnittstelle empfangen kann. Dazu habe ich die
SerialPort Klasse benutzt, das funktioniert auch soweit. Nur werden
hinter meiner Zahlenfolge immer zwei fremde Zeichen dargestellt. Könnte
mir bitte jemand erklären, wie ich da am Besten vorgehe?

Gruß
Christoph

von Karl H. (kbuchegg)


Lesenswert?

Lass Dir mal die Codes dieser 'fremden Zeichen' ausgeben
und vergleiche mit einer ASCII Tabelle.
Koennte Carriage-Return und LineFeed sein.

von Christoph (Gast)


Lesenswert?

Ich kann leider das Zeichen in keiner Tabelle finden, hmm?? Es sieht aus
wie eine eckige Null die dazu noch ziemlich schlank ist, und kopieren
kann man es auch nicht.

von Werner A. (Gast)


Lesenswert?

Du könntest Dir die Zeichen im Hex-Code anzeigen lassen, nicht im Asci
Modus...

von Christoph (Gast)


Lesenswert?

Wie mache ich das am Besten? Ich bin leider in Sachen Basic und der
C-Control ein Anfänger.......

von Karl H. (kbuchegg)


Lesenswert?

Du musst auch kein Experte in Sachen C Control sein.
Nur in VB.2005 solltest Du Dich schon auskennen.
In VB.2005 empfaengst Du einen String. Von diesem
String brauchst Du das letzte bzw. vorletzte Zeichen.
Von diesem Zeichen wiederum interessiert die Codenummer.
Einfach mal das Zeichen in seinem Zahlenwert anzeigen
lassen.
Frueher (mein Basic ist schon lange her) gabs dafuer die
Funktion asc() um von einem String den ANSI-Code zu bekommen:

   Code = asc( "A" )

Code enthaelt dann den Wert 65, eben die Codenummer des Zeichens 'A'.

von raoul (Gast)


Lesenswert?

hi,

beschäftige mich auch gerade mit vb 2005 express und probiere mit der
seriellen rum. wie kann ich denn einer textbox sagen, dass sie auch auf
so sachen wie linefeed befehle achten soll, die von der schnittstelle
kommen?

mfg

von Christoph (Gast)


Lesenswert?

Hallo :-)

Das war genau mein Problem, aber ich habe es jetzt gelöst. Hier meine
provisorische lösung, die muss aber noch optimiert werden:

Public Class Form1
    Dim Wert As String

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load

        SerialPort1.Open()

    End Sub

    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal
e As System.IO.Ports.SerialDataReceivedEventArgs) Handles
SerialPort1.DataReceived

        Wert = SerialPort1.ReadLine()
        Wert = Wert.Replace(Chr(13), Nothing) 'Hier wird das Problem
beseitigt:-)

    End Sub

    Private Sub Test(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click

        TextBox1.Text = Wert

    End Sub
End Class


Gruß
Christoph

von raoul (Gast)


Lesenswert?

hi christoph,
kannst du mir dein programm/vb projekt bitte mal schicken? in meinen
ansatz lässt sich din code leider nicht integrieren. diesen ansatz habe
ich von einer anderen internetseit, bin aber nicht zufrieden damit, weil
ich den code nicht (ganz) verstehe.
wäre sehr nett von dir! danke

mfg raoul

von Christoph (Gast)


Lesenswert?

ist auf dem Weg zu dir:-)

Gruß
Christoph

von M.F. (Gast)


Lesenswert?

Das C-Control hängt an jeden Print-Behehl einen Zeilenumbruch (Chr 10 + 
Chr 13) an, wenn die Ausgabezeile nicht ein Semikolon abschließt!

Also: entweder Semikolon im C-Basic anhängen oder Chr 10 + Chr 13 (oder 
generell alle nicht druckbaren Zeichen < Chr 30) herausfiltern.

von juppi (Gast)


Lesenswert?

Hallo

habe vor einigen monaten mit VB.2005 gearbeitet.
C-Controler da ich noch einige rumliegen hatte.(RS232)
modelleisenbahn

C-Controll=>PC   Datenübertragung 8Bit mit "put"  +"get"

encodierung mache ichn im Pc
PC=> C-Control   mit 7 bit übertragung
eine 8bit Datenausgabe vom Pc wollte nicht klappen.
das demomodell mußte schnell fertig werden
deshalb ,encodiere ich 8Byt mit 7bit information (hat seinen grund,geht 
auch, nur bischen langsamer)
Würde vom Pc in VB.2005 aber lieber 8 datenbits pro byte ausgeben
und auf die schnelle das C-controler programm ändern.

danke

von elektrönchen (Gast)


Lesenswert?

Hallo,
dazu musst du SerialPort.Encoding ändern, also z.B. auf
SerialPort.Encoding= System.Text.Encoding.GetEncoding(28591), hauptsache 
was "höherwertiges" als ASCII.

Gruß elektrönchen

von juppi (Gast)


Lesenswert?

hallo elektrönchen (Gast

hattest du die frage gleich verstanden?
In einen anderen tread gab es ellenlange verständnisprobleme.
danke für  die antwort
habe es aber schon längere zeit gelöst.

MfG

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.