Invia comandi di stampa direttamente alla porta parallela LPT usando C # .net

Come in DOS possiamo fare:

ECHO MESSAGE>LPT1 

Come possiamo ottenere la stessa cosa in C # .NET?

L’invio di informazioni a COM1 sembra essere facile con C # .NET.

Che mi dici delle porte LPT1?

Voglio inviare i comandi di fuga alla stampante termica.

In C # 4.0 e versioni successive è ansible, per prima cosa è necessario connettersi a quella porta usando il metodo CreateFile , quindi aprire un filestream su quella porta per scrivere definitivamente su di essa. Ecco una class di esempio che scrive due linee sulla stampante su LPT1 .

 using Microsoft.Win32.SafeHandles; using System; using System.IO; using System.Runtime.InteropServices; namespace YourNamespace { public static class Print2LPT { [DllImport("kernel32.dll", SetLastError = true)] static extern SafeFileHandle CreateFile(string lpFileName, FileAccess dwDesiredAccess,uint dwShareMode, IntPtr lpSecurityAttributes, FileMode dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplateFile); public static bool Print() { string nl = Convert.ToChar(13).ToString() + Convert.ToChar(10).ToString(); bool IsConnected= false; string sampleText ="Hello World!" + nl + "Enjoy Printing..."; try { Byte[] buffer = new byte[sampleText.Length]; buffer = System.Text.Encoding.ASCII.GetBytes(sampleText); SafeFileHandle fh = CreateFile("LPT1:", FileAccess.Write, 0, IntPtr.Zero, FileMode.OpenOrCreate, 0, IntPtr.Zero); if (!fh.IsInvalid) { IsConnected= true; FileStream lpt1 = new FileStream(fh,FileAccess.ReadWrite); lpt1.Write(buffer, 0, buffer.Length); lpt1.Close(); } } catch (Exception ex) { string message = ex.Message; } return IsConnected; } } } 

Supponendo che la stampante sia collegata alla porta LPT1 , in caso contrario sarà necessario regolare il metodo CreateFile modo che corrisponda alla porta che si sta utilizzando.

puoi chiamare il metodo in qualsiasi punto del tuo programma con la seguente riga

 Print2LPT.Print(); 

Penso che questa sia la soluzione più breve ed efficiente al tuo problema.

Puoi sempre provare questo esempio di codice.

Br Anders

Si dovrebbe ottenere un aiuto da questo articolo di Microsoft: Come inviare dati non elaborati a una stampante utilizzando Visual C #. NET