Главная
FreeBSD и запись в lpt
Рейтинг пользователей: / 0
ХудшийЛучший 
blogs - boba
Автор: BoBa   
25.04.2010 18:32

Решил дать вторую жизнь своему NM4413. Да вот проблема - гугл отказывается давать ссылку на готовое решение записи в порт. поскребя по сети родилось следующее:

#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <dev/ppbus/ppi.h>
#include <dev/ppbus/ppbconf.h> 

static int ppi_fd;

static void do_init(void){
    char port[] = "/dev/ppi0";
    ppi_fd = open(port, O_RDWR);
    if( ppi_fd < 0 ) {
        perror(port);
        exit(1);
    }
}

static void do_out(unsigned long outval){
    int val = outval, n;
    n = ioctl(ppi_fd, PPISDATA, &val);
    if( n < 0 ) {
        perror("ioctl PPISDATA");
        exit(1);
    }
}

static unsigned long do_in(void){
    int val, n;
    n = ioctl(ppi_fd, PPIGSTATUS, &val);
    if( n < 0 ) {
        perror("ioctl PPIGSTATUS");
        exit(1);
    }
    return val;
}

int main(int argc,char* argv[]){
    do_init();
    unsigned long val;
    if(argc<2){
        unsigned long val = do_in();
        fprintf(stdout,"0x%x",val);
        return(val);
    };
    if(sscanf(argv[1],"0x%x",&val)){
        do_out(val);
        return 0;
    };
    fprintf(stderr,"usage: %s 0xhexvalue\n",argv[0]);
    return(1);

кто говорил что в гугле есть все? 

 

LAST_UPDATED2