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
Lass Dir mal die Codes dieser 'fremden Zeichen' ausgeben und vergleiche mit einer ASCII Tabelle. Koennte Carriage-Return und LineFeed sein.
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.
Du könntest Dir die Zeichen im Hex-Code anzeigen lassen, nicht im Asci Modus...
Wie mache ich das am Besten? Ich bin leider in Sachen Basic und der C-Control ein Anfänger.......
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'.
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
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
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
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.