Portál AbcLinuxu, 10. května 2025 06:20

Dotaz: Rozběhání 8LED přes LPT v Linuxu

17.12.2005 11:19 mirekh2o | skóre: 13 | blog: MyBlog
Rozběhání 8LED přes LPT v Linuxu
Přečteno: 308×
Odpovědět | Admin
Nazdar všichni,
mam problém, potřeboval bych poradit jak rozchodit 8LEDek zapojených přes LPT, aby blikali či svítili podle mně. Ve Widlích mit to fachá pod mym programem, který sem si naprogramoval v Delphi, takže tam to de bez problému.

PS: mam to zapojeny v LPT1

Pokud si chcete taky udělat 8LEDek do LPT zabrouzdejte sem.

Diky H2o
ICQ: 240-460-464; Jabber: mirekh2o@jabber.cz
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.12.2005 11:46 bubo. | skóre: 20 | blog: Buboo | Bratislava
Rozbalit Rozbalit vše Re: Rozběhání 8LED přes LPT v Linuxu
Odpovědět | | Sbalit | Link | Blokovat | Admin
No neviem ci to je dobra rada, ale v Infoware uz asi 5 mesiacov na toto tema ide serial. :-))

http://pcrevue.itnews.sk/buxus/generate_page.php?page_id=9558
ICQ 217-602-332
19.12.2005 16:19 jam001 | skóre: 19
Rozbalit Rozbalit vše Re: Rozběhání 8LED přes LPT v Linuxu
www.cevaro.sk - je odkaz na stranku autora toho serialu, kde sa daju stiahnut aj clanky - mal by tam byt aj kratky program 'lptout.c' pouzitelny na nastavenie portu.
17.12.2005 13:52 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: Rozběhání 8LED přes LPT v Linuxu
Odpovědět | | Sbalit | Link | Blokovat | Admin
nechajte svoj server prehovorit:
http://www.linuxzone.cz/index.phtml?ids=7&idc=187
http://www.linuxzone.cz/index.phtml?ids=7&idc=420
17.12.2005 21:42 mirekh2o | skóre: 13 | blog: MyBlog
Rozbalit Rozbalit vše Re: Rozběhání 8LED přes LPT v Linuxu
To ne, ja to chci ovládát manuálně !
ICQ: 240-460-464; Jabber: mirekh2o@jabber.cz
18.12.2005 11:30 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: Rozběhání 8LED přes LPT v Linuxu
manualne? staci sa pozriet na dane linky a nieco si nastudovat o GNU/GPL licencii. ale ked nie, tak nie.
19.12.2005 16:07 mirekh2o | skóre: 13 | blog: MyBlog
Rozbalit Rozbalit vše Re: Rozběhání 8LED přes LPT v Linuxu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Hej lidi ,poradíte někdo ?
ICQ: 240-460-464; Jabber: mirekh2o@jabber.cz
19.12.2005 16:09 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: Rozběhání 8LED přes LPT v Linuxu
Odpověď jsi už dostal, to je ti málo?
-- Nezdar není hanbou, hanbou je strach z pokusu.
20.12.2005 11:52 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Rozběhání 8LED přes LPT v Linuxu
Máš několik možností. Můžeš buď přímo přistupovat na port 0x378 a zapisovat do něj hodnoty, čímž rozvítíš či zhasneš LEDku. Tento způsob je jednoduchý:
#include<stdio.h<
#include<sys/io.h<
#include<unistd.h<
#include<sys/perm.h<
#include<stdlib.h<
#include<stdio.h<
#include<errno.h<
#include<time.h<
#include<string.h<
#include<error.h<

#define BASEPORT 0x378

void openio() {
  int r;

  r = iopl(3);
  if (r){
    printf("iopl() error %d (%s)\n", errno, strerror(errno));
    exit(-1);
  }
}

int main(int argc, char **argv) {
  openio();
  while (1) {
        outb(255, BASEPORT);
        printf ("dioda sviti\n");
        sleep(1);
        outb(0, BASEPORT);
        printf ("dioda nesviti\n");
        sleep(1);
  }
  return 0;
}
... ale má své velké nevýhody. Proces musí běžet jako root a vůbec technika přímého přístupu na porty je velmi ošemetná a "nesystémová". Předtím musíš dát z jádra pryč moduly, které již paralelní port obsluhují.

Další možností je napsat si modul do jádra. To je metoda technicky dokonalá, ale není to tak snadné.

A do třetice zlatá střední cesta, kterou doporučuji. Použij knihovnu parapin
http://parapin.sourceforge.net/
která usnadňuje psaní aplikací pro paralelní port.
20.12.2005 11:56 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Rozběhání 8LED přes LPT v Linuxu
Safra, mám opačně zobáčky. To je fakt humus vkládat Céčkovský zdroják. Nešlo by to nějak zjednodušit? Tak ještě jednou ten program:
#include<stdio.h>
#include<sys/io.h>
#include<unistd.h>
#include<sys/perm.h>
#include<stdlib.h>
#include<stdio.h>
#include<errno.h>
#include<time.h>
#include<string.h>
#include<error.h>

#define BASEPORT 0x378

void openio() {
  int r;

  r = iopl(3);
  if (r){
    printf("iopl() error %d (%s)\n", errno, strerror(errno));
    exit(-1);
  }
}

int main(int argc, char **argv) {
  openio();
  while (1) {
        outb(255, BASEPORT);
        printf ("dioda sviti\n");
        sleep(1);
        outb(0, BASEPORT);
        printf ("dioda nesviti\n");
        sleep(1);
  }
  return 0;
}

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.