C#使用ESC指令控制POS机编辑整理小票

上传人:新*** 文档编号:101781259 上传时间:2019-09-29 格式:DOC 页数:68 大小:643.98KB
返回 下载 相关 举报
C#使用ESC指令控制POS机编辑整理小票_第1页
第1页 / 共68页
C#使用ESC指令控制POS机编辑整理小票_第2页
第2页 / 共68页
C#使用ESC指令控制POS机编辑整理小票_第3页
第3页 / 共68页
C#使用ESC指令控制POS机编辑整理小票_第4页
第4页 / 共68页
C#使用ESC指令控制POS机编辑整理小票_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《C#使用ESC指令控制POS机编辑整理小票》由会员分享,可在线阅读,更多相关《C#使用ESC指令控制POS机编辑整理小票(68页珍藏版)》请在金锄头文库上搜索。

1、/C#使用ESC指令控制POS打印机打印小票 1.前言C#打印小票可以与普通打印机一样,调用PrintDocument实现。也可以发送标注你的ESC指令实现。由于 调用PrintDocument类时,无法操作使用串口或TCP/IP接口连接的pos打印机,并且无法发送控制指令实现pos打印机的切纸、走纸等动作。因此个人建议使用ESC指令进行打印会更通用。本类需要调用 ImageProcessor.cs 2.POS机打印小票ReceiptHelperusing System;using System.Collections.Generic;using System.Text;using Syste

2、m.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

3、 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 / / 小票打印

4、类/ 使用方法:/ 1 GetPrinterList获取已经安装的所有打印机列表./ Open 打开指定打印机/ 2 控制打印机动作、执行打印内容之前,必须先调用StartPrint,准备向打印机发送控制指令/ 3 调用SetLeft, SetBold, SetAlignMode, SetFontSize . .设置打印参数/ 4 PrintText 打印内容.注意:打印该行内容后会自动换行(本类会在该行内容末尾添加一个换行符)/ PrintImageFile 或 PrintBitMap打印图片/ 5 控制指令和打印内容都发送完毕后,调用 EndPrint执行真正打印动作 / 6 退出程序前调

5、用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 = 1D 4C ; /设置粗体 private const string Const_SetBold = 1B 45 ; private const String Const_Bold_YES = 01; private con

6、st String Const_Bold_NO = 00; /设置对齐方式 private const string Const_SetAlign = 1B 61 ; private const String Const_Align_Left = 30; private const String Const_Align_Middle = 31; private const String Const_Align_Right = 32; /设置字体大小,与 SetBigFont 不能同时使用 private const string Const_SetFontSize = 1D 21 ; /设置是

7、否大字体,等同于 SetFontSize = 2 /private const String Const_SetBigFontBold = 1B 21 38; /private const String Const_SetBigFontNotBold = 1B 21 30; /private const String Const_SetCancelBigFont = 1B 21 00; / / 打印并走纸 / private static Byte Const_Cmd_Print = new byte 0x1B, 0x4A, 0x00 ; /走纸 private const string Co

8、nst_FeedForward = 1B 4A ; private const string Const_FeedBack = 1B 6A ; /切纸 private static Byte Const_SetCut = new byte 0x1D, 0x56, 0x30; /查询打印机状态 private static Byte Const_QueryID = new byte 0x1D, 0x67, 0x61; /回复帧以 ID 开头 private static String Const_ResponseQueryID = ID; / / 设置图标的指令 / private static

9、 Byte Const_SetImageCommand = new Byte 0x1B, 0x2A, 0x21 ;#endregion #region 常量定义 / / 最大字体大小 / public const Int32 Const_MaxFontSize = 8; / / 最大走纸距离 / public const Int32 Const_MaxFeedLength = 5000; / / 最大高宽 / public const Int32 Const_MaxImageLength = 480; / / 每次通信最多打印的行数 / public const Int32 Const_Onc

10、ePrintRowCount = 24; public const Int32 Const_BrightnessGate = 100; / / 无效句柄 / public const Int32 Const_InvalidHandle = -1; #endregion #region 私有成员 / / 打印机句柄 / private int m_Handle = -1; / / 是否已经初始化 / private Boolean m_Inited = false; #endregion #region 私有函数 DllImport(winspool.Drv, EntryPoint = Open

11、PrinterA, SetLastError = true, CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.StdCall) public static extern bool OpenPrinter(MarshalAs(UnmanagedType.LPStr) string szPrinter, out Int32 hPrinter, IntPtr pd); DllImport(winspool.Drv, EntryPoint = StartDocPrinterA, SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall) public

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 专业基础教材

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号