实例介绍
【实例简介】
【实例截图】
【核心代码】
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Drawing.Printing;
using System.Management;
namespace PrintTSCG310
{
public partial class Form1 : Form
{
private Label lblPrinteres, lblStart, lblEnd, lblMsg, lblFenshu;
private NumericUpDown nudStart, nudEnd, nudFenshu;
private Button btnPrint;
public Form1()
{
InitializeComponent();
Initial();
this.Load = new EventHandler(Form1_Load);
this.FormClosed = new FormClosedEventHandler(Form1_FormClosed);
}
void Initial()
{
this.Text = "批量打印条形码";
lblPrinteres = label1;
lblPrinteres.Text = "打印机:";
btnPrint =button1;
btnPrint.Text = "打印";
nudStart=numericUpDown1;
nudStart.Value=1;
nudStart.ValueChanged = new EventHandler(nudStart_ValueChanged);
nudEnd=numericUpDown2;
nudEnd.Value=19;
nudEnd.ValueChanged = new EventHandler(nudEnd_ValueChanged);
nudFenshu = numericUpDown3;
nudFenshu.Value = 1;
lblStart = label2;
lblStart.Text = "起始编号";
lblEnd = label3;
lblEnd.Text = "结束编号";
lblMsg = label4;
lblMsg.Text = "从CCD-" nudStart.Value.ToString("00") "到CCD-" nudEnd.Value.ToString("00");
lblFenshu = label5;
lblFenshu.Text = "份数";
}
void nudEnd_ValueChanged(object sender, EventArgs e)
{
if (nudStart.Value > nudEnd.Value)
{
MessageBox.Show("起始值不能大于结束值");
nudEnd.Value = nudStart.Value;
}
lblMsg.Text = "从CCD-" nudStart.Value.ToString("00") "到CCD-" nudEnd.Value.ToString("00");
}
void nudStart_ValueChanged(object sender, EventArgs e)
{
if (nudStart.Value > nudEnd.Value)
{
MessageBox.Show("起始值不能大于结束值");
nudStart.Value = nudEnd.Value;
}
lblMsg.Text = "从CCD-" nudStart.Value.ToString("00") "到CCD-" nudEnd.Value.ToString("00");
}
void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
// 关闭 打印机 端口
TSCLIB_DLL.closeport();
}
void Form1_Load(object sender, EventArgs e)
{
//遍历本台电脑所加载的打印机
foreach (String printer in PrinterSettings.InstalledPrinters)
{
comboBox1.Items.Add(printer.ToString());
}
comboBox1.SelectedIndex = 0;
}
#region 打开TSC打印机
public static void TSCOpen(string p_port)
{
// 打开 打印机 端口.
TSCLIB_DLL.openport(p_port);
// 设置标签 宽度、高度 等信息.
// 宽 64mm 高 10mm
// 速度为4
// 字体浓度为8
// 使用垂直間距感測器(gap sensor)
// 两个标签之间的 间距为 3.5mm
TSCLIB_DLL.setup("64", "10", "4", "15", "0", "1.5", "0");
// 清除缓冲信息
TSCLIB_DLL.clearbuffer();
// 发送 TSPL 指令.
// 设置 打印的方向.
TSCLIB_DLL.sendcommand("DIRECTION 1");
}
#endregion
#region 调用TSC打印机打印条码
/// <summary>
/// 调用TSC打印机打印条码
/// </summary>
/// <param name="str">打印的内容</param>
/// <param name="a">设定打印卷标式数</param>
/// <param name="b">设定打印卷标份数</param>
public static void TSC(string str,string a,string b)
{
#region 打印条码的方法一
// printerfont(a,b,c,d,e,f,g)
//说明: 使用条形码机内建文字打印
//参数:
//a: 字符串型别,文字X方向起始点,以点(point)表示。
//(200 DPI,1点=1/8 mm, 300 DPI,1点=1/12 mm)
//b: 字符串型别,文字Y方向起始点,以点(point)表示。
//(200 DPI,1点=1/8 mm, 300 DPI,1点=1/12 mm)
// c: 字符串型别,内建字型名称,共12种。
// 1: 8*/12 dots
// 2: 12*20 dots
// 3: 16*24 dots
// 4: 24*32 dots
// 5: 32*48 dots
// TST24.BF2: 繁体中文24*24
// TST16.BF2: 繁体中文16*16
// TTT24.BF2: 繁体中文24*24 (电信码)
// TSS24.BF2: 简体中文24*24
// TSS16.BF2: 简体中文16*16
// K: 韩文 24*24
// L: 韩文 16*16
//d: 字符串型别,设定文字旋转角度
// 0: 旋转0度
// 90: 旋转90度
// 180: 旋转180度
// 270: 旋转270度
//e: 字符串型别,设定文字X方向放大倍率,1~8
//f: 字符串型别,设定文字X方向放大倍率,1~8
//g: 字符串型别,打印文字内容
#endregion
#region 打印条码的方法二
/*
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: 字符串型别,打印文字内容。
*/
TSCLIB_DLL.windowsfont(250, 70, 40, 0, 2, 0, "宋体", str);
#endregion
// printlabel(a,b)
// 说明: 打印卷标内容
//参数:
//a: 字符串型别,设定打印卷标式数(set)
//b: 字符串型别,设定打印卷标份数(copy)
TSCLIB_DLL.printlabel(a, b);
}
#endregion
private void button1_Click(object sender, EventArgs e)
{
if (comboBox1.Items.Count != 0)
{
TSCOpen(comboBox1.SelectedItem.ToString());
// TSC("CCD-13 CCD-13", "1", nudFenshu.Value.ToString());
for (int i = Convert.ToInt32(nudStart.Value); i <= Convert.ToInt32(nudEnd.Value); i )
{
TSC("CCD-" i.ToString("00") " CCD-" i.ToString("00"), "1", nudFenshu.Value.ToString());
// 清除缓冲信息
TSCLIB_DLL.clearbuffer();
}
// 关闭 打印机 端口
TSCLIB_DLL.closeport();
}
}
/// <summary>
/// 调用tsclib.dll
/// </summary>
public class TSCLIB_DLL
{
// about()
//说明: 显示DLL 版本号码
//参数: 无
[DllImport("TSCLIB.dll", EntryPoint = "about")]
public static extern int about();
//openport(a)
// 说明: 指定计算机端的输出端口
// 参数:
// a: 单机打印时,请指定打印机驱动程序名称,例如: TSC CLEVER TTP-243
// 若连接打印机服务器,请指定服务器路径及共享打印机名称,例如: \\SERVER\TTP243
[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);
//clearbuffer()
//说明: 清除
//参数: 无
[DllImport("TSCLIB.dll", EntryPoint = "clearbuffer")]
public static extern int clearbuffer();
[DllImport("TSCLIB.dll", EntryPoint = "closeport")]
public static extern int closeport();
//downloadpcx(a,b)
//说明:下载单色PCX 格式图文件至打印机
//参数:
// a: 字符串型别,文件名(可包含路径)
// b: 字符串型别,下载至打印机内存内之文件名(请使用大写档名)
[DllImport("TSCLIB.dll", EntryPoint = "downloadpcx")]
public static extern int downloadpcx(string filename, string image_name);
// formfeed()
//说明: 跳页,该函式需在setup后使用
//参数: 无
[DllImport("TSCLIB.dll", EntryPoint = "formfeed")]
public static extern int formfeed();
// nobackfeed()
//说明: 设定纸张不回吐
//参数: 无
[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);
//sendcommand(command)
//说明: 送内建指令到条形码打印机
//参数: 详细指令请参考TSPL
[DllImport("TSCLIB.dll", EntryPoint = "sendcommand")]
public static extern int sendcommand(string printercommand);
[DllImport("TSCLIB.dll", EntryPoint = "setup")]
public static extern int setup(string width, string height,
string speed, string density,
string sensor, string vertical,
string offset);
[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);
}
#region 调用TSC1打印机打印一维码
/// <summary>
/// 调用TSC打印机打印条码
/// </summary>
/// <param name="title">打印的标题</param>
/// <param name="barCode">打印的条码编号</param>
public static void TSC1(string title, string barCode)
{
/*
barcode(a,b,c,d,e,f,g,h,I)
说明: 使用条形码机内建条形码打印
参数:
a: 字符串型别,条形码X方向起始点,以点(point)表示。
(200 DPI,1点=1/8 mm, 300 DPI,1点=1/12 mm)
b: 字符串型别,条形码Y方向起始点,以点(point)表示。
(200 DPI,1点=1/8 mm, 300 DPI,1点=1/12 mm)
c: 字符串型别,
128 Code 128, switching code subset A, B, C
automatically
128M Code 128, switching code subset A, B, C
manually.
EAN128 Code 128, switching code subset A, B, C
automatically
25 Interleaved 2 of 5
25C Interleaved 2 of 5 with check digits
39 Code 39
39C Code 39 with check digits
93 Code 93
EAN13 EAN 13
EAN13 2 EAN 13 with 2 digits add-on
EAN13 5 EAN 13 with 5 digits add-on
EAN8 EAN 8
EAN8 2 EAN 8 with 2 digits add-on
EAN8 5 EAN 8 with 5 digits add-on
CODA Codabar
POST Postnet
UPCA UPC-A
UPCA 2 UPC-A with 2 digits add-on
UPCA 5 UPC-A with 5 digits add-on
UPCE UPC-E
UPCE 2 UPC-E with 2 digits add-on
UPCE 5 UPC-E with 5 digits add-on
d: 字符串型别,设定条形码高度,高度以点来表示
e: 字符串型别,设定是否打印条形码码文
0: 不打印码文
1: 打印码文
f: 字符串型别,设定条形码旋转角度
0: 旋转0度
90: 旋转90度
180: 旋转180度
270: 旋转270度
g: 字符串型别,设定条形码窄bar 比例因子,请参考TSPL使用手册
h: 字符串型别,设定条形码窄bar 比例因子,请参考TSPL使用手册
I: 字符串型别,条形码内容
*/
TSCLIB_DLL.barcode("176", "66", "39", "130", "1", "0", "7", "12", barCode);
// 打印.
TSCLIB_DLL.printlabel("1", "1");
}
#endregion
#region 调用TSC2打印机打印二维码
/// <summary>
/// 调用TSC打印机打印二维码
/// </summary>
/// <param name="title">打印的标题</param>
/// <param name="barCode">打印的条码编号</param>
public static void TSC2(string title, string barCode)
{
#region 请求sendcommand指令,打印二维码
//功能:繪製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 條碼資料內容
#endregion
string command = "QRCODE 176,8,Q,8,A,0,M2,S7,\"" barCode "\"";
TSCLIB_DLL.sendcommand(command);
// 打印文本信息.
// 在 (176, 8) 的坐标上
// 字体高度为34
// 旋转的角度为 0 度
// 2 表示 粗体.
// 文字没有下划线.
// 字体为 黑体.
// 打印的内容为:title
//---------------------------------根据需要再添加
//TSCLIB_DLL.windowsfont(176, 8, 34, 0, 2, 0, "宋体", title);
// 打印条码.
// 在 (176, 66) 的坐标上
// 以 Code39 的条码方式
// 条码高度 130
// 打印条码的同时,还打印条码的文本信息.
// 旋转的角度为 0 度
// 条码 宽 窄 比例因子为 7:12
// 条码内容为:barCode
//TSCLIB_DLL.barcode("176", "66", "39", "130", "1", "0", "7", "12", barCode);
// 打印.
TSCLIB_DLL.printlabel("1", "1");
}
#endregion
}
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论