您现在的位置是:首页 >技术杂谈 >c#使用斑马打印机打印标签(链接数据库)网站首页技术杂谈
c#使用斑马打印机打印标签(链接数据库)
简介c#使用斑马打印机打印标签(链接数据库)
使用软件:1.系统 win10
2.打印机 斑马ZT411工业打印机(要装驱动否则电脑识别不了)
3.Visual Studio 2019
4.Sql server2012
5.BarTender 2016
目录
1.创建要连接的数据库表
2.创建打印模板
3.模板绑定数据源(数据库字段)
4.编写代码实现功能
1.创建一个数据库表
1.字段如下
2.表名如下
2.创建打印模板
1.打开bartender创建空白模板,选择对应的斑马打印机(如果没有就是没装驱动或者没连接上,检查电源,网线,usb接口)
2.添加文本和二维码
3.保存至d盘目录下,重命名"SSR"
3.绑定数据源
1.打开模板,右键这四个文本中的一个点击属性,点击如下图标红更改数据源
2.选择数据库字段后点击完成
3.点击数据库设置
4.选择创建新数据库的连接,完成后点击下一步
5.我这里用的是sql server,其他数据库也可以,选择对应的数据后点击下一步
6.选择数据库连接信息,我这里用的是windows身份验证,也可以用账户密码登录能连接上就行,下面数据库名选择刚刚创建表的数据库名
7.指定sql语句选择自定义sql语句
8.写入查询sql语句包含标签所需要的四个文本
sql如下,说下原理,调用时新增一条数据,然后模板索引最新的数据导入模板
select top 1 data1,data2,data3,data4 from labelprint order by ID desc
9. 如下图选择对应的字段,四项操作一样选择要对应的字段
5.编写代码实现功能
1.创建一个类PrintBegin来触发打印
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace barTenderDriver
{
public class PrintBegin
{
public void writeBATFile(String bartenderpath,String labelpath)
{
string fileContent = "@echo off"+"
"+ "start "" ""+ bartenderpath+ "" /F=""+labelpath+ "" /P /X /MIN"+"
"+ "pause";
//创建文件夹
if (!Directory.Exists("D:\PrintBegin"))
{
Directory.CreateDirectory("D:\PrintBegin");
}
string filePath = "D:\PrintBegin\testChange.bat";
//创建或覆盖.bat文件
if (!File.Exists(filePath))
{
FileStream fs1 = new FileStream(filePath, FileMode.Create, FileAccess.Write);//创建写入文件
StreamWriter sw = new StreamWriter(fs1);
sw.WriteLine(fileContent);//开始写入值
sw.Close();
fs1.Close();
}
else
{
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Write);
StreamWriter sr = new StreamWriter(fs);
sr.WriteLine(fileContent);//开始写入值
sr.Close();
fs.Close();
}
PrintLabelFromModel();
}
public bool PrintLabelFromModel()
{
bool state = true;
int Delaytime = 2000;
String Path1 = "D:\PrintBegin\testChange.bat";
try
{
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(Path1);
psi.RedirectStandardOutput = true;
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
System.Diagnostics.Process listFiles;
listFiles = System.Diagnostics.Process.Start(psi);
System.IO.StreamReader myOutput = listFiles.StandardOutput;
bool res = listFiles.WaitForExit(Delaytime);
if (res)
{
do
{
string ss = myOutput.ReadLine();
Console.WriteLine(ss);
if (ss.Contains("Error"))
{
state = false;
}
if (ss.Contains("按任意键继续"))
{
break;
}
} while (true);
}
else
{
state = false;
}
if (!state)
{
return state;
}
}
catch (Exception e)
{
throw e;
}
return state;
}
}
}
2.创建winform
3.代码
using System;
using System.Windows.Forms;
namespace barTenderDriver
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//批处理文件触发接口
PrintBegin begin = new PrintBegin();
//数据库接口
DBbase db = new DBbase();
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
//每次使用时添加新数据到数据库
db.NonQuery("insert into labelprint(data1,data2,data3,data4) values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "')");
//批处理文件路径
begin.writeBATFile(textBox5.Text, textBox6.Text);
}
private void button2_Click(object sender, EventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Multiselect = false;//是否可以选择多个文件
dialog.Title = "请选择文件";
dialog.Filter = "所有文件(*.*)|*.*";//选择某种类型的文件
//dialog.Filter = "图像文件(*.BMP,*.PNG,*.JPG)|*.BMP;*.PNG;*.JPG";|后面的为滤波器,文件类型;|前面的为注释
if (dialog.ShowDialog() == DialogResult.OK)
{
string filename = dialog.FileName;
textBox5.Text = filename;
}
}
private void button3_Click(object sender, EventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Multiselect = false;//是否可以选择多个文件
dialog.Title = "请选择文件";
dialog.Filter = "所有文件(*.*)|*.*";//选择某种类型的文件
if (dialog.ShowDialog() == DialogResult.OK)
{
string filename = dialog.FileName;
textBox6.Text = filename;
}
}
}
}
4.效果如下
感谢观看(O.o)
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。