核心代码

    public class PrinterHelper{/// <summary>/// 更新线程/// </summary>Thread m_Thread;/// <summary>/// 线程阻塞/// </summary>AutoResetEvent m_ResetEvent = new AutoResetEvent(true);/// <summary>/// 是否工作/// </summary>bool m_ThreadIsWork = false;/// <summary>/// 是否阻塞/// </summary>bool m_ThreadIsPause = true;/// <summary>/// 服务器状态/// </summary>public delegate void PrinterStatusEventDelegate(int Status, string Message);/// <summary>/// 服务器状态/// </summary>public event PrinterStatusEventDelegate PrinterStatus;/// <summary>/// 打印机名称/// </summary>private static string m_PrinterName = string.Empty;public PrinterHelper(string PrinterName){m_PrinterName = PrinterName;this.m_Thread = new Thread(new ThreadStart(this.WorkThreedFun));this.m_Thread.IsBackground = true;this.m_Thread.Start();this.m_ThreadIsWork = true;this.m_ThreadIsPause = false;this.m_ResetEvent.Set();}[DllImport("TSCLIB.dll", EntryPoint = "about")]public static extern int about();[DllImport("TSCLIB.dll", EntryPoint = "openport")]public static extern int openport(string printername);[DllImport("TSCLIB.dll", EntryPoint = "barcode")]public static extern int barcode(string x, string y, string type,string height, string readable, string rotation,string narrow, string wide, string code);[DllImport("TSCLIB.dll", EntryPoint = "clearbuffer")]public static extern int clearbuffer();[DllImport("TSCLIB.dll", EntryPoint = "closeport")]public static extern int closeport();[DllImport("TSCLIB.dll", EntryPoint = "downloadpcx")]public static extern int downloadpcx(string filename, string image_name);[DllImport("TSCLIB.dll", EntryPoint = "formfeed")]public static extern int formfeed();[DllImport("TSCLIB.dll", EntryPoint = "nobackfeed")]public static extern int nobackfeed();[DllImport("TSCLIB.dll", EntryPoint = "printerfont")]public static extern int printerfont(string x, string y, string fonttype,string rotation, string xmul, string ymul,string text);[DllImport("TSCLIB.dll", EntryPoint = "printlabel")]public static extern int printlabel(string set, string copy);[DllImport("TSCLIB.dll", EntryPoint = "sendBinaryData")]public static extern int sendBinaryData(byte[] content, int length);//功能:繪製QRCODE二維條碼//語法://QRCODE X, Y, ECC Level, cell width, mode, rotation, [model, mask,]"Data string”//參數說明//X QRCODE條碼左上角X座標//Y QRCODE條碼左上角Y座標//ECC level 錯誤糾正能力等級//L 7%//M 15%//Q 25%//H 30%//cell width    1~10//mode  自動生成編碼/手動生成編碼//A Auto//M Manual//rotation  順時針旋轉角度//0 不旋轉//90    順時針旋轉90度//180   順時針旋轉180度//270   順時針旋轉270度//model 條碼生成樣式//1 (預設), 原始版本//2 擴大版本//mask  範圍:0~8,預設7//Data string   條碼資料內容//string printercommand = "QRCODE 176,8,Q,8,A,0,M2,S7,\"" + barCode + "\"";[DllImport("TSCLIB.dll", EntryPoint = "sendcommand")]public static extern int sendcommand(string printercommand);/// <summary>///   宽度、高度、速度、浓度//    sensor为0:vertical 垂直间距距离 offset垂直间距的偏移//    sensor为1:vertical定义黑标高度和额外送出长度 offset黑标偏移量/// </summary>/// <param name="width"></param>/// <param name="height"></param>/// <param name="speed">列印速度,1~6,6为最快速度</param>/// <param name="density">打印浓度,1-15,数字越大越黑</param>/// <param name="sensor"></param>/// <param name="vertical"></param>/// <param name="offset"></param>/// <returns></returns>[DllImport("TSCLIB.dll", EntryPoint = "setup")]public static extern int setup(string width, string height, string speed, string density, string sensor, string vertical, string offset);/// <summary>/// windowsfont(a,b,c,d,e,f,g,h) ///       说明:使用Windows TTF字型列印文字///   参数: ///   a:整数型别,文字X方向起始点,以点(point)表示。 ///   b:整数型别,文字Y方向起始点,以点(point)表示。 ///   c:整数型别,字体高度,以点(point)表示。 ///   d:整数型别,旋转角度,逆时钟方向旋转 ///   0 -> 0 degree ///   90-> 90 degree ///   180-> 180 degree ///   270-> 270 degree///   e:整数型别,字体外形 ///   0->标准(Normal)///   1->斜体(Italic)///   2->粗体(Bold)///   3->粗斜体(Bold and Italic)///   f:整数型别,底线 ///   0->无底线 ///   1->加底线///   g:字串型别,字体名称。如: Arial, Times new Roman,细名体,标楷体///   h:字串型别,列印文字内容。 /// </summary>/// <param name="x"></param>/// <param name="y"></param>/// <param name="fontheight"></param>/// <param name="rotation"></param>/// <param name="fontstyle"></param>/// <param name="fontunderline"></param>/// <param name="szFaceName"></param>/// <param name="content"></param>/// <returns></returns>[DllImport("TSCLIB.dll", EntryPoint = "windowsfont")]public static extern int windowsfont(int x, int y, int fontheight,int rotation, int fontstyle, int fontunderline,string szFaceName, string content);/// <summary>/// 获取打印机状态,/// </summary>/// <returns></returns>/// 0=待机中/// 1=印字头开启/// 2=卡纸/// 3/// 4 =缺纸/// 10= 暂停中/// 20 =列印中[DllImport("TSCLIB.dll", EntryPoint = "usbportqueryprinter")]public static extern int usbportqueryprinter();/// <summary>/// 执行线程函数/// </summary>private void WorkThreedFun(){while (true){if (this.m_ThreadIsPause || !this.m_ThreadIsWork){this.m_ResetEvent.WaitOne();}System.Threading.Thread.Sleep(10);this.DoWork();}}private void DoWork(){//int i = openport(m_PrinterName);int status = usbportqueryprinter();string Hex = status.ToString("X6");int rStatus = 14;string strStatus = string.Empty;switch (Hex){case "000000":rStatus = 0;strStatus = "准备就绪";break;case "000001":rStatus = 1;strStatus = "打印头开启";break;case "000002":rStatus = 2;strStatus = "纸张卡纸";break;case "000003":rStatus = 3;strStatus = "打印头开启并且纸张卡纸";break;case "000004":rStatus = 4;strStatus = "纸张缺纸";break;case "000005":rStatus = 5;strStatus = "打印头开启并且纸张缺纸";break;case "000008":rStatus = 6;strStatus = "无碳带";break;case "000009":rStatus = 7;strStatus = "打印头开启并且无碳带";break;case "00000A":rStatus = 8;strStatus = "纸张卡纸并且无碳带";break;case "00000B":rStatus = 9;strStatus = "打印头开启、纸张卡纸并且无碳带";break;case "00000C":rStatus = 10;strStatus = "纸张缺纸并且无碳带";break;case "000010":rStatus = 11;strStatus = "暂停";break;case "000020":rStatus = 12;strStatus = "打印中";break;case "000080":rStatus = 13;strStatus = "其它错误";break;default:rStatus = 14;strStatus = "未知";break;}this.PrinterStatus?.Invoke(rStatus, strStatus);//System.Diagnostics.Debug.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + ":" + status);}public static int SetCommand(string HexString){int dvopenPort = openport(m_PrinterName);byte[] bytes = HexStrToByte(HexString);var r = sendBinaryData(bytes, bytes.Length);closeport();return r;}private static byte[] HexStrToByte(string HexString){HexString = HexString.Replace(" ", "");if (HexString.Length % 2 != 0){HexString += " ";}byte[] returnBytes = new byte[HexString.Length / 2];for (int i = 0; i < returnBytes.Length; i++){returnBytes[i] = Convert.ToByte(HexString.Substring(i * 2, 2).Trim(), 16);}return returnBytes;}public static void TestPrint(){int dvopenPort = openport(m_PrinterName);sendcommand("DIRECTION 1");//设置标签大小  mmsendcommand("SIZE 76mm" + ",130mm");//设置打印速度  英寸每秒 1-10sendcommand("SPEED 10");//清除打印机缓存clearbuffer();//此条指令用来定义不同的国码编码。string BarCode = "123456";sendcommand("CODEPAGE UTF-8");sendcommand("OFFSET 5mm");sendcommand(string.Format("TEXT 140,50,\"SourceHa.TTF\",0,10,10,\"当前操作:打印测试页\""));sendcommand("TEXT 80,100,\"SourceHa.TTF\",0,14,14,\"----------------------------------\"");sendcommand("TEXT 120,160,\"SourceHa.TTF\",0,10,10,\"*********************\"");sendcommand("TEXT 80,200,\"SourceHa.TTF\",0,14,14,\"----------------------------------\"");sendcommand("TEXT 220,250,\"SourceHa.TTF\",0,13,13,\"菩萨蛮 温庭筠\"");sendcommand("TEXT 200,300,\"SourceHa.TTF\",0,13,13,\"玉楼明月长相忆,\"");sendcommand("TEXT 200,350,\"SourceHa.TTF\",0,13,13,\"柳丝袅娜春无力。\"");sendcommand("TEXT 200,400,\"SourceHa.TTF\",0,13,13,\"门外草萋萋,\"");sendcommand("TEXT 200,450,\"SourceHa.TTF\",0,13,13,\"送君闻马嘶。\"");sendcommand("TEXT 200,500,\"SourceHa.TTF\",0,13,13,\"画罗金翡翠,\"");sendcommand("TEXT 200,550,\"SourceHa.TTF\",0,13,13,\"香烛销成泪。\"");sendcommand("TEXT 200,600,\"SourceHa.TTF\",0,13,13,\"花落子规啼,\"");sendcommand("TEXT 200,650,\"SourceHa.TTF\",0,13,13,\"绿窗残梦迷。\"");sendcommand("TEXT 120,700,\"SourceHa.TTF\",0,13,13,\"0001-0000-0010-0100\"");sendcommand("TEXT 80,750,\"SourceHa.TTF\",0,14,14,\"----------------------------------\"");barcode("180", "800", "128", "128", "1", "0", "2", "2", BarCode);sendcommand("TEXT 80,900,\"SourceHa.TTF\",0,14,14,\"----------------------------------\"");windowsfont(110, 950, 32, 0, 0, 0, "SourceHa.TTF", "测试打印时间" + DateTime.Now.ToString());printlabel("1", "1");closeport();}public static void AddJob(int index){int dvopenPort = openport(m_PrinterName);sendcommand("DIRECTION 1");//设置标签大小  mmsendcommand("SIZE 76mm" + ",130mm");//设置打印速度  英寸每秒 1-10sendcommand("SPEED 10");//清除打印机缓存clearbuffer();//此条指令用来定义不同的国码编码。string BarCode = "123456";sendcommand("CODEPAGE UTF-8");sendcommand("OFFSET 5mm");sendcommand(string.Format("TEXT 140,50,\"SourceHa.TTF\",0,10,10,\"当前操作:打印测试页{0}\"", index));sendcommand("TEXT 80,100,\"SourceHa.TTF\",0,14,14,\"----------------------------------\"");sendcommand("TEXT 120,160,\"SourceHa.TTF\",0,10,10,\"*********************\"");sendcommand("TEXT 80,200,\"SourceHa.TTF\",0,14,14,\"----------------------------------\"");sendcommand("TEXT 220,250,\"SourceHa.TTF\",0,13,13,\"菩萨蛮 温庭筠\"");sendcommand("TEXT 200,300,\"SourceHa.TTF\",0,13,13,\"玉楼明月长相忆,\"");sendcommand("TEXT 200,350,\"SourceHa.TTF\",0,13,13,\"柳丝袅娜春无力。\"");sendcommand("TEXT 200,400,\"SourceHa.TTF\",0,13,13,\"门外草萋萋,\"");sendcommand("TEXT 200,450,\"SourceHa.TTF\",0,13,13,\"送君闻马嘶。\"");sendcommand("TEXT 200,500,\"SourceHa.TTF\",0,13,13,\"画罗金翡翠,\"");sendcommand("TEXT 200,550,\"SourceHa.TTF\",0,13,13,\"香烛销成泪。\"");sendcommand("TEXT 200,600,\"SourceHa.TTF\",0,13,13,\"花落子规啼,\"");sendcommand("TEXT 200,650,\"SourceHa.TTF\",0,13,13,\"绿窗残梦迷。\"");sendcommand("TEXT 120,700,\"SourceHa.TTF\",0,13,13,\"0001-0000-0010-0100\"");sendcommand("TEXT 80,750,\"SourceHa.TTF\",0,14,14,\"----------------------------------\"");barcode("180", "800", "128", "128", "1", "0", "2", "2", BarCode);sendcommand("TEXT 80,900,\"SourceHa.TTF\",0,14,14,\"----------------------------------\"");windowsfont(110, 950, 32, 0, 0, 0, "SourceHa.TTF", "测试打印时间" + DateTime.Now.ToString());printlabel("1", "1");closeport();}}

完成打印机指令控制打印机函数:

        [DllImport("TSCLIB.dll", EntryPoint = "sendBinaryData")]public static extern int sendBinaryData(byte[] content, int length);

发送打印机指令

i.e <ESC>!P和<ESC>!O,分别暂停打印、取消暂停

注意<ESC>为跳脱符号,使用sendBinaryData发送指令接受的为byte[]数据类型

代码参考:

string Hex = "1B 21 50"; //<ESC>!P暂停
string Hex = "1B 21 4F"; //<ESC>!O解除暂停
byte[] sendBytes = HexStrToByte(Hex);
var r = sendBinaryData(sendBytes, sendBytes.Length);

许多朋友使用的是sendcommand函数,是只能发送命令,而不能发送指令内容!!!

sendcommand 支持TSC文档:系统指令、标签内容打印命令、设备配置指令等

sendBinaryData支持TSC文档:状态获取及立即指令、信息传送、驱动指令、文件管理指令、基础指令及函数等

TSC包含命令与指令,文档有很明确的说明。

TSCLIB 下载地址

C# 控制TSC打印机功能相关推荐

  1. 佳博 TSC打印机 TSPL指令开发

    如何在电脑上使用C# 调用佳博 TSC打印机指令控制打印 踩了不少坑 跟大家分享下开发需要注意的地方 1. 佳博和TSC的 BARCODE 指令有出入,TSC多了一个参数,直接用佳博的打印是扫码不出二 ...

  2. delphi控制POS打印机

    delphi控制POS打印机 delphi控制POS打印机 RPrinter为TextFile类型: SContent为TStringList类型. // 建立打印连接并打印数据 Assignfile ...

  3. 开启共享文件夹/共享打印机功能

    适用于:Windows 10 神州网信政府版 概要: 基于GB/T 30278-2013 <信息安全技术政务计算机终端核心配置规范>的要求对Windows 10神州网信政府版(以下简称CM ...

  4. TSC打印机打印条形码和二维码,applet实现方式

    applet方式实现TSC打印条码功能. applet方式打印实现复杂,最大的优点就是不用注册 dll 控件,不过现在最新的浏览器已经不支持java了,不建议使用,以下内容仅供参考. 说明: 1.ap ...

  5. delphi android 打印机,用delphi控制小票打印机打印图片

    用delphi控制小票打印机打印图片 unit PosPrintBmp; {************************************************************** ...

  6. 使用ZPL控制Zebra打印机

    ZPL简介: Zebra编程语言 (ZPL)是所有 ZPL 兼容打印机使用的命令语言.可用于绘制文本.形状.条形码和图像等元素,组合这些元素.打印机使用它作为指令来创建打印在标签上的图像. 想要打印一 ...

  7. Android 连接 TSC打印机, 打印标签(文字、图片)

    TSC选配模式有三 :以太网(WiFi).蓝牙.USB ,并提供了开发文档 1.先去官网下载,Android SDK SDK 中包含,三种模式 ,不必逐个下载了,文档中有对 接口很详细的解释 解压如下 ...

  8. JAVA调用TSC打印机打印标签(二维码,数据等)超详细!!

    本文打印机型号: TSC MA3400P 后端调用tsc打印机是通过DLL来进行调用的,首先你需要两个TSC文件直接复制到项目目录下边即可 可以直接去官网下载:https://www.chinatsc ...

  9. java 调用TSC打印机

    JNA 依赖 <dependency><groupId>com.sun.jna</groupId><artifactId>jna</artifac ...

最新文章

  1. LeetCode-双指针-88. 合并两个有序数组
  2. 【存储知识学习】第三章磁盘原理与技术3.10 固态存储介质和固态硬盘-《大话存储》阅读笔记
  3. Linux_linux常用工具---闲杂篇(除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点.)
  4. ZOJ 3631 Watashi's BG
  5. 图像分类_02神经网络(NN)简介:定义+ 感知机+历史
  6. 04_NaiveBayes_统计学习方法
  7. 盘点 | 2017 年关于 Python 的 12 件大事
  8. 计算两个经纬度之间的距离软件_小程序使用腾讯位置服务计算两地之间的距离(有源码)...
  9. 暴风影音硬件加速播放高清影片
  10. vb 链接 oracle数据库,vb 连接oracle数据库
  11. hcfax2e伺服驱动器说明书_伺服电机说明书
  12. 对比Excel学openpyxl系列之批注、文档保护、冻结窗格
  13. [Linux]history命令用法详解
  14. Prometheus+Grafana监控告警配置
  15. 运维企业实战——RHCS集群套件 实现高可用
  16. VS如何关闭控制台Console
  17. 付呗聚合支付快速教程 基础篇①——基本介绍和配置
  18. C语言学生成绩管理系统源代码
  19. cap文件的格式说明
  20. 通过URL下载HTML页面

热门文章

  1. 描述一个完美的约会_在网上约会之前,要学习发现一个骗子
  2. 激光脉冲产生发光的等离子灯丝 或使远程监控成为可能
  3. 量子计算磁共振原型机被激光脉冲原型机淘汰
  4. 数据库复习笔记-第1章绪论
  5. 高企!2022年武汉市高新技术企业奖励补贴以及申报条件汇总!
  6. 高新技术企业认证自助申请教程
  7. 【技巧】使用微信进行简单的拼接长图
  8. 结对编程——经验教训总结
  9. DNS服务之智能DNS
  10. 齐岳|脂质体磷酸钙纳米粒RNA核糖核酸|淫羊藿苷固体纳米脂质体(ICA-SLN)修饰负载RNA核糖核酸