C#使用ESC 指令控制POS 打印机打印小票 1.前言 C#打印小票可以与普通打印机一样,调用PrintDocu ment 实现。也可以发送标注你的ESC 指令实现。由于 调用PrintDocu ment 类时,无法操作使用串口或TCP/IP 接口连接的pos 打印机,并且无法发送控制指令实现pos打印机的切纸、走纸等动作。因此个人建议使用ESC 指令进行打印会更通用。 本类需要调用 ImageProcessor.cs *************** 2.POS 机打印小票ReceiptHelper using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.Threading; using System.Drawing; using System.Management; using System.IO; using LaisonTech.MediaLib; using LaisonTech.CommonBLL; using Microsoft.Win32.SafeHandles; namespace LaisonTech.MediaLib { #region 结构体定义 [StructLayout(LayoutKind.Sequential)] public struct OVERLAPPED { int Internal; int InternalHigh; int Offset; int OffSetHigh; int hEvent; }; [StructLayout(LayoutKind.Sequential)] public struct PRINTER_DEFAULTS { public int pDatatype; public int pDevMode; public int DesiredAccess; } /// /// 对齐方式 /// public enum eTextAlignMode { Left = 0, Middle = 1, Right = 2 } #endregion /// /// 小票打印类 /// 使用方法: /// 1 GetPrinterList获取已经安装的所有打印机列表. /// Open 打开指定打印机 /// 2 控制打印机动作、执行打印内容之前,必须先调用StartPrint,准备向打印机发送控制指令 /// 3 调用SetLeft, SetBold, SetAlignMode, SetFontSize ... ...设置打印参数 /// 4 PrintText 打印内容.注意:打印该行内容后会自动换行(本类会在该行内容末尾添加一个换行符) /// PrintImageFile 或 PrintBitMap打印图片 /// 5 控制指令和打印内容都发送完毕后,调用 EndPrint执行真正打印动作 /// 6 退出程序前调用Close /// public class ReceiptHelper { #region 指令定义 private static Byte[] Const_Init = new byte[] { 0x1B, 0x40, 0x20, 0x20, 0x20, 0x0A, 0x1B, 0x64,0x10}; //设置左边距 private const string Const_SetLeft =...