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
Moment der BinaryWriter hat doch was mit
Dateien zu tun oder bin ich jetzt am Holzweg?
Kannst mich mal aufklären?
mfg
hemasek
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
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:
@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!
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.
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??
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.
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.
Pinvoke.Net hilft!
Ganz runterscrollen:
http://www.pinvoke.net/default.aspx/kernel32/CreateFile.html
Gernot Melichar
Vielen Dank Meli!!!
hast mir sehr geholfen, jetz gehts!!
danke! 😁