Laden...

Ausdruck auf parallelen Port

Erstellt von hemasek vor 18 Jahren Letzter Beitrag vor 18 Jahren 3.085 Views
H
hemasek Themenstarter:in
28 Beiträge seit 2005
vor 18 Jahren
Ausdruck auf parallelen Port

Hallo Leute,

ich muß auf einen Etikettendrucker einige Befehle rausschicken.
in VB gab es die Möglichkeite, wie aufgelistet, strings über lpt1 zu schicken:

      
Open "LPT1:" For Output As #1

 beginn = Chr(2) & "m" & Chr(13) & _
               Chr(2) & "L" & Chr(13) & _
               "D11" & Chr(13) & _
               "191100601700025" & txtKunde & Chr(13) & _
               "191100800300025" & txtAuftrag & Chr(13) & _
               "E" & Chr(13)
         
For Zähler = 1 To txtAnzahl
   Print #1, beginn
Next Zähler
    
Close #1

gibt es in c# diese Möglichkeit auch noch?

Für jeden Ansatz dankbar,

hemasek

F
10.010 Beiträge seit 2004
vor 18 Jahren

Klar, nimmst dann den BinaryWriter.

H
hemasek Themenstarter:in
28 Beiträge seit 2005
vor 18 Jahren

Moment der BinaryWriter hat doch was mit
Dateien zu tun oder bin ich jetzt am Holzweg?

Kannst mich mal aufklären?

mfg

hemasek

S
8.746 Beiträge seit 2005
vor 18 Jahren

Da ist deine Datei:

Open "LPT1:" For Output As #1

H
hemasek Themenstarter:in
28 Beiträge seit 2005
vor 18 Jahren

Kann mir jemand ein Beispiel geben
wie ich "LPT1:" dem BinaryWriter übergeben kann?
Im Filestream bekomme ich einen Error.

Ziel ist es auf die parallele Schnittstelle einen String auszugeben.

Wäre um ein Beispiel dankbar.

mfg

HeMasek

S
8.746 Beiträge seit 2005
vor 18 Jahren

Mit .NET direkt geht es tatsächlich nicht, weil .NET prüft, ob es sich wirklich um einen Datei handelt. Man muss also leider mit Win32-Funktionen arbeiten.

Hier steht wie es geht:

http://www.dotnet247.com/247reference/msgs/16/84550.aspx

C
71 Beiträge seit 2005
vor 18 Jahren

@hemasek:
genau das gleiche will ich auch machen. wie hast du es jetzt gelöst??

Oder weiß jemand anderes wie er es gemacht hat oder überhaupt realisierbar ist??
wär wirklich wichtig!

S
8.746 Beiträge seit 2005
vor 18 Jahren

Alles schon gesagt: Mit den .NET-Klassen kann man keine "Gerätedateien" öffnen. Weder LPT: noch COM: gehen. Man muss auf Win32 ausweichen (siehe mein Link).

*EDIT*

De MS-Link scheint tot. Hier nochmal der Weg: Die Win32-Funktion OpenFile() mittels Pinvoke/DLLImport verfügbar machen. Die Datei "LPT1:" damit öffnen und den Zeiger (bzw. IntPtr), den die Funktion zurückgibt, in den FileStream-Konstruktor werfen. Dann wie gehabt arbeiten.

C
71 Beiträge seit 2005
vor 18 Jahren

ich will ja eigentlich keine gerätedateien öffnen.
ich will eigentlich nur die daten an die schnittstelle senden. zum testen hab ich das so gemacht, das ich im texteditor ein paar befehle eingegeben hab:


N
LO50,10,4,130
X100,10,4,200,150
A300,30,1,5,1,1,R,"TEST"
P1

jede Zeile stellt eine Anweisung für den drucker dar, habs abgespeichert und dann per cmd an den Drucker geschickt:

type druck.txt > LPT1

das müsste ich eben jetzt aus c# raus machen!
Wie kann ich das machen? Kann man einen Binärstream an LPT1 schicken oder kann ich irgendwie den Kommandozeilenbefehl aufrufen??

C
71 Beiträge seit 2005
vor 18 Jahren

Original von svenson
De MS-Link scheint tot. Hier nochmal der Weg: Die Win32-Funktion OpenFile() mittels Pinvoke/DLLImport verfügbar machen. Die Datei "LPT1:" damit öffnen und den Zeiger (bzw. IntPtr), den die Funktion zurückgibt, in den FileStream-Konstruktor werfen. Dann wie gehabt arbeiten.

kannst du mir das mal genauer erklären? ambesten mit nem codebeispiel!!wär echt super, vertseh das grad nich so genau, mach c# noch nich so lang.

S
8.746 Beiträge seit 2005
vor 18 Jahren

ich hab leider keine Zeit einen fertigen Code zu schreiben. Für einen Anfänger dürfte die Aufgabe wohl eine wenig heftig sein, aber vielleicht erbarmt sich ja jemand anders und zimmert dir eine komplette Lösung.

M
115 Beiträge seit 2003
vor 18 Jahren

Pinvoke.Net hilft!
Ganz runterscrollen:
http://www.pinvoke.net/default.aspx/kernel32/CreateFile.html

Gernot Melichar

C
71 Beiträge seit 2005
vor 18 Jahren

Vielen Dank Meli!!!
hast mir sehr geholfen, jetz gehts!!
danke! 😁