C#打印条码到Zebra打印机
来源:互联网 发布:ubuntu怎么杀死进程 编辑:程序博客网 时间:2024/06/10 22:23
建立一个winform程序,添加两个textbox,一个button。 其中一个textbox设为允许多行 textbox1, 一个为txtport,
新增一个类文件
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.InteropServices;namespace WinForm_Print{ public class PrinterControl { [StructLayout(LayoutKind.Sequential)] private struct OVERLAPPED { int Internal; int InternalHigh; int Offset; int OffSetHigh; int hEvent; } [DllImport("kernel32.dll ")] private static extern int CreateFile( string lpFileName, uint dwDesiredAccess, int dwShareMode, int lpSecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, int hTemplateFile ); [DllImport("kernel32.dll ")] private static extern bool WriteFile( int hFile, byte[] lpBuffer, int nNumberOfBytesToWrite, out int lpNumberOfBytesWritten, out OVERLAPPED lpOverlapped ); [DllImport("kernel32.dll ")] private static extern bool CloseHandle( int hObject ); private int iHandle; public bool Open(string strPort) { iHandle = CreateFile(strPort, 0x40000000, 0, 0, 3, 0, 0); if (iHandle != -1) { return true; } else { return false; } } public bool Write(String Mystring) { if (iHandle != -1) { int i; OVERLAPPED x; byte[] mybyte = System.Text.Encoding.Default.GetBytes(Mystring); return WriteFile(iHandle, mybyte, mybyte.Length, out i, out x); } else { throw new Exception("端口未打开! "); } } public bool Close() { return CloseHandle(iHandle); } }}
write函数也可为, 其中的 iHandle 要改为 IntPtr 类型
public bool Write(String Mystring) { if (iHandle.ToInt32() != -1) { int i; OVERLAPPED x; FileStream fs = new FileStream(iHandle, FileAccess.ReadWrite); StreamWriter sw = new StreamWriter(fs, Encoding.Default); sw.WriteLine(Mystring); sw.Close(); fs.Close(); return true; } else { throw new Exception("端口未打开! "); } }
button后台代码为
private void button1_Click(object sender, EventArgs e) { //printDialog1.Document = printDocument1; //DialogResult result = printDialog1.ShowDialog(); //if (result == DialogResult.OK) //printDocument1.Print(); PrinterControl lpt = new PrinterControl(); string mycommanglines = textBox1.Text;//System.IO.File.ReadAllText("zplII.txt");//zplII.txt里写了条码机的命令 lpt.Open(txtPort.Text); lpt.Write(mycommanglines).ToString(); lpt.Close(); }
打印中文方法
1.调用函数GETFONTHEX()该函数的功能是将传入的中文字符串转换为十六进制编码并返回。
2.函数使用的C#原型
[DllImport("fnthex32.dll")]public static extern int GETFONTHEX(string barcodeText,string fontName,string fileName,int orient,int height,int width,int isBold,int isItalic,StringBuilder returnBarcodeCMD);
3.实例
调用下面条码指令打印会打印“测试”二个汉字)
string sBarCodeCMD = string.Empty; //条码打印命令StringBuilder sb1 = new StringBuilder(10240); //用给定的容量创建一个空的StringBuilderint li = GETFONTHEX(“测试”,“宋体”,“temp1”,0,30,20,0,0,sb1); //转换为HEX编码(16进制)sBarCodeCMD = sb1.ToString() + "^XA^MD30^LH20,20^FO20,20^XGtemp1,1,1^FS^XZ";
http://wenku.baidu.com/view/83387ceb172ded630a1cb605.html
http://hi.baidu.com/sunflower/item/3544cd9e56bf28dc1e427169
http://wenku.baidu.com/view/9e4a8d65caaedd3383c4d3d6.html 含中文打印- C#打印条码到Zebra打印机
- Zebra条码打印机汉字价签打印完全解决方案
- C#直接发送打印机命令到打印机及ZPL常用打印命令 - 条码打印机
- Java调用Zebra条码打印机打印条码、中英文数字条码混合标签,可自由控制格式和排版
- Java调用Zebra条码打印机打印条码、中英文数字条码混合标签,可自由控制格式和排版(2)
- Java调用Zebra条码打印机打印条码、中英文数字条码混合标签,可自由控制格式和排版
- Java调用Zebra条码打印机打印条码、中英文数字条码混合标签,可自由控制格式和排版(2)
- C#生成条码图片,并用条码打印机打印
- VB.net输出数据至Zebra打印机打印条码的程序
- Zebra 条码打印机应用开发实践
- [Printer]Zebra条码打印机的使用
- 分享 tsc 条码打印机 打印控件 调用方法 , c# silverlight
- c#通过txt文档利用打印机命令打印条码标签
- lodop 调用打印机打印条码
- 条码打印机编程使用方法 C#
- C#条码打印
- 用 LQ-1600 打印机打印 I25 条码
- 使用JNative对条码打印机进行打印
- 我的需求
- LinQ to Entities(3)
- Window2003 64位IIS 连接ACCESS 报错“Microsoft.Jet.OLEDB.4.0”
- Oracle Sequence
- 在Android系统中添加一款新铃声
- C#打印条码到Zebra打印机
- Photon学习笔记
- Android电源管理之一:基础概览
- 直接插入排序
- Gson
- POJ 2891 解一元线性同余方程组
- 搭建自己的SVN服务器
- 多线程编程浅析(3)——多线程的互斥与同步
- JNI 资源释放