Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[C] Czas systemowy, naciśnięcie klawisza.

doctors 09 Jan 2005 20:20 1901 4
  • #1
    doctors
    Level 11  
    mam problem otóż potrzebne mi są dwie funkcje w języku C jedna tofunkcja pobierająca czas z systemu (zegara)a druga to funkcja sprawdzająca, czy jakiś klawisz jest wciśnięty, ale nie przerywająca pracy programu dodatkowo powiem ze chodzi o kompilator Dev.proszę o pomoc i pozdrawiam


    Zamykam. - arnoldziq
  • #2
    bialy
    Level 15  
    czas:
    Code:

    struct tm* teraz;
    time_t czas;
    char* data;
    int dlug;

    time(&czas);
    teraz=localtime(&czas);
    data=asctime(teraz);


    Natomias 2 funkcja to zalezy czy piszesz pod okienkami czy pod konsola . Jak pod okienkami to nie ma wiekszego problemu. Jak konsola to moze byc 2 watek. Tyle mi teraz przychodzi do glowy
  • #3
    krzychoo_soft
    Level 17  
    ten drugi problem to dobrze by było zrobić na przerwaniu i wstawić kod w asemblerze sprawdzający bufor klawiatóry :) tak mi się bynajmniej wydaje :) jak by co to proszę mnie poprawić
  • #4
    Bielsky
    Level 21  
    -> Bialy
    Ku utrapieniu Autora Wątku: pod okienkami też są problemy. Przy jednowątkowym programie w czasie wykonywania procedur (raczej) nie ma dostępu do interfejsu.

    ->Krzychoo
    A i owszem poprawić. W dwóch kwestiach :) mało istotnych dla tematu:
    piszemy klawiatUra
    nie trzeba się uciekać do asemblera. w C też się da.

    (A teraz idę do mądrych ksiąg, żeby sprawdzić, jak zrobić nowy wątek. Wydaje mi się tylko, że w C są z tym problemy. W C++ się da)
  • #5
    ZeeWolf
    Level 28  
    Witam. Moze przyda Ci sie taki kawalek kodu asm:

    in al, [60h]
    mov [klawisz], al
    mov ah, 0Ch
    mov al, 0
    int 21h

    powyzszy kawalek najpierw odczytuje kod wciskanego klawisza (1 bajt) z portu do zmiennej globalnej klawisz 60h, a nastepnie przy pomocy przerwania DOSu czysci bufor klawiatury. UWAGA! Po operacji w zmiennej klawisz znajduje sie SCAN kod, a nie kod ASCII klawisza (dla ulatwienia - Esc ma scancode = 1). Funkcja nie zatrzymuje dzialania programu. Funkcja rozpoznaje dwa stany klawisza: wcisniety i puszczony (scancode + 128) (cos jakby KeyDown i KeyUp). Pozdrawiam.

    Dodano po 4 [minuty]:

    poprawka: powinno byc z portu 60h do zmiennej globalnej klawisz. Sorki!