[ wiktor91 @ 27.10.2008. 22:33 ] @
E ovako, pripremam se za pisanje složenijeg C programa pa sad ponavljam C jer u C-u nisam dugo radio i evo zapeo sam zbog vrlo vjerovatno neke sitnice.

Radi se o kontroli paralelnog porta(LPT1) uz pomoč parapin.h biblioteke.
Evo sourcea

Code:
#include <stdio.h>
#include <stdlib.h>
#include <parapin.h>

int main()
{
    if(pin_init_user(LPT1) < 0)
    {
        printf("Obavi operaciju kao root\n");
    exit(0);
    } else {
        printf("Uspješna konekcija\n");
    }
    
    pin_output_mode(LP_DATA_PINS);

    set_pin(LP_PIN03 | LP_PIN04);
    wait(50);
    clear_pin(LP_PIN03 | LP_PIN04);
}


Problem je sljedeči. Kada pokrenem program na LEDicama se ništa ne događa kao da ih nisam ni upalio. Ako komentiram zadnju liniju(// clear_pin) LEDice se normalno upale, ako poslije toga maknem komentar sa clear_pin te ponovo pokrenem program LEDice se samo ugase. Pokušavam napraviti program koj če upaliti LEDice, pričekati neko vrijeme te ih ugasiti i ako ponovo pokrenem program da mi se opet upale i ugase.

Neznam dal je stvar u tome što radim na Linuxu tj. sa gcc kompajlerom ili u kodu. Ali u kodu nebi smio biti problem jer je sve točno napisano. Ali kada napišem neki drugi program sa wait funkcijom koj nema veze sa pinovima i LEDicama također ko da ga nema nego se program odmah izvrši. Da li se možda radi o postavci kompajlera ili nečem drugom?

Molim vas pomognite mi pa da mogu dalje nastaviti sa ponavljanjem zaboravljenog gradiva :D
[ Goran Rakić @ 27.10.2008. 23:38 ] @
Hm, ti koristiš:

Code:

$ man 2 wait
NAME
       wait, waitpid, waitid - wait for process to change state

SYNOPSIS
       #include <sys/types.h>
       #include <sys/wait.h>
       pid_t wait(int *status);


... dok tebi treba:

Code:

$ man 3 sleep
NAME
       sleep - Sleep for the specified number of seconds

SYNOPSIS
       #include <unistd.h>
       unsigned int sleep(unsigned int seconds);
[ wiktor91 @ 28.10.2008. 08:41 ] @
Jao... znao sam da je glupost! Evo to mi je kad nisam taknul C godinu dana.

Evo isprobao sam i radi odlično. E sad se ne sječam još jedne stvari, znam da sam koristio jednu funkciju za čekanje u ms a ne u sec. Koja je to funkcija?
[ Goran Rakić @ 28.10.2008. 08:53 ] @
Ako ukucaš komandu apropos sleep microseconds dobijaš izlaz:

Code:

$ apropos sleep microseconds
apmsleep (1)         - go into suspend or standby mode and wake-up later
nanosleep (2)        - pause execution for a specified time
rtcwake (8)          - enter a system sleep state until specified wakeup time
sleep (1)            - delay for a specified amount of time
sleep (3)            - Sleep for the specified number of seconds
usleep (3)           - suspend execution for microsecond intervals
ualarm (3)           - schedule signal after given number of microseconds



Odatle lako vidiš da su nanosleep i usleep ono što tebi vrši posao. Sledi komanda man 2 nanosleep:

Code:

$ man 2 nanosleep
NAME
       nanosleep - pause execution for a specified time

SYNOPSIS
       #include <time.h>
       int nanosleep(const struct timespec *req, struct timespec *rem);

[ wiktor91 @ 28.10.2008. 09:31 ] @
Ovo radi sa mikrosekundama ali mene zanimaju milisekunde(ms) ako postoji takva funkcija jer se točno sječam da sam koristio baš takvu funkciju u ms.

Danas mi prijatelj vrača knjigu za C pa ču vjerovatno nači unutra što me zanima.

Inače samo komentar na parapin.h bibilioteku, moje mišljenje je da je genijalna ima svakakve mogučnosti a opet je vrlo jednostavna za koristiti. Makar sam imao problema sa instalacijom jer sam tek nedavno počeo ozbiljnje s Linuxom ali uz pomoč googla i dokumentacije sam i taj dio odradio i puno toga naučio. To me posebno kod Linuxa veseli, za sve što radiš trebaš se malo potruditi i naučiti nešto novo i kad to nakraju uspješno odradiš osječaš se baš dobro i želiš saznati još novih stvari. A da ne govorim kako je Linux community puuuno susretljiviji i profesionalniji od Windows communitiya! Na Ubuntu forumu odgovor dobijem maksimalno za 2 sata a dok sam na nekim Windows forumima za sličan problem čekao po par dana da bi dobio neiskoristiv savjet.
[ Goran Rakić @ 28.10.2008. 12:11 ] @
Sad ću ja morati da demantujem ljubznost GNU/Linux zajednice, nanosleep je ono što ti treba, pa pročitaj vraga mu man stranicu...