Files
ATV_STDLabelAttach/Handler/Project/Dialog/fManualPrint.cs
atvstdla a34dbecfb9 ..
2025-09-25 08:23:36 +09:00

231 lines
7.2 KiB
C#

using Emgu.CV.OCR;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using AR;
namespace Project.Dialog
{
public partial class fManualPrint : Form
{
bool ReprintMode = false;
public fManualPrint()
{
InitializeComponent();
this.FormClosed += FManualPrint_FormClosed;
}
public fManualPrint(string sid, string lot, string qty, string mfg, string rid, string spy, string pn)
{
InitializeComponent();
this.FormClosed += FManualPrint_FormClosed;
this.tbSID.Text = sid;
this.tbVLot.Text = lot;
this.tbQty.Text = qty;
this.tbDate.Text = mfg;
this.tbRID.Text = rid;
this.tbSPY.Text = spy;
this.tbPN.Text = pn;
chkDelinfo.Enabled = false;
chkDelinfo.Checked = false;
tbBarcodeInput.Enabled = false;
this.ReprintMode = true;
}
private void fManualPrint_Load(object sender, EventArgs e)
{
var lockvalue = true;
PUB.iLock[(int)eAxis.PZ_PICK].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK");
PUB.iLock[(int)eAxis.Z_THETA].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK");
PUB.iLock[(int)eAxis.PX_PICK].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK");
PUB.iLock[(int)eAxis.PL_MOVE].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK");
PUB.iLock[(int)eAxis.PR_MOVE].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK");
if (ReprintMode) button1.Focus();
else tbBarcodeInput.Focus();
}
private void FManualPrint_FormClosed(object sender, FormClosedEventArgs e)
{
//PUB.LockPKT.set((int)eILockPKX.MPrint, false, "COMMINTERLOCK");
var lockvalue = false;
PUB.iLock[(int)eAxis.PZ_PICK].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK");
PUB.iLock[(int)eAxis.Z_THETA].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK");
PUB.iLock[(int)eAxis.PX_PICK].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK");
PUB.iLock[(int)eAxis.PL_MOVE].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK");
PUB.iLock[(int)eAxis.PR_MOVE].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK");
}
private void btPrint_Click(object sender, EventArgs e)
{
//프린트해야한다
string zpl = "";
string qrdata = "";
var Printer = radLeft.Checked ? PUB.PrinterL : PUB.PrinterR;
var sid = tbSID.Text.Trim();
var rid = tbRID.Text.Trim();
var lot = tbVLot.Text.Trim();
var mfg = tbDate.Text.Trim();
var qty = tbQty.Text.Trim();
var spy = tbSPY.Text.Trim();
var pan = tbPN.Text.Trim();
if (int.TryParse(qty, out int vqty) == false)
{
UTIL.MsgE("Please enter quantity as a number");
tbQty.SelectAll();
tbQty.Focus();
return;
}
zpl = Printer.makeZPL_210908(new Class.Reel
{
SID = sid,
venderLot = lot,
venderName = spy,
qty = vqty,
id = rid,
mfg = mfg,
PartNo = pan,
}, SETTING.Data.DrawOutbox, out qrdata);
var cnt = (int)nudCnt.Value;
for (int i = 0; i < cnt; i++)
{
var prn = Printer.Print(zpl);
if (prn.result == false)
{
//인쇄실패시 처리하지 않음
PUB.log.AddE(prn.errmessage);
UTIL.MsgE("Cannot proceed further due to printing failure");
break;
}
else
{
if (i == 0) //첫장만 로깅
PUB.log.Add("User print completed" + string.Join("|", new string[] { sid, lot, spy, qty, rid, mfg, pan }));
}
System.Threading.Thread.Sleep(100);
}
if (ReprintMode) DialogResult = DialogResult.OK;
else
{
//자료를 삭제해야한다
if (chkDelinfo.Checked)
{
ClearData(tbSID, tbVLot, tbQty, tbDate, tbRID, tbSPY, tbPN);
tbSID.Focus();
}
}
}
void ClearData(params TextBox[] tbs)
{
foreach (var tb in tbs)
{
tb.Text = "";
tb.Focus();
}
}
private void button1_Click(object sender, EventArgs e)
{
//sid
ClearData(tbSID);
}
private void button2_Click(object sender, EventArgs e)
{
//vlot
ClearData(tbVLot);
}
private void button3_Click(object sender, EventArgs e)
{
//qty
ClearData(tbQty);
}
private void button4_Click(object sender, EventArgs e)
{
//date
ClearData(tbDate);
}
private void button5_Click(object sender, EventArgs e)
{
//rid
ClearData(tbRID);
}
private void button6_Click(object sender, EventArgs e)
{
//spy
ClearData(tbSPY);
}
private void button7_Click(object sender, EventArgs e)
{
//pn
ClearData(tbPN);
}
private void tbSID_Click(object sender, EventArgs e)
{
var tb = sender as TextBox;
var rlt = AR.UTIL.InputBox("Please enter a value", tb.Text, AR.UTIL.eInputbox.TouchFullSingleLine);
if (rlt.Item1) tb.Text = rlt.Item2;
}
private void button8_Click(object sender, EventArgs e)
{
tbSPY.Text = "N/A";
}
private void button9_Click(object sender, EventArgs e)
{
tbPN.Text = "N/A";
}
private void tbBarcodeInput_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
var buf = tbBarcodeInput.Text.Trim().Split(';');
if (buf.Length != 7)
{
UTIL.MsgE("Barcode data does not contain 7 elements");
tbBarcodeInput.SelectAll();
return;
}
if (int.TryParse(buf[3], out var code) == false)
{
UTIL.MsgE("The 4th data (quantity) is not a number\nOnly Amkor STD barcodes are allowed");
return;
}
tbSID.Text = buf[0];
tbVLot.Text = buf[1];
tbSPY.Text = buf[2];
tbQty.Text = buf[3];
tbRID.Text = buf[4];
tbDate.Text = buf[5];
tbPN.Text = buf[6];
tbBarcodeInput.SelectAll();
tbBarcodeInput.Focus();
}
}
}
}