Anzeige:
Ergebnis 1 bis 12 von 12

Thema: [Java] Parallelport ansteuern

  1. #1
    Registrierter Benutzer
    Registriert seit
    12.03.2003
    Ort
    Delligsen
    Beiträge
    62

    [Java] Parallelport ansteuern

    Hiho,
    ich habe ein mehr oder minder großes problem, ich möchte mein Licht über meinen Computer Schalten, nun möchte ich wissen, ob, und wenn wie ich ein signal auf eine bestimmte leitung des Ports legen kann (selektierbar (Dauersignal || Signalfolge)).
    die schaltung habe ich schon mit einem Elektromeister aus meinem betrieb gebaut, ich muss das ganze nur noch ansteuern können, wisst ihr wie das geht ???

    euer hpf

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    mit Java eh nicht so direkt

    das musst du wenn schon entweder über ein externes Programm (Runtime.getRuntime().exec()) machen (ist aber ein "schönes" gebastel) oder du bindest ne Lib, die du in C/C++ schreibst, per JNI ein (ist wohl auch nicht viel besser)

    wenn du nur GCC/GCJ verwendest, kannst du statt JNI auch das CNI verwenden - ist wenigstens ein bisschen schneller aber auch nicht umwerfend.

    Ich denke am einfachsten ist es, wenn du gleich die Ganze ansteuerung in ein C/C++ Prog packst (falls du C/C++ kannst natürlich )

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer
    Registriert seit
    12.03.2003
    Ort
    Delligsen
    Beiträge
    62
    also, wie kann ich denn so eine lib einbinden ????
    ausserdem habe ich keine ahnung davon, wie ich in c++ nen port ansteuere,
    wärest du evtl. bereit, mir mit ein paar tips zur seite zu stehen ???
    Das wäre super nett.

    hpf

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    keine Ahnung

    JNI hab ich nie wirklich geschnallt und auch nie wirklich angeschaut

    http://java.sun.com/docs/books/tutorial/native1.1/ - das Sun Tutorial zu JNI

    wie du in C/C++ Geräte ansprichst weiss ich auch nicht wirklich. Bei Sound muss man einfach von /dev/dsp lesen bzw schreiben - die Params kann man per Open Sound System-Lib setzen. Aber das ist schon das sämtliche Geräte-lesen/schreiben, dass ich je in C oder auch sonstwie gemacht habe...

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  5. #5
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Es gibt eine Java Lib für Serielle und Parallele Kommunikation:
    http://java.sun.com/products/javacomm/

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  6. #6
    Registrierter Benutzer
    Registriert seit
    12.03.2003
    Ort
    Delligsen
    Beiträge
    62
    danke ersteinmal für eure hilfe,
    aber das ist leider nicht das was ich suche, die sun lib kannte ich bereits, aber darüber kann ich nicht zum beispiel einfach spannung auf dracht 6 des parallelports anlegen, um einen optokoppler anzusteuern.
    sowas bräuchte ich, weiß zufällig einer wie das in C++ geht ???
    denn in java geht das ja anscheinend nicht

    euer hpf

  7. #7
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Das Board hat eine Suchfunktion
    http://www.circlemud.org/~jelson/software/parapin/

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  8. #8
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Original geschrieben von anda_skoa
    Es gibt eine Java Lib für Serielle und Parallele Kommunikation:
    http://java.sun.com/products/javacomm/
    die Lib kannte ich noch nicht

    werds mir merken

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  9. #9
    Registrierter Benutzer
    Registriert seit
    12.03.2003
    Ort
    Delligsen
    Beiträge
    62
    Danke, nocheinmal

    @Anda_Skoa: Danke, die lib hilft mir weiter

    mfg hpf

  10. #10
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    die Lib sieht interessant aus.

    Machst du das Prog jetzt in Java oder doch gleich in C?

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  11. #11
    Registrierter Benutzer
    Registriert seit
    12.03.2003
    Ort
    Delligsen
    Beiträge
    62
    ich wollte das als native methoden in einem java tool einbinden
    nur um das mal gemacht zu haben, denn übung macht den meister

    mfg hpf

  12. #12
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650

    Thumbs up

    Parallelport-Zugriffe sind zumindest mit einem C-Programm auch direkt machbar:

    Code:
    #include <stdio.h>
    #include <errno.h>              /* error codes */  
    #include <sys/io.h>             /* or <asm/io.h> */
    
    int
    main ()
    {
      const unsigned int b = 0x378;        /* parallel port base (e. g. 0x3bc, 0x378 or 0x278), a wrong value may cause serious damage */
      unsigned char i = 0;
    
      iopl (3);                     /* allows access to all I/O-Ports, ioperm doesen't work above the 0x3ff-Limit */
      outb (0x2b, b + 2);           /* read (does normally work only for the status register) */
      i = inb (b + 1);
      printf
        ("Der Wert, der von Port 0x%hx (Status-Register des Parallelports) soeben gelesen wurde ist: 0x%hx\n\n",
         b + 1, i);
      i = inb (b);
      printf
        ("Der Wert, der von Port 0x%hx (Daten-Register des Parallelports) soeben gelesen wurde ist: 0x%hx\n\n",
         b, i);
      i = inb (b + 2);
      printf
        ("Der Wert, der von Port 0x%hx (Kontroll-Register des Parallelports) soeben gelesen wurde ist: 0x%hx\n\n",
         b + 2, i);
      iopl (0);                     /* release region */
      exit (0);
    }
    In Büchern wie "Linux Gerätetreiber" findet man einiges dazu, wie z. B. dass man benachbarte 8-Bit-I/O-Ports durch einen 16-Bit-Zugriff ansteuern kann.
    Ansonsten kann man auch die Geräte-Dateien in /dev eingeschränkt verwenden oder sich ein eigenes Kernel-Modul schreiben, dass die gewünschte Gerätedatei erzeugt (u. mit den gewünschten Funktionen versieht).
    Geändert von nobody0 (23-08-2003 um 14:37 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •