PrinterBean.cs 3.7 KB
using System;
using System.Collections.Generic;
using System.Drawing.Imaging;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OnlineStore.Common;
using System.Windows.Forms;
using static System.Net.Mime.MediaTypeNames;
using Application = System.Windows.Forms.Application;

namespace OnlineStore.DeviceLibrary
{
    /// <summary>
    /// 打印机类
    /// </summary>
    public class PrinterBean
    {
        /// <summary>
        /// 料盘移动参数,key=料盘位置名,value=对应位置料盘移动参数
        /// </summary>
        public Dictionary<string, LabelParam> LabelParams = new Dictionary<string, LabelParam>();
        private Asa.PrintLabel print;
        ZebraPrinterHelper.ZebraManger zebraManger;
        public string IP { get; private set; }
        string labelName;
        public PrinterBean()
        {
            print = new Asa.PrintLabel(Application.StartupPath + "\\Label");
            labelName = ConfigAppSettings.GetValue("LabelName", "lizhen");
            //string[] names= print.GetLabelName();
            IP = ConfigAppSettings.GetValue("PrinterIP", "192.168.103.21");
            zebraManger = new ZebraPrinterHelper.ZebraManger(IP, ZebraPrinterHelper.ConnectionType.Network);
            Connect(out string msg);
        }
        /// <summary>
        /// 打印
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public bool Print(Label_LZ content, out string msg)
        {
            msg = "";
            bool rtn=false;
            try
            {
                //Connect(out msg);
                if (content == null)
                {
                    msg = "无贴标信息";
                    return false;
                }
                var bmp = PrintView(content);
                rtn = zebraManger?.PrintImage(bmp, out msg) ?? false;
                bmp.Dispose();
            }
            catch { }
            //finally
            //{
            //    Close();
            //}

            return rtn;
        }
        public Bitmap PrintView(Label_LZ content)
        {
            print.LoadLabel(labelName);
            Dictionary<string, string> text = new Dictionary<string, string>();
            text.Add("lh", content.pn);
            text.Add("mb", content.side);
            text.Add("jt", content.station);
            text.Add("sj", content.shijian);
            text.Add("xb", content.line);
            text.Add("zb", content.slot);
            return print.PrintPreview(text);
        }
        public bool IsReadyPrint(out string msg)
        {
            msg = "";
            try
            {
                return zebraManger?.IsPrinterReady(out msg) ?? false;
            }
            catch (Exception ex)
            {
                msg = $"IsReadyPrint Error:{ex.StackTrace}";
                return false;
            }
        }
        public void Close()
        {
            zebraManger?.Close();
        }
        /// <summary>
        /// 连接打印机
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <returns></returns>
        public bool Connect(out string msg)
        {
            msg = "";
            return zebraManger?.Connection(out msg) ?? false;
        }
        public void Connect()
        {
            zebraManger?.Connection(out string msg);
        }
        /// <summary>
        /// 剥纸器上是否有标签
        /// </summary>
        /// <returns>true:有标签</returns>
        public bool IsLabelOnPeeler()
        {
            return zebraManger?.IsLabelOnPeeler ?? true;
        }

    }
}