1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
#include <jni.h>
#include <stdio.h>
#include <parportlin_ParallelPortLin.h>
#include <linux/ioctl.h>
#include <linux/parport.h>
#include <linux/ppdev.h>
#include <fcntl.h>
int fd;
jint status = 0;
const char *nomfich;
jstring ppdf;
JNIEXPORT jint JNICALL Java_parportlin_ParallelPortLin_readOneByte
(JNIEnv *env, jclass laclass)
{
printf("lecture du fd=%d = %s\n", fd, nomfich);
int ioct = ioctl(fd, PPRSTATUS, &status);
if(ioct != 0){
printf("Erreur lors de la récupération du status du port parallèle.\nioctl renvoie '%d'", ioct);
status = 0;
}
return status;
}
JNIEXPORT jint JNICALL Java_parportlin_ParallelPortLin_initNative
(JNIEnv *env, jclass laclass, jstring ppdevfile)
{
ppdf = ppdevfile;
nomfich = (*env)->GetStringUTFChars(env, ppdf, 0);
printf("Initialisation de ParallelPortLin avec le fichier : %s\n", nomfich);
fd = open (nomfich, O_RDONLY);
if (fd == -1) {
perror ("Erreur lors de l'ouverture du fichier ppdev");
}
ioctl(fd , PPCLAIM);
printf("File descriptor de %s = %d\n", nomfich, fd);
}
JNIEXPORT jint JNICALL Java_parportlin_ParallelPortLin_releaseNative
(JNIEnv *env, jclass laclass)
{
(*env)->ReleaseStringUTFChars(env, ppdf, nomfich);
ioctl(fd, PPRELEASE);
close (fd);
} |
Partager