您现在的位置是:首页 >技术杂谈 >c#使用斑马打印机打印标签(链接数据库)网站首页技术杂谈

c#使用斑马打印机打印标签(链接数据库)

加斯特度伊特 2024-08-16 00:01:02
简介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)

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。