Hallo zusammen
Ich habe hier einen ATmega88, der über ein
FT232-Modul (19200Baud) mit meinem PC unter
Win10 kommuniziert.
Es werden Zahlen und binäre Daten in beide Richtungen
geschickt. Die Verbindung PC-> MC klappt ohne
Probleme. Die andere Richtung klappt aber nicht.
Es sollen zwei 12Bit-Werte von AD-Wandlungen und
ein binäres Signal übertragen werden. Ich nutze einen
ASCII-String, in dem die Zahlen als ASCII-Zeichen
übertragen werden. Die Analogwerte übertrage ich
zwei mal pro Sekunde. Den Binärwert nur wenn er
sich ändert.
Die Zahlen kommen an und werden richtig angezeigt.
#### ABER ####
Wenn die Übertragung läuft, verzögern sich die
Anzeige der Werte immer mehr.
Es ist so, als wenn der
PC die Daten in einem internen Buffer verwahrt und sie
nach und nach abarbeitet. Die Verzögerungen liegen im
mehrstelligen Sekundenbereich.
Hier der Programmteil im C#-Programm der die Daten
empfängt
1 | private void spoUSB_DataReceived(object sender,
|
2 | SerialDataReceivedEventArgs e)
|
3 | {
|
4 | int Wert;
|
5 | double Wert_inV;
|
6 | string EBuffer = spoUSB.ReadLine();
|
7 |
|
8 | //Aus den Zeichen 1...4 Den Wert wieder nach int wandeln
|
9 | Wert = Convert.ToInt16(EBuffer.Substring(1, 4));
|
10 | Wert_inV = (double)Wert * 0.00489;
|
11 |
|
12 | switch ((char)EBuffer[0])
|
13 | {
|
14 | case 'T': //es ist der Steuercode der Taste
|
15 | {
|
16 | if (Wert == 0) lblIndiTaster.Visible = false;
|
17 | if (Wert > 0) lblIndiTaster.Visible = true;
|
18 | }
|
19 | break;
|
20 | case '1': //es ist der Steuercode vom Analogeingang 1
|
21 | txtAusgabe1.Text = String.Format("{0:F2}V", Wert_inV);
|
22 | break;
|
23 | case '2': //es ist der Steuercode vom Analogeingang 2
|
24 | txtAusgabe2.Text = String.Format("{0:F2}V", Wert_inV);
|
25 | break;
|
26 | }
|
27 | }
|
Im Anhang die Einstellung des COM-Ports.
Hat einer eine Idee, wie ich die Verzögerung
aus der Anzeige bekomme?