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

TEIL2: capture/release hängt sich weg!!!!!! Kategorie: Programmierung (von Klaus - 30.10.2001 23:47)
Als Antwort auf capture/release hängt sich weg!!!!!! von Klaus - 30.10.2001 23:40

Sorry, war noch nicht fertig, unten geht es weiter!!!!
> Hi,
>
> folgende Situation: ich nutze eine externe Porterweiterung auf Schieberegister Basis. Dazu habe ich Funktionen geschrieben, die Ports einlesen usw. Da ich meine CC2 für unterschiedliche Dinge nutzen werde, dachte ich unterschiedliche Module und threads zu verwenden. Damit diese die gleichen Ein- und Augaberoutinen für die externe Schaltung nutzen können, ohnen durcheinander arbeiten zu können, wollte ich meine Routinen entsprechend mit captuire und release versehen. Dabei habe ich folgendes Problem:
>
> 1.: Wenn ich in einer Funktion zum debuggen über ein Terminal verwende wie:
>
> function print (string s,int ret) {
>    capture;
>    hwcom.send(s, str.length(s));
>    if ret>0 hwcom.put(10);
>    if ret>0 hwcom.put(13);
>    sleep 50;
>    release;}
>
> bleibt die CC2 hängen, d.h. das Programm wird nicht weiter ausgeführt.

LIEGT DAS GGF DARAN, DASS DIE HWCOM ROUTINEN AUCH CAPTURE VERWENDEN ???
Dazu fehlt mir irgendwie die logische Erklärung.

2.: Wenn ich dann zur Steuerung der Schaltung die folgenden zwei Routinen einsetze:

function SetExtPort(byte Modul, byte Port, byte Value){
   capture;
   if Modul<16 {
      ShiftDataByte (16*Modul+Port+Value*8);
      ports.set(Shift_WD,0);
      ports.set(Shift_WD,1);}
   else {ports.set(Port,Value);}
   release;}
 
function init() {
   byte Modul,Port;
   capture;
   // Ports der Unit initialisieren
   ports.set(Shift_Clock,0);
   ports.set(Shift_WD,1);
   // alle Ausgänge ausschalten
   for Modul=0 ... 5 {
     for Port=0 ... 7 {
     SetExtPort(Modul,Port,0);}}
   release;}

bleibt das Programm ebenfalls stehen. Nur wenn ich in beiden Routinen die capture und release Anweisungen entferne läuft alles reibungslos. Das ist natürlich nicht in meinem Sinne, denn dann schlie�e ich einen Zugriff aus unterschiedlichen thread ja nicht mehr aus. Gem. Handbuch soll man ja für Funktionen auch diese Form der Befehle verwenden. Die Funktionen aus ports sind mit inline definiert und haben zumindest keine erkennbaren caputre oder release Befehle.
HAT EINER EINE BEGRÃ?NDUNG UND GGF EINEN TIP FÃ?R MICH?

Danke für jede Hilfe!!!!!
Klaus




    Antwort schreiben


Antworten: