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

stports.init() hängt Kategorie: Programmierung (von DWS - 5.01.2004 0:38)


Hallo André!

Ich vermute, dass dieses Problem bei dir am besten aufgehoben ist, deswegen wende ich mich gleich
an dich.

Ich habe die neuen Versionen der diversen Module, die du für das OS V3 vorbereitet hast, herunter
geladen und installiert. Ich habe das main-Makro im DL-Tool laufen lassen, damit die beiden Hex-
Dateien geladen werden. Mein Programm ist erfolgreich neu übersetzt und übertragen worden. Somit
denke ich, dass alles Erforderliche getan seinmüsste, um deine Updates wirksam werden zu lassen.
Die erste Anweisung des main-Threads ist ein stports.init(). Von dort kommt die Kontrolle nicht mehr
an den Thread zurück.

Habe ich etwas übersehen, oder bin ich auf einen Bug gesto�en?

Falls es etwas hilft, hier der Source (die zwei Pfeifer am Anfang dienen nur Debug-Zwecken, um zu
sehen, wie weit ich komme):

----------------------------------------------------------------------------------------------------------
main.c2:

thread main {

    byte key;

    plm.beep(plm.TONE_A);
    sleep 200;
    plm.beep(plm.TONE_OFF);
    sleep 200;
    plm.beep(plm.TONE_A);
    sleep 200;
    plm.beep(plm.TONE_OFF);
    sleep 200;
    stports.init();  // <-- hier geht's los (aber nicht mehr weiter...)
    plm.beep(plm.TONE_A);
    sleep 200;
    plm.beep(plm.TONE_OFF);
    lcdext.init();
    lcdext.clear();

    plm.beep(plm.TONE_A);
    sleep 100;
    plm.beep(plm.TONE_OFF);
    if (!pcfad.init(0,-1,0b00)) {
        lcdext.line(1);
        lcdext.print("Fehler Init ADM0");
        lcdext.line(2);
        lcdext.print("ENTER drücken");
        key=stkeyb.get();
        while key!=stkeyb.ENTER {
            if key!=255 {
                plm.beep(plm.TONE_A);
                sleep 500;
                plm.beep(plm.TONE_OFF);
                }
            key=stkeyb.get();
            }
        plm.beep(plm.TONE_A);
        sleep 20;
        plm.beep(plm.TONE_OFF);
        }

    globals.display_mode=1;

    plm.beep(plm.TONE_A);
    sleep 50;
    plm.beep(plm.TONE_OFF);
    keyboard.enter_date_time();

    plm.beep(plm.TONE_A);
    sleep 50;
    plm.beep(plm.TONE_OFF);
    run display.display;

    plm.beep(plm.TONE_A);
    sleep 50;
    plm.beep(plm.TONE_OFF);
    run keyboard.keyboard;

    plm.beep(plm.TONE_A);
    sleep 50;
    plm.beep(plm.TONE_OFF);
    run measurements.measurements;

    halt;
     
    }

--------------------------------------------------------------------------------------------------------------
globals.c2:

byte display_mode;

const measure_points=8;
byte measure_point;
float temperature[measure_points];
float humidity[measure_points];

--------------------------------------------------------------------------------------------------------------
keyboard.c2:

function enter_date_time() {

    int day, month, year, hour, minute, second;
    byte key;
   
    lcdext.clear();
    lcdext.line(2);
    lcdext.print("Fertig: ENTER");
   
    do {
        lcdext.line(1);
        lcdext.delline(1);
        lcdext.print("Jahr: ");
        plm.beep(plm.TONE_A);
        sleep 200;
        plm.beep(plm.TONE_OFF);
        year=stkeyb.input(4, -9999, 60000);
        } while year<2000 or year>2020;

    do {
        lcdext.line(1);
        lcdext.delline(1);
        lcdext.print("Monat: ");
        plm.beep(plm.TONE_A);
        sleep 200;
        plm.beep(plm.TONE_OFF);
        month=stkeyb.input(2, -9999, 60000);
        } while month<1 or month>12;

    do {
        lcdext.line(1);
        lcdext.delline(1);
        lcdext.print("Tag: ");
        plm.beep(plm.TONE_A);
        sleep 200;
        plm.beep(plm.TONE_OFF);
        day=stkeyb.input(2, -9999, 60000);
        } while day<1 or
            (month==1 or month==3 or month==5 or month==7 or month==8 or month==10 or month==12) and day>31 or
            (month==4 or month==6 or month==9 or month==11) and day > 30 or
            month==2 and (year%4==0 and day>29 or day>28);

    do {
        lcdext.line(1);
        lcdext.delline(1);
        lcdext.print("Stunden: ");
        plm.beep(plm.TONE_A);
        sleep 200;
        plm.beep(plm.TONE_OFF);
        hour=stkeyb.input(2, -9999, 60000);
        } while month<1 and month>12;

    do {
        lcdext.line(1);
        lcdext.delline(1);
        lcdext.print("Minuten: ");
        plm.beep(plm.TONE_A);
        sleep 200;
        plm.beep(plm.TONE_OFF);
        minute=stkeyb.input(2, -9999, 60000);
        } while month<1 and month>12;

    do {
        lcdext.line(1);
        lcdext.delline(1);
        lcdext.print("Sekunden: ");
        plm.beep(plm.TONE_A);
        sleep 200;
        plm.beep(plm.TONE_OFF);
        second=stkeyb.input(2, -9999, 60000);
        } while month<1 and month>12;

    do {
        lcdext.clear();
        lcdext.line(1);
        lcdext.print("ENTER für Start");
        plm.beep(plm.TONE_A);
        sleep 200;
        plm.beep(plm.TONE_OFF);
        key=stkeyb.get();
        while key==255
            key=stkeyb.get();
        } while key!=stkeyb.ENTER;
       
        system.settime(hour,minute,second);
        system.setdate(year,month,day);

}

thread keyboard {

    byte key;

    key=stkeyb.get();
    if key!=255 {
        plm.beep(plm.TONE_A);
        sleep 20;
        plm.beep(plm.TONE_OFF);
        }
     
    if key==0 {
        globals.display_mode=key;
    }
    else if key==1 {
        globals.display_mode=key;
    }
    else if key==2 {
        globals.display_mode=key;
    }
    else if key==3 {
        globals.display_mode=key;
    }
    else if key==4 {
        globals.display_mode=key;
    }
    else if key==5 {
        globals.display_mode=key;
    }
    else if key==6 {
        globals.display_mode=key;
    }
    else if key==7 {
        globals.display_mode=key;
    }
    else if key==8 {
        globals.display_mode=key;
    }
    else if key==9 {
        globals.display_mode=key;
    }
    else if key==stkeyb.F1 {
        enter_date_time();
    }
    else if key==stkeyb.F2 {
        lcdext.clear();
        lcdext.line(1);
        lcdext.print("Messpunkt: ");
        globals.measure_point=stkeyb.input(3, 1, 60000);
        if globals.measure_point>=1 and globals.measure_point<=globals.measure_points
            globals.measure_point=globals.measure_point-1;
        else
            globals.measure_point=0;
    }
    else if key==stkeyb.F3 {
    }
    else if key==stkeyb.CLEAR {
    }
    else if key==stkeyb.ENTER {
    }

}

---------------------------------------------------------------------------------------------------------------------
display.c2:

byte old_display_mode;

thread display {

    if globals.display_mode!=old_display_mode {
        lcdext.clear();
        old_display_mode=globals.display_mode;
        }

    if globals.display_mode==1 { // Datum und Zeit
        lcdext.line(1);
        lcdext.date(1);
        lcdext.line(2);
        lcdext.time(1);
        lcdext.fill(' ', 3);
        lcdext.zahl5(system.dcferr());
        sleep 1000;
        }
    else if globals.display_mode==2 { // Temperatur und Feuchte
        lcdext.line(1);
        lcdext.print("Temp.: ");
        lcdext.zahl4n1(globals.temperature[globals.measure_point]);
        lcdext.print("°C");
        lcdext.line(2);
        lcdext.print("Feuchte: ");
        lcdext.zahl4n1(globals.humidity[globals.measure_point]);
        lcdext.print("%");
        }

}

------------------------------------------------------------------------------------------------------------------------
measurements.c2:

thread measurements {

    globals.temperature[0]=20.0;
    globals.humidity[0]=60.0;

}

--------------------------------------------------------------------------------------------------------------------------

Vielen Dank im Voraus für deine Hilfe!

Beste Grü�e,
Dietmar.


    Antwort schreiben


Antworten:

Re: stports.init() hängt (von Tom - 5.01.2004 8:30)
    Re: stports.init() hängt (von DWS - 5.01.2004 22:22)
        Re: stports.init() hängt (von André H. - 6.01.2004 23:57)