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

Re: Probleme mit capture... release Kategorie: Programmierung (von André H. - 30.04.2003 12:05)
Als Antwort auf Probleme mit capture... release von rüdi - 28.04.2003 21:58

Hallo Rüdi,

Das Capture funzt einwandfrei. Jedoch muÃ? man bei bereits gecaptureten
Funktionen, wie das z.B. bei hwcom der Fall ist, aufpassen.

Wird von mehreren Threads jeweils eine Ausgabe gemacht, gibt's kein Problem.
z.B. beiden senden einen String. (unterschiedliche Variablen !!)
Wenn aber die Threads mehrere Ausgaben machen, z.B. mit put(), send() und/oder print(),
ist nicht die gesamte Ausgabe gecaptured, sondern nur die einzelne Funktion.
D.h. zwischen den Aufrufen kann der nächste Thread Laufzeit bekommen.
Eine Lösung wäre hier ein verschachteltes Capture (siehe Modul cap.c2).
Auch muÃ? beachtet werden, daÃ? das Senden im Hintergrund geschieht.

string s;
...
s="Irgentetwas";
hwcom.print(s);
s="etwas anderes";
hwcom.print(s);


Dies hier führt z.B. zu Fehlern, da die Ausgabe des Strings s noch nicht
komplett gesendet wurde, als in s ein neuer String geschrieben wird.
Hier muÃ? entweder auf hwcom.ready() gewartet oder abwechselnd eine
zweite String-Variable benutzt werden.(Das selbe gilt auch für Arrays)

Jedoch würde ich generell die serielle Kommunikation nur über einen einzigen
Thread laufen lassen. Ich kann mir sonst nicht vorstellen, daÃ? diese
sonst einwadfrei funzt und der Empfänger (z.B. PC) die Daten im richtigen Format
bekommt.
In meinen Projekten gibt es dafür immer einen eigenen Thread, der z.B. nur
die Komunikation über hwcom übernimmt.

MfG André H.


> Hallo Leute,
>
> alles im grünen Bereich in der Entwicklergemeinde?!
> Das hoff ich doch und Ihr könnt mir vielleicht weiterhelfen:-)
>
> Ich und mein Projektteam sind uns nicht ganz sicher, ob die Semaphor - Implementation:
> capture...
> release;
> richtig funktioniert. Bei dem Versuch 2 Threads parallel laufen zu lassen, die jeweils beide
> über hwcom.c2 Funtionen Ausgaben über die RS232 Schnittstelle Ausgaben auf dem
> Hyperterminal des angeschlossenen Rechners erzeugen, ist folgender Fehler aufgetreten:
>
> Die Ausgabe ist korrupiert, d.h., das nict alle Zeichen auf dem Hyperterminal ankommen.
> Wir haben 2 Theorien:
>    1.Die capture-release Anweisung funktioniert nicht richtig und schützt die kritischen Bereiche
>       nicht vollständig.
>    2.Die Hardware Register der RS232 Schnittstelle werden von den Threads gegenseitig
>       überschrieben, bevor der angeschl. Rechner die Register komplett abfragen kann.
>
> Wäre super, wenn einer von Euch weiss, was da vor sich geht. Wenn Punkt 2 der Fall sein sollte,
> ist das vielleicht bei allen externen Einheiten so?
>
> Mit freundlichem GruÃ?
> rüdi***
>


Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: Probleme mit capture... release (von rüdi und kone - 2.05.2003 21:42)