[ RHAPSODY @ 18.03.2005. 15:48 ] @
Ptreban mi je program za kontrolu parallel porta.
Pod linuxom naravno.
i po mogucstvu da je pisan u C-u.

PS.nalazio sam neke al nerade!!
Hvala!
[ Alef @ 18.03.2005. 18:15 ] @
Code:

/*
 * example.c: very simple example of port I/O
 *
 * This code does nothing useful, just a port write, a pause,
 * and a port read. Compile with `gcc -O2 -o example example.c',
 * and run as root with `./example'.
 */

#include <stdio.h>
#include <unistd.h>
#include <asm/io.h>

#define BASEPORT 0x378 /* lp1 */

int main() {
    /* Get access to the ports */
    if (ioperm(BASEPORT, 3, 1)) {
        perror("ioperm");
        exit(1);
    }
    
    /* Set the data signals (D0-7) of the port to all low (0) */
    outb(0, BASEPORT);
    
    /* Sleep for a while (100 ms) */
    usleep(100000);
    
    /* Read from the status port (BASE+1) and display the result */
    
    printf("status: %d\n", inb(BASEPORT + 1));
    
    /* We don't need the ports anymore */
    if (ioperm(BASEPORT, 3, 0)) {
        perror("ioperm");
        exit(1);
    }
    
    return 0;
}
/* end of example.c */


Naravno, moraš imati pravo pristupa paralelnom portu.

Pogledaj Linux I/O port programming mini-HOWTO.
[ RHAPSODY @ 18.03.2005. 19:57 ] @
http://www.tldp.org/HOWTO/IO-Port-Programming-9.html
al meni treba neki potpuniji software.
[ Alef @ 18.03.2005. 20:52 ] @
Šta misliš pod tim potpuniji softver? Reci šta konkretno želiš da uradiš.
[ RHAPSODY @ 18.03.2005. 21:16 ] @
onkretno:da dam signal pinu npr 5 da dobije napon ili pinu 10 da izgubi!
[ RHAPSODY @ 18.03.2005. 21:47 ] @
znaci program tipa :
http://milan.milanovic.org/skola/parport/robot.exe
samo za linux!
[ Dejan Lozanovic @ 18.03.2005. 21:48 ] @
losa je praksa koristiti ioperm, iz vise razloga

1. kod nije portabilan na ostale POSIX sisteme
2. zaobilazite drajver i njegovu politiku pristupa hardveru
3. program zahteva u setuid pa je samim tim opasnost ukoliko ima u sebi neko prelivanje memorije opasnije po bezbednost sistema.

Ono sto savetujem jeste da se koristi open/read/write/lseek/close sistemski pozivi i ioctl po potrebi za sav pristup hardveru.

U konkretnom slucaju napravi bitmasku i salji na file deskriptor na kojem si otvorio paralelni port.

I kada pricamo o losoj praksi samo da jos napomenem da je lose otvarati hardverske uredjaje po imenu jer se od distribucije do distribucije to razlikuje, primera radi neko ima devfs neko ne na racunaru. Ono po cemu prepoznajes device jeste po major i minor broju. konkretno paralelni portovi imaju major 99 a parport0 ima minor 0 parport1 ima minor 1 itd...

Major i minor mozete videti sistemskim pozivom stat (man 2 stat).
[ RHAPSODY @ 19.03.2005. 07:48 ] @
Dejane hvala na iscrpnoj poruci.
Sad ako ti nije problem daj neki tut o sistemskim pozivima open/read/write/lseek/close.
Pozdrav.
[ Dejan Lozanovic @ 19.03.2005. 20:11 ] @
Citat:
RHAPSODY: Dejane hvala na iscrpnoj poruci.
Sad ako ti nije problem daj neki tut o sistemskim pozivima open/read/write/lseek/close.
Pozdrav.


pa to su osnovni sistemski pozivi za rad sa fajlovima, nema tu neke velike mudrolije

pogledaj odgovarajuce man stranice,
man 2 open
man 2 read
man 2 write
man 2 lseek
man 2 close

[ RHAPSODY @ 19.03.2005. 22:19 ] @
Moze neko da napravi neki primer sa tim komandama?
Nemora da je nesto iscrpno samo mali primer!
Hvala!