relé na paralelní port
Miroslav Mraz
mraz na seznam.cz
Sobota Září 29 22:52:43 CEST 2012
Marek Peca píše v So 29. 09. 2012 v 22:02 +0200:
> > Jde,
> > otevřít /dev/parport0 a přes ioctl() ovládáte jednotlivé bity.
>
> Ano, to je ta novejsi a spravnejsi cesta. Pro pripad rychle potreby
> uvadim svuj letity prog na ovladani rele, lec jedna se o primy pristup na
> i/o:
Nějak jsem si nevšiml, že to má jít jednoduše. No zase tak složité to
není:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <string.h>
#include <errno.h>
#include <linux/ppdev.h>
// argument jsou desitkova cisla
int main (int argv, char* argc[]) {
unsigned char wbyte;
int i, data_dir = 0;
int fd = open("/dev/parport0", O_RDWR);
if (fd < 0) { // eperm: sudo chmod a+rw /dev/parport0
fprintf(stderr, "Chyba: %s\n", strerror(errno));
return -1;
}
ioctl (fd, PPCLAIM);
ioctl (fd, PPDATADIR, &data_dir);
for (i=0; i<argv; i++) {
wbyte = (unsigned char) atoi (argc[i]);
ioctl (fd, PPWDATA, &wbyte);
// sleep (1);
}
ioctl (fd, PPRELEASE);
close (fd);
return 0;
}
Chyby ioctl() nejsou ošetřeny, bylo by to dlouhé.
Mrazík
Další informace o konferenci Hw-list