SerialPort VB.2005 mit C-Control

Gast #296376
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
#296381
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'.
Gast #296382
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
Gast #296383
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
Gast #296384
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
Gast #758534
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.
Gast #758744
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
Gast #818510
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
Gast #818630
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren