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