mikrocontroller.net

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


Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Werner A. (Gast)
Datum:

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

Autor: Christoph (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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'.

Autor: raoul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: raoul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist auf dem Weg zu dir:-)

Gruß
Christoph

Autor: M.F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: juppi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: elektrönchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: juppi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.