PrinterHelper.cs
5.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Drawing.Imaging;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DeviceLibrary
{
public class PrinterHelper
{
private Asa.PrintLabel print;
ZebraPrinterHelper.ZebraManger zebraManger;
string Port;
public PrinterHelper() {
print = new Asa.PrintLabel(Application.StartupPath + "\\Label",300);
}
public bool Connection(string port) {
Port = port;
if (port.ToLower() == "usb")
zebraManger = new ZebraPrinterHelper.ZebraManger("", ZebraPrinterHelper.ConnectionType.UsbDirect);
else
if (port.ToLower().Contains("tsc"))
{
zebraManger = null;
print = new Asa.PrintLabel(Application.StartupPath + "\\Label", 100);
print.Printer(port, false);
return true;
}
else
zebraManger = new ZebraPrinterHelper.ZebraManger(Port, ZebraPrinterHelper.ConnectionType.Network);
if (!zebraManger.Connection(out string msg))
{
LogUtil.error(msg);
return false;
}
else
return true;
}
public void Close() {
zebraManger.Close();
}
public void EditLabel() {
print.EditLabel();
}
public string[] GetLabelList() {
return print.GetLabelName();
}
public Task<(bool,string)> PrintLabel(ReelParam reel,string labelname)
{
return Task.Run(() =>
{
//string labelname = Setting_Init.Printer_Labelname;
Dictionary<string, string> data = new Dictionary<string, string>();
data.Add("PN", reel.PN);
data.Add("LOT", reel.LOT);
data.Add("EXP", reel.EXP);
data.Add("SN", reel.SN);
data.Add("Time1", DateTime.Now.ToString("MM-dd-yyyy HH:mm:ss"));
data.Add("Time2", DateTime.Now.AddHours(4).ToString("MM-dd-yyyy HH:mm:ss"));
data.Add("Time3", DateTime.Now.AddHours(5*24+4).ToString("MM-dd-yyyy HH:mm:ss"));
data.Add("datetime", DateTime.Now.ToString());
LogUtil.info($"打印标签:{reel.ToDetailStr()}");
var result = Print(labelname, data, out string msg);
//Task.Delay(500).Wait();
return (result,msg);
});
}
bool Print(string labelname,Dictionary<string, string> data,out string msg) {
msg = "";
print.LoadLabel(labelname);
if (zebraManger != null)
{
var bmp = print.PrintPreview(data);
//LogUtil.info("标签图像生成");
//bmp.Save("currentlabel.bmp");
try
{
//if (!zebraManger.PrintImage(bmp,bmp.Width*3, bmp.Height * 3, out msg, false))
if (!zebraManger.PrintImage(bmp, out msg, false))
{
LogUtil.error(msg);
return false;
}
}
catch (Exception ex)
{
LogUtil.error(ex.ToString());
return false;
}
finally
{
bmp.Dispose();
}
}
else
{
print.Print(data);
}
return true;
}
public Task<(bool, string)> IsLabelOnPeeler()
{
return Task.Run(() =>
{
return (zebraManger.IsLabelOnPeeler,"");
});
}
public Bitmap ConvertTo24bppTo1bpp(Bitmap SrcImg)
{
unsafe
{
byte* SrcPointer, DestPointer;
int Width, Height, SrcStride, DestStride;
int X, Y, Index, Sum; ;
Bitmap DestImg = new Bitmap(SrcImg.Width, SrcImg.Height, PixelFormat.Format1bppIndexed);
BitmapData SrcData = new BitmapData();
SrcImg.LockBits(new Rectangle(0, 0, SrcImg.Width, SrcImg.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb, SrcData);
BitmapData DestData = new BitmapData();
DestImg.LockBits(new Rectangle(0, 0, SrcImg.Width, SrcImg.Height), ImageLockMode.ReadWrite, PixelFormat.Format1bppIndexed, DestData);
Width = SrcImg.Width; Height = SrcImg.Height; SrcStride = SrcData.Stride; DestStride = DestData.Stride;
for (Y = 0; Y < Height; Y++)
{
SrcPointer = (byte*)SrcData.Scan0 + Y * SrcStride;
DestPointer = (byte*)DestData.Scan0 + Y * DestStride;
Index = 7; Sum = 0;
for (X = 0; X < Width; X++)
{
if (*SrcPointer + (*(SrcPointer + 1) << 1) + *(SrcPointer + 2) >= 512) Sum += (1 << Index);
if (Index == 0)
{
*DestPointer = (byte)Sum;
Sum = 0;
Index = 7;
DestPointer++;
}
else
Index--;
SrcPointer += 3;
}
if (Index != 7) *DestPointer = (byte)Sum;
}
SrcImg.UnlockBits(SrcData);
DestImg.UnlockBits(DestData);
return DestImg;
}
}
}
}