vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
RS232 auslesen mit ReadExisting 
Autor: VB-RS232
Datum: 18.01.08 12:40

Hallo,

ich möchte zum Testen den Inhalt einer TextBox per serieller Schnittstelle an eine andere TextBox senden. Da ich auch Zeilenumbrüche senden will, verwende ich nicht "SerialPort1.WriteLine" und "SerialPort1.ReadLine", sondern "SerialPort1.Write" und "SerialPort1.ReadExisting".

Jetzt verbinde ich die Leitungen "TxD" und "RxD" und starte das Programm mit folgendem Code:

Public in_put As String
 
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
  System.EventArgs) Handles Button1.Click
 
    'SerialPort1 ist schon geöffnet und parametriert
 
    SerialPort1.Write(TextBox1.Text)
 
End Sub
 
'***********  Anfang: Thread zum auslesen der RS232 und schreiben in TextBox2   
' *******************
 
Private Delegate Sub Data()
Private Empfang As New Data(AddressOf Empf)
 
Private Sub SerialPort1_DataReceived(ByVal sender As Object, _
    ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) _
    Handles SerialPort1.DataReceived
 
    in_put = SerialPort1.ReadExisting
    Me.Invoke(Empfang)
 
End Sub
 
Private Sub Empf()
    TextBox2.Text = in_put
End Sub
 
'***********  Ende: Thread zum auslesen der RS232 und schreiben in TextBox2   
' *******************
Alles funktioniert prima , wenn die Baudrate über 4800 bit/s ist.
Wenn die Baudrate darunter liegt, wird "SerialPort1_DataReceived" mehrmals durchlaufen und es werden nur Bruchstücke in "in_put " gelesen (meist 8 bis 12 Zeichen) .
Diese Bruchstücke werden dann ich "TextBox2.Text" geschrieben und sofort wieder mit dem nächsten Bruchstück überschrieben.
Wenn ich "SerialPort1.WriteLine" und "SerialPort1.ReadLine" verwende, kann ich doch auch mehr als 12 Zeichen auf einmal lesen und das bei einer Baudrate von 300 bit/s.
Woran liegt das? Wo doch alles bei höheren Baudraten mit "SerialPort1.ReadExisting" funktioniert.
Ich habe schon mit "SerialPort1.WriteTimeout", "SerialPort1.ReadTimeout", Buffer-Größe und Timer 'rumprobiert, ohne Erfolg.
Was muß ich ändern, damit "SerialPort1.ReadExisting" alle Zeichen auf einmal in die Variable "in_put" schreibt und "SerialPort1.ReadExisting" auch mit niedrigen Baudraten funktioniert ?

Vielen Dank im voraus

Grüße

VB-RS232
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
RS232 auslesen mit ReadExisting5.504VB-RS23218.01.08 12:40
Re: RS232 auslesen mit ReadExisting2.290GPM18.01.08 17:49
Re: RS232 auslesen mit ReadExisting2.091VB-RS23218.01.08 22:39

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel