Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

SWCOM HWCOM Problem mit BUFFER Kategorie: Verschiedenes (von Christian S - 21.08.2009 11:54)
Ich nutze:
C-Control II Unit
Hallo,

Ich finde keine Lösung für mein Problem, so versuche es diesmal hier.

Das Problem. C-Control kann nicht richtig unterscheiden ob er Daten im Puffer hat, egal ob hwcom oder swcom.
Ich konnte es nicht so einfach reproduzieren, ich hoffe folgendes Code hilft:

thread testcom
{
    loop
    {
        while(swcom.rxd())
            hwcom.put(swcom.get());
        while(hwcom.rxd())
            swcom.put(hwcom.get());
        yield;
    }
}

mit diesem Code wird eine ganz einfache Weiterleitung erzeugt von swcom zu hwcom.
Es gibt verschiedene Varianten zum gleichem Ergebnis die blockieren oder nicht blockieren, ich habe mehrere
getestet. Ich weiĂ? hier kann eine Seite nichts senden solange die erste nicht fertig ist. Es geht aber nicht darum
sondern um folgendes:

Ein Rechner mit zwei COM-PORTs ist angeschlossen an die C-Control Unit. Sagen wir:
COM1 ist an HWCOM angeschlossen
COM2 an SWCOM.

Ich habe einen Port Monitor am laufen und beobachte COM1 und COM2, Parallel öffne ich
2 Terminals, z.B Hyper Terminal fĂĽr COM1 und fĂĽr COM2.

Ganza am Anfang sieht alles OK. Ich schreibe etwas zum COM1, und es erscheint auf dem Fenster von COM2
wegen der weiterleitung von C-Control mit dem oben angezeigten Code.
Andersrum funktionierts auch. Nach eine Zeit, nachem sehr viele Daten geschickt werden.
Eventuell werden grö�e Blocke geschickt. Hier das Problem.
Unabhängig davon ob die Blöcke viel kleiner sind als dem gesetzten Eingangsbuffer ist, auch wenn ich genug lange
Pausen zwischen Blöcken setze, so dass der Buffer auch wirklich nicht VOLL wird, (Producer, Consumer Beispiel)
Es kommt irgendwann der Punkt wo die Weiterleitung nicht mehr richtig funktioniert. D.h.

Das Problem au�ert sich in einer Verspätung der Daten.

d.h. Ich sende von COM1:  abcdefgh, und sagen wir mal, es gibt eine Verspätung von 4 Zeichen.
dann gerade wenn "h" geschickt wird von COM1, dann erscheint auf COM2 gerade nur "abcd",

schreibe ich weiter auf COM1, z.b. "i", dann erscheint auf COM2 "abcde",
Obwohl das Program weiterläuft, die Daten werden nicht weiter geleitet an COM2, erst wenn noch ein Paar Daten zuerst
ankommen.  Und die Daten sind auch nicht verloren gegangen, die befinden sich auf jeden Fall im Puffer,
denn sobald ich weitere Daten schicke ĂĽber COM1, ich sehe wie die alte Daten noch weitergeleitet werden zu COM2.

Abhängig von der Datenmengen können mit der Zeit mehr verspätete Zeichen sein.

Kann jemand sehen was das Problem sein kann?


    Antwort schreiben


Antworten:

Re: SWCOM HWCOM Problem mit BUFFER (von Christian S - 21.08.2009 12:20)
    Re: SWCOM HWCOM Problem mit BUFFER (von David M. - 2.09.2009 17:23)
        Re: SWCOM HWCOM Problem mit BUFFER (von Christian - 6.01.2010 16:16)
            Re: SWCOM HWCOM Problem mit BUFFER (von Andre Morgenstern - 16.02.2010 16:40)