Specifically the OP pick this function from the answers to the thread: Take a look at this thread: Print ZPL codes to ZEBRA printer using PrintDocument class. Return RawPrinterHelper.SendStringToPrinter(printerName, sb.ToString()) Using (var sr = new StreamReader(szFileName, Encoding.Default)) The file has to end with a new line characterĮncoding has to be set to Encoding.Default when reading ANSI txt files with special characters public static bool SendTextFileToPrinter(string szFileName, string printerName) There are 2 gotchas I've come across that happen when you're sending txt files with ZPL codes to the printer: ![]() RawPrinterHelper.SendStringToPrinter(pd.PrinterSettings.PrinterName, s) If(DialogResult.OK = pd.ShowDialog(this)) Pd.PrinterSettings = new PrinterSettings() SendBytesToPrinter(szPrinterName, pBytes, dwCount) Ĭall the print method: private void BtnPrint_Click(object sender, System.EventArgs e) Send the converted ANSI string to the printer. PBytes = Marshal.StringToCoTaskMemAnsi(szString) Assume that the printer is expecting ANSI text, and then convert How many characters are in the string? Public static bool SendStringToPrinter( string szPrinterName, string szString ) Free the unmanaged memory that you allocated earlier. Send the unmanaged bytes to the printer.īSuccess = SendBytesToPrinter(szPrinterName, pUnmanagedBytes, nLength) Marshal.Copy(bytes, 0, pUnmanagedBytes, nLength) Copy the managed byte array into the unmanaged array. PUnmanagedBytes = Marshal.AllocCoTaskMem(nLength) Allocate some unmanaged memory for those bytes. Read the contents of the file into the array. Dim an array of bytes big enough to hold the file's contents. Public static bool SendFileToPrinter( string szPrinterName, string szFileName )įileStream fs = new FileStream(szFileName, FileMode.Open) If you did not succeed, GetLastError may give more information If( OpenPrinter( szPrinterName.Normalize(), out hPrinter, IntPtr.Zero ) )īSuccess = WritePrinter(hPrinter, pBytes, dwCount, out dwWritten) Public static bool SendBytesToPrinter( string szPrinterName, IntPtr pBytes, Int32 dwCount)īool bSuccess = false // Assume failure unless you specifically succeed. Returns true on success, false on failure. of bytes, the function sends those bytes to the print queue. When the function is given a printer name and an unmanaged array Public static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, Int32 dwCount, out Int32 dwWritten ) ![]() Public static extern bool EndPagePrinter(IntPtr hPrinter) Public static extern bool StartPagePrinter(IntPtr hPrinter) Public static extern bool EndDocPrinter(IntPtr hPrinter) ![]() Public static extern bool StartDocPrinter( IntPtr hPrinter, Int32 level, DOCINFOA di) Public static extern bool ClosePrinter(IntPtr hPrinter) Public static extern bool OpenPrinter( string szPrinter, out IntPtr hPrinter, IntPtr pd) You can pause if needed, and lower the sound if you prefer not to have soft music playing.Ĭlick HERE go back to the Directed Drawing Videos Directory.This way you will be able to send ZPL to a printer no matter how it is connected ( LPT, USB, Network Share.)Ĭreate the RawPrinterHelper class (from the Microsoft article on How to send raw data to a printer by using Visual C#. Just project them onto any white board or screen, press Play, and let students draw along with the video!Ĭlick the Full Screen option for better viewing. These directed drawing videos allow you to walk around and assist students while the video plays – much more relaxing than trying to draw and assist at the same time. ![]() Use your drawings as writing prompts! You can see more photos of the directed drawing activities we use in my classroom by clicking HERE. Have you tried directed drawing with your students? There are so many ways to use it in the classroom! COMBINE DRAWING AND WRITING
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |