Gast
#755364
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:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
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 in "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 Olaf