Announcement

Collapse
No announcement yet.

parallele Schnittstelle ansprechen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • parallele Schnittstelle ansprechen

    Hallo,
    ich hätte gerne meinen alten Stift-Plotter wieder verwendet. Dieser hat sowohl eine parallele als auch eine serielle Schnittstelle. Das Datenformat ist HPGL, also reiner Text.
    Nun habe ich zum Test ein kleines Programm geschrieben (mit Borland-C++Builder), mit dem ich in ein Edit-Feld die HPGL-Befehle schreibe und diese dann an den Plotter übertrage.
    Zuerst wollte ich es mir einfach machen und die parallele Schnittstelle verwenden. Für den Schnittstellentest habe ich meinen Nadeldrucker verwendet, der normalerweise angeschlossen ist und der damit einwandfrei funktioniert. Das hatte ich mir so
    vorgestellt:

    char Text[]={'T','e','s','t',0xD,0xA};
    // int iFileHandle = FileCreate("PRN"); //auch probiert
    int iFileHandle = FileOpen("LPT1:", fmOpenWrite);
    if(iFileHandle<0){ShowMessage("Drucker nicht bereit"); return;}
    x=FileWrite(iFileHandle, Text, 6);
    if(x!=6)ShowMessage("Fehler");
    FileClose(iFileHandle);

    Diese Funktion wird klaglos ausgeführt, bloss am Drucker kommt nichts an.
    Weiss jemand, warum das nicht geht?

    Es bleibt mir ansonsten wohl nichts anderes übrig, als die Ports direkt anzusprechen. Dafür habe ich schon mal das Modul "DlportIO" verwendet. Das funktioniert. Dazu muss man aber die Portadresse kennen. Natürlich kann ich diese ermitteln und dann
    eintragen. Lieber wäre mir aber eine automatische Erkennung. Ich nehme an, dass das irgendwo in der Registry steht.
    Weiss jemand wo?

    Vielen Dank im Voraus.

    Kyriako.

  • #2
    Denke mal, der Drucker kann mit den Zeichen nichts anfangen. Schließlich würden die für den Drucker spezifischen Kommandos fehlen. Die Zeiten der direkten Ansteuerung eines Druckers sind vorbei. Hier ist der Gerätetreiber dazwischen.

    Wo das in der Registry steht solltest du mit einer einfachen Suche mit "regedit" finden können....
    Christian

    Comment


    • #3
      Hallo Christian,
      natürlich wird ein Druckertreiber gebraucht. Das war auch schon zu DOS-Zeiten schon so, als man mit:
      drucker=fopen("PRN","w"); fprintf(drucker,"%s","Test");
      den Drucker ansprechen konnte. Der Treiber musste das schliesslich in Port-Zugriffe umsetzen.
      Offensichtlich ist das mit den Windows-Treibern nicht möglich(oder liegt es vielleicht am "Spooler"?). Gerade deswegen ist es verwunderlich, dass man ein File mit den Namen "LPT1" oder "PRN" öffnen und Daten schreiben kann ohne jede Fehlermeldung.

      Die Portadresse kann man natürlich über die Systemsteuerung herausfinden, mit regedit dürfte das ziemlich mühsam sein.
      Wonach ich fragte ist der Registry-Schlüssel, unter welchem die PortAdresse zu finden ist. Ich stelle mir vor, dass ich dann den Wert abfragen könnte, etwa so:
      PortAdr=Registry->ReadInteger(RegKey);

      Servus,
      Günter.

      Comment

      Working...
      X