Daten an Parallele Schnittstelle senden



  • Hallo,
    Wie kann ich mit hilfe von C++ Daten an die Parallele Schnittstelle senden, es wird kein Drucker angesteuert. Sondern eine selbst entworfene Schaltung. Die Funktion sollte System übergreifend sein, weil ich das Programm hinterher Windows und Unix Benutzen möchte.

    Danke Im vorraus



  • Ich glaube, du kannst unter Windows einfach LPT1 mit fopen() öffnen.
    Ich glaub aber nicht, dass das portabel ist.

    ChrisM



  • Dieses Thema gabs hier schon ca. 200 mal. Benutz einfach die Suchfunktion. Die meißten codes funzen aber nur unter <win2K und wenn du das für unix machen willst solltest du zwei funktionen schreiben und jeweils die richtige raussuchen



  • OK, dann habe ich noch eine andere Frage, Kann mir einer sagen, wie ich den inline assembler beim DJGPP benutze?



  • Kann mir einer sagen, wie ich den inline assembler beim DJGPP benutze?

    Im "Andere Compiler"-Forum wird's sicher jemanden geben, der dir diese Frage beantworten kann.



  • http://www.delorie.com/djgpp/doc/brennan/brennan_att_inline_djgpp.html

    gibts einige links zu in google, habs noch nicht ausprobiert, dieser sieht aber sinnig aus



  • Original erstellt von broesel:
    **Hallo,
    Wie kann ich mit hilfe von C++ Daten an die Parallele Schnittstelle senden, es wird kein Drucker angesteuert. Sondern eine selbst entworfene Schaltung. Die Funktion sollte System übergreifend sein, weil ich das Programm hinterher Windows und Unix Benutzen möchte.

    Danke Im vorraus**

    Wenn du unter Linux (vielleicht gehts auch mit UNIX?) programmierst, könnte ich dir die PARAPIN Bibliothek ans Herz legen:

    parapin -- a Parallel Port Pin Programming Library for Linux
    http://www.circlemud.org/~jelson/software/parapin/

    Anwendungsbeispiel:

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    
    #include "parapin.h"
    
    int main(int argc, char *argv[])
    {
      int pin_sequence[] = { 1, 2, 3, 4, 5, 6, 7, 8, 17, 14, 16, 9, -1};
      int i;
      int prev = 0;
      char buf[240];
    
      if (pin_init_user(LPT1) < 0)
        exit(0);
    
      pin_output_mode(LP_DATA_PINS | LP_SWITCHABLE_PINS);
    
      i = -1;
      while (1) {
        if (pin_sequence[++i] == -1)
          i = 0;
        printf("setting pin %d\n", pin_sequence[i]);
        set_pin(LP_PIN[pin_sequence[i]] | prev);
        printf("Hit return...\n");
        fgets(buf, 5, stdin);
        printf("clearing pin %d\n", pin_sequence[i]);
        clear_pin(LP_PIN[pin_sequence[i]] | prev);
        /*    prev = LP_PIN[pin_sequence[i]]; */
      } while (0);
    
    }
    

Anmelden zum Antworten