This commit is contained in:
atvstdla
2025-09-30 17:35:11 +09:00
parent 5a2eeed3c4
commit 1273ca8236
37 changed files with 1333 additions and 1033 deletions

View File

@@ -41,7 +41,10 @@ namespace Project
// PUB.logKeyence.Add($"{resp.Replace("\n", "").Replace("\r", "")}");
var rawdata = e.RawData; //↔▲▼
rawdata = rawdata.Replace('\x1D', '↔').Replace('\x1E', '▲').Replace('\x04', '▼');
ParseBarcode(rawdata, dev.Tag.ToString());
var lines = rawdata.Split(new char[] { '\r' },StringSplitOptions.RemoveEmptyEntries);
foreach(var line in lines)
ParseBarcode(line, dev.Tag.ToString());
}
else
{
@@ -132,6 +135,8 @@ namespace Project
void ParseBarcode(string response, string Source)
{
//220901 - 특문있었ㅇ츰
var r1 = (char)0x1D;
var r2 = (char)0x1E;

View File

@@ -58,7 +58,17 @@ namespace Project
groupBox2.Text = "Barcode";
}
btAutoReelOut.BackColor = PUB.Result.AutoReelOut ? Color.Lime : SystemColors.Control;
if((VAR.BOOL?.Get(eVarBool.Use_Conveyor) ?? false) == true)
{
btAutoReelOut.BackColor = PUB.Result.AutoReelOut ? Color.Lime : SystemColors.Control;
btAutoReelOut.Visible = true;
}
else
{
btAutoReelOut.Visible = false;
}
groupBox1.Text = $"Equipment Operation({PUB.sm.Loop_ms:N0}ms)";
//릴사이즈가 맞지 않으면 깜박인다.
if (DIO.getCartSize(1) != eCartSize.None)

View File

@@ -42,7 +42,7 @@ namespace Project
btLightRoom.BackColor = DIO.GetIOOutput(eDOName.ROOMLIGHT) ? Color.Gold : SystemColors.Control;
//상태를 DB에 저장한다.
EEMStatus.UpdateStatusSQL(PUB.sm.Step);
//EEMStatus.UpdateStatusSQL(PUB.sm.Step);
//컨베이어 가동시간계싼
if(DIO.GetIOOutput(eDOName.LEFT_CONV) && VAR.TIME[eVarTime.CONVL_START].Year != 1982)

View File

@@ -113,7 +113,7 @@ namespace Project
}
//Auto Reel Out 250926
PUB.Result.AutoReelOut = PUB.Result.vModel.AutoOutConveyor>0;
PUB.Result.AutoReelOut = PUB.Result.vModel.AutoOutConveyor > 0;
//공용변수초기화
PUB.log.Add("Common variable (count) values initialized");
@@ -140,9 +140,13 @@ namespace Project
PUB.Result.ItemDataR.Clear("START_CHKSW");
var modelName = PUB.Result.vModel.Title;
PUB.Result.BCDPattern = PUB.GetPatterns(modelName, false);
PUB.Result.BCDIgnorePattern = PUB.GetPatterns(modelName, true);
PUB.log.Add($"Model pattern loading: {PUB.Result.BCDPattern.Count}/{PUB.Result.BCDIgnorePattern.Count}");
lock (PUB.Result.BCDPatternLock)
{
PUB.Result.BCDPattern = PUB.GetPatterns(modelName, false);
PUB.Result.BCDIgnorePattern = PUB.GetPatterns(modelName, true);
PUB.log.Add($"Model pattern loading: {PUB.Result.BCDPattern.Count}/{PUB.Result.BCDIgnorePattern.Count}");
}
//변환SID SID확인여부데이터 삭제
PUB.Result.DTSidConvertEmptyList.Clear();

View File

@@ -979,7 +979,7 @@ namespace Project
if (errmsg.Length > 190) errmsg = errmsg.Substring(0, 190); //230810 maxlength error
SaveData_EE(item, (target == eWorkPort.Left ? "L" : "R"), (rlt ? "OK" : errmsg), "root_sequence");
//RefreshList(); //목록업데이트
EEMStatus.AddStatusCount(1, $"{item.VisionData.SID}|{item.VisionData.RID}"); //eem 추가 230620
//EEMStatus.AddStatusCount(1, $"{item.VisionData.SID}|{item.VisionData.RID}"); //eem 추가 230620
PUB.sm.seq.Update(cmdIndex);
return false;
}

View File

@@ -163,8 +163,8 @@ namespace Project
}
var prcResult = BCDProcess_ALL(itemC, "SEQ",true);
if (prcResult != EResultKeyence.Nothing)
var prcResult = BCDProcess_ALL(itemC, "SEQ", true);
if (prcResult != EResultKeyence.Nothing)
return prcResult;
PUB.sm.seq.Update(cmdIndex);
@@ -204,6 +204,18 @@ namespace Project
return;
}
//처음작업이면 반드시 확인을 한다
if (OPT_BYPASS == false && PUB.Result.JobFirst)
{
//사용자확인이 필요없는 상태라면 활성화해준다
//프린트를 하지 않는다면 처리하지 않는다.
if (VAR.BOOL[eVarBool.Opt_DisablePrinter] == false)
{
if (mainjob && item.VisionData.bcdMessage.ContainsKey(6) == false) item.VisionData.bcdMessage.Add(6, "First reel confirmation required");
NeedConfirm = true;
}
}
//서버의수량업데이트기능
if (OPT_BYPASS == false && VAR.BOOL[eVarBool.Opt_ServerQty])
{
@@ -227,7 +239,8 @@ namespace Project
{
if (mainjob) PUB.log.AddE($"Quantity update failed rID:{item.VisionData.RID}, Message={msg}");
NeedConfirm = true;
if (mainjob) item.VisionData.bcdMessage.Add("Quantity update failed");
if (mainjob && item.VisionData.bcdMessage.ContainsKey(1) == false)
item.VisionData.bcdMessage.Add(1, "Quantity update failed");
}
}
}
@@ -248,27 +261,24 @@ namespace Project
}
else
{
if (mainjob) item.VisionData.bcdMessage.Add("RQ value error (auto mode not possible)");
if (mainjob && item.VisionData.bcdMessage.ContainsKey(2) == false) item.VisionData.bcdMessage.Add(2, "RQ value error (auto mode not possible)");
NeedConfirm = true;
}
}
else
{
if (mainjob) item.VisionData.bcdMessage.Add("Manual quantity input required");
if (mainjob && item.VisionData.bcdMessage.ContainsKey(3) == false) item.VisionData.bcdMessage.Add(3, "Manual quantity input required");
NeedConfirm = true;
}
}
//프린트위치확인
BCDProcess_BCDPrint(item);
if (item.VisionData.PrintPositionData.isEmpty() == true || item.VisionData.PrintPositionCheck == false)
{
if (NeedConfirm == false)
{
//현작업내에서의 정보를 찾아서 적용한다 231005
if (mainjob) item.VisionData.bcdMessage.Add("Attachment position not found");
NeedConfirm = true;
}
if (mainjob && item.VisionData.bcdMessage.ContainsKey(4) == false) item.VisionData.bcdMessage.Add(4, "Attachment position not found");
NeedConfirm = true;
}
//SID 존재여부 확인
@@ -298,40 +308,33 @@ namespace Project
}
else SIDOK = (item.VisionData.SID_Trust && item.VisionData.SID.isEmpty() == false); //시드변환을 사용하지 않으므로 시드값여부에따라 다르다
//사용자확인이 필요한 옵션이라면 사용한다
if (OPT_BYPASS == false && VAR.BOOL[eVarBool.Opt_UserConfim])
//수량확인
if (OPT_BYPASS == false)
{
if (NeedConfirm == false)
if(double.TryParse(item.VisionData.QTY,out double qtyvalue)==false)
{
if (mainjob) item.VisionData.bcdMessage.Add("User confirmation required");
if (mainjob && item.VisionData.bcdMessage.ContainsKey(8) == false) item.VisionData.bcdMessage.Add(8, "Qty invalid");
NeedConfirm = true;
}
}
//처음작업이면 반드시 확인을 한다
if (OPT_BYPASS == false && PUB.Result.JobFirst)
//사용자확인이 필요한 옵션이라면 사용한다
if (OPT_BYPASS == false && VAR.BOOL[eVarBool.Opt_UserConfim])
{
//사용자확인이 필요없는 상태라면 활성화해준다
if (NeedConfirm == false)
{
//프린트를 하지 않는다면 처리하지 않는다.
if (VAR.BOOL[eVarBool.Opt_DisablePrinter] == false)
{
if (mainjob) item.VisionData.bcdMessage.Add("First reel confirmation required");
NeedConfirm = true;
}
}
if (mainjob && item.VisionData.bcdMessage.ContainsKey(5) == false) item.VisionData.bcdMessage.Add(5, "User confirmation required");
NeedConfirm = true;
}
//변환작업인데 원본 값이 없다.
//혹은 변환값과 원본이 같다
if (OPT_BYPASS == false && VAR.BOOL[eVarBool.Opt_SIDConvert] && (item.VisionData.SID0.isEmpty() == true || item.VisionData.SID0 == item.VisionData.SID))
{
if (NeedConfirm == false)
{
if (mainjob) item.VisionData.bcdMessage.Add("SID conversion value confirmation required");
NeedConfirm = true;
}
if (mainjob && item.VisionData.bcdMessage.ContainsKey(7) == false) item.VisionData.bcdMessage.Add(7, "SID conversion value confirmation required");
NeedConfirm = true;
}
//데이터의 신뢰성을 확인하고 모두 입력되었다면 자동 확정을 진행한다
@@ -362,13 +365,10 @@ namespace Project
}
else if (item.VisionData.QRInputRaw.isEmpty() == false)
{
if (NeedConfirm == false)
if (mainjob)
{
if (mainjob)
{
NeedConfirm = true;
PUB.log.AddAT($"Data incomplete but QR has been read, showing confirmation window immediately");
}
NeedConfirm = true;
PUB.log.AddAT($"Data incomplete but QR has been read, showing confirmation window immediately");
}
}

View File

@@ -120,7 +120,7 @@ namespace Project
PUB.log.AddI($"Step transition({o} >> {n})");
//230313
EEMStatus.AddStatusSQL(n);
//EEMStatus.AddStatusSQL(n);
}
}

View File

@@ -19,6 +19,7 @@ namespace Project
//var patterns = PUB.Result.BCDPattern;
IgnoreBarcode = false;
findregex = false;
if (barcodeSymbol == "6") barcodeSymbol = "11"; //250930
//get : same symbol data
List<Class.RegexPattern> pats;
@@ -46,19 +47,19 @@ namespace Project
{
if (vm.BCD_DM == false && barcodeSymbol == "2")
{
PUB.log.AddAT($"Inactive in model(DM):{bcd}");
PUB.log.AddAT($"Inactive in model Symbol Setting(DM):{bcd}");
IgnoreBarcode = true;
return new Tuple<int, List<string>>(0, new List<string>());
}
else if (vm.BCD_1D == false && (barcodeSymbol == "6" || barcodeSymbol == "11"))
{
PUB.log.AddAT($"Inactive in model(1D):{bcd}");
PUB.log.AddAT($"Inactive in model Symbol Setting(1D):{bcd}");
IgnoreBarcode = true;
return new Tuple<int, List<string>>(0, new List<string>());
}
else if (vm.BCD_QR == false && (barcodeSymbol == "1"))
{
PUB.log.AddAT($"Inactive in model(QR):{bcd}");
PUB.log.AddAT($"Inactive in model Symbol Setting(QR):{bcd}");
IgnoreBarcode = true;
return new Tuple<int, List<string>>(0, new List<string>());
}
@@ -162,44 +163,52 @@ namespace Project
//skip disable item
if (pt.IsEnable == false) continue;
var regx = new Regex(pt.Pattern, RegexOptions.IgnoreCase, new TimeSpan(0, 0, 10));
if (regx.IsMatch(bcd))
var regx = new Regex(pt.Pattern, RegexOptions.IgnoreCase, new TimeSpan(0, 0, 5));
try
{
findregex = true;
//find data
var matchs = regx.Matches(bcd);
foreach (System.Text.RegularExpressions.Match mat in matchs)
if (regx.IsMatch(bcd))
{
if (vdata == null) ValueApplyCount += 1;
else
findregex = true;
//find data
var matchs = regx.Matches(bcd);
foreach (System.Text.RegularExpressions.Match mat in matchs)
{
foreach (var matchdata in pt.Groups)
if (vdata == null) ValueApplyCount += 1;
else
{
if (matchdata.GroupNo <= mat.Groups.Count)
foreach (var matchdata in pt.Groups)
{
var data = mat.Groups[matchdata.GroupNo];
if (PUB.SetBCDValue(vdata, matchdata.TargetPos, data.Value, pt.IsTrust))
ValueApplyCount += 1;
if (matchdata.GroupNo <= mat.Groups.Count)
{
var data = mat.Groups[matchdata.GroupNo];
if (PUB.SetBCDValue(vdata, matchdata.TargetPos, data.Value, pt.IsTrust))
ValueApplyCount += 1;
}
}
}
}
}
if (vdata != null && pt.IsAmkStd)// && bcdObj.barcodeSymbol == "1")
if (vdata != null && pt.IsAmkStd)// && bcdObj.barcodeSymbol == "1")
{
vdata.QRInputRaw = bcd;
}
if (vdata != null)
PUB.log.AddI($"[{pt.Description}]=>{bcd}");
list.Add(pt.Customer + "|" + pt.Description);
}
else
{
vdata.QRInputRaw = bcd;
//PUB.log.AddAT($"(X)Match ({pt.Pattern}) Data={bcd}");
}
if (vdata != null)
PUB.log.AddI($"[{pt.Description}]=>{bcd}");
list.Add(pt.Customer + "|" + pt.Description);
}
else
catch (Exception ex)
{
//PUB.log.AddAT($"(X)Match ({pt.Pattern}) Data={bcd}");
PUB.log.AddE($"BarcodeRegEx Error : {ex.Message}");
}
}
return new Tuple<int, List<string>>(ValueApplyCount, list);
}
@@ -209,12 +218,8 @@ namespace Project
/// </summary>
void BarcodeProcess()
{
//coffee
//get regexpress patterns
var patterns = PUB.Result.BCDPattern;
var itemC = PUB.Result.ItemDataC;
var vdata = itemC.VisionData;
bool vQtyOK = false;
//No Run - Confirm Data
if (vdata.Confirm) return;
@@ -231,15 +236,21 @@ namespace Project
//already checked
if (bcdObj.RegExConfirm) continue;
var ValueApplyCount = BarcodeRegExProcess(PUB.Result.BCDPattern, PUB.Result.BCDIgnorePattern, vdata, bcdObj.barcodeSymbol, bcd, out bool IgnoreBcd, out bool findregex);
bcdObj.Ignore = IgnoreBcd;
lock (PUB.Result.BCDPatternLock)
{
var ValueApplyCount = BarcodeRegExProcess(PUB.Result.BCDPattern, PUB.Result.BCDIgnorePattern, vdata, bcdObj.barcodeSymbol, bcd, out bool IgnoreBcd, out bool findregex);
bcdObj.Ignore = IgnoreBcd;
//기타바코드 무시기능 적용 221018
if (vm != null && vm.IgnoreOtherBarcode == true && findregex == false)
bcdObj.Ignore = true;
bcdObj.RefExApply = (ValueApplyCount?.Item1 ?? 0);
bcdObj.RegExConfirm = true;
}
//기타바코드 무시기능 적용 221018
if (vm != null && vm.IgnoreOtherBarcode == true && findregex == false)
bcdObj.Ignore = true;
bcdObj.RefExApply = (ValueApplyCount?.Item1 ?? 0) > 0;
bcdObj.RegExConfirm = true;
}
}

View File

@@ -6,79 +6,81 @@ using System.Text.RegularExpressions;
namespace Project
{
public partial class FMain
{
bool RecvQRProcess(List<string> qrdatas, eWorkPort vIdx)
{
//데이터가없으면 처리하지 않는다.
if (qrdatas == null || qrdatas.Count < 1) return false;
public partial class FMain
{
bool RecvQRProcess(List<string> qrdatas, eWorkPort vIdx)
{
//데이터가없으면 처리하지 않는다.
if (qrdatas == null || qrdatas.Count < 1) return false;
bool FindData = false;
var idata = vIdx == eWorkPort.Left ? PUB.Result.ItemDataL : PUB.Result.ItemDataR;
bool FindData = false;
var idata = vIdx == eWorkPort.Left ? PUB.Result.ItemDataL : PUB.Result.ItemDataR;
//표준바코드라면 그 값을 표시해준다
var patterns = PUB.Result.BCDPattern;
//표준바코드라면 그 값을 표시해준다
lock (PUB.Result.BCDPatternLock)
{
var patterns = PUB.Result.BCDPattern;
foreach (var datas in qrdatas)
{
//원본자료를 체크한다
if (datas.Equals(idata.VisionData.PrintQRData))
{
//인쇄한 자료와 동일한 자료이다
FindData = true;
}
foreach (var datas in qrdatas)
{
//원본자료를 체크한다
if (datas.Equals(idata.VisionData.PrintQRData))
{
//인쇄한 자료와 동일한 자료이다
FindData = true;
}
//표준 바코드 형태만 취한다
var pats = patterns.Where(t => t.IsAmkStd && t.IsEnable).OrderBy(t => t.Seq).ToList();
if (pats.Any())
{
//패턴을 확인하여 값을 표시해준다
//var ValueApplyCount = 0;
foreach (var pt in pats)
{
var regx = new Regex(pt.Pattern, RegexOptions.IgnoreCase, new TimeSpan(0, 0, 10));
if (regx.IsMatch(datas)) //패턴이 일치하다면 이것만 사용한다
{
//find data
var matchs = regx.Matches(datas);
foreach (System.Text.RegularExpressions.Match mat in matchs)
{
foreach (var matchdata in pt.Groups)
{
if (matchdata.GroupNo <= mat.Groups.Count)
{
var data = mat.Groups[matchdata.GroupNo];
switch (matchdata.TargetPos.ToUpper())
{
case "SID":
idata.VisionData.SID2 = data.Value;
break;
case "RID":
idata.VisionData.RID2 = data.Value;
break;
case "VLOT":
idata.VisionData.VLOT2 = data.Value;
break;
case "VNAME":
idata.VisionData.VNAME2 = data.Value;
break;
case "MFG":
idata.VisionData.MFGDATE2 = data.Value;
break;
case "QTY":
idata.VisionData.QTY2 = data.Value;
break;
case "PART":
idata.VisionData.PARTNO2 = data.Value;
break;
}
}
}
}
break;
}
}
}
//표준 바코드 형태만 취한다
var pats = patterns.Where(t => t.IsAmkStd && t.IsEnable).OrderBy(t => t.Seq).ToList();
if (pats.Any())
{
//패턴을 확인하여 값을 표시해준다
//var ValueApplyCount = 0;
foreach (var pt in pats)
{
var regx = new Regex(pt.Pattern, RegexOptions.IgnoreCase, new TimeSpan(0, 0, 10));
if (regx.IsMatch(datas)) //패턴이 일치하다면 이것만 사용한다
{
//find data
var matchs = regx.Matches(datas);
foreach (System.Text.RegularExpressions.Match mat in matchs)
{
foreach (var matchdata in pt.Groups)
{
if (matchdata.GroupNo <= mat.Groups.Count)
{
var data = mat.Groups[matchdata.GroupNo];
switch (matchdata.TargetPos.ToUpper())
{
case "SID":
idata.VisionData.SID2 = data.Value;
break;
case "RID":
idata.VisionData.RID2 = data.Value;
break;
case "VLOT":
idata.VisionData.VLOT2 = data.Value;
break;
case "VNAME":
idata.VisionData.VNAME2 = data.Value;
break;
case "MFG":
idata.VisionData.MFGDATE2 = data.Value;
break;
case "QTY":
idata.VisionData.QTY2 = data.Value;
break;
case "PART":
idata.VisionData.PARTNO2 = data.Value;
break;
}
}
}
}
break;
}
}
}
@@ -87,63 +89,66 @@ namespace Project
//var bcdData = new StdLabelPrint.CAmkorSTDBarcode(datas);
//PUB.Result.ItemData[vIdx].VisionData.QTY2 = bcdData.QTY.ToString();
//PUB.Result.ItemData[vIdx].VisionData.RID2 = bcdData.RID;
//PUB.Result.ItemData[vIdx].VisionData.SID2 = bcdData.SID;
//PUB.Result.ItemData[vIdx].VisionData.VLOT2 = bcdData.VLOT;
//PUB.Result.ItemData[vIdx].VisionData.VNAME2 = bcdData.VENDERNAME;
//PUB.Result.ItemData[vIdx].VisionData.MFGDATE2 = bcdData.MFGDate;//.ToString("yyyyMMdd");
//PUB.Result.ItemData[vIdx].VisionData.PARTNO2 = bcdData.PARTNO;
//PUB.Result.ItemData[vIdx].VisionData.Ready = true;
////Pub.Result.ItemData[vIdx].VisionData.ETime = DateTime.Now;
////Pub.Result.ItemData[vIdx].VisionData.Angle = 5;
//PUB.Result.ItemData[vIdx].VisionData.Complete = true;
//PUB.log.Add("BARCODE", $"{vIdx}바코드 읽기 성공 ID:{bcdData.RID},QTY:{bcdData.QTY}");
//var bcdData = new StdLabelPrint.CAmkorSTDBarcode(datas);
//PUB.Result.ItemData[vIdx].VisionData.QTY2 = bcdData.QTY.ToString();
//PUB.Result.ItemData[vIdx].VisionData.RID2 = bcdData.RID;
//PUB.Result.ItemData[vIdx].VisionData.SID2 = bcdData.SID;
//PUB.Result.ItemData[vIdx].VisionData.VLOT2 = bcdData.VLOT;
//PUB.Result.ItemData[vIdx].VisionData.VNAME2 = bcdData.VENDERNAME;
//PUB.Result.ItemData[vIdx].VisionData.MFGDATE2 = bcdData.MFGDate;//.ToString("yyyyMMdd");
//PUB.Result.ItemData[vIdx].VisionData.PARTNO2 = bcdData.PARTNO;
//PUB.Result.ItemData[vIdx].VisionData.Ready = true;
////Pub.Result.ItemData[vIdx].VisionData.ETime = DateTime.Now;
////Pub.Result.ItemData[vIdx].VisionData.Angle = 5;
//PUB.Result.ItemData[vIdx].VisionData.Complete = true;
//PUB.log.Add("BARCODE", $"{vIdx}바코드 읽기 성공 ID:{bcdData.RID},QTY:{bcdData.QTY}");
////데이터를 읽었으며, 검증기능이 켜져있다면 검증을한다
//if (FindData) break;
}
////데이터를 읽었으며, 검증기능이 켜져있다면 검증을한다
//if (FindData) break;
}
//자료는 있었지만 바코드검증이 실패된 경우이다
//타임아웃까지 기다리지 않고 바로 오류처리를 한다.
if (FindData == true)
{
//데이터를 찾았다면 완료처리를 해준다
idata.VisionData.Complete = true;
//PUB.Result.ItemData[vIdx].VisionData.Complete = true;
return true;
}
return false;
//else
//{
// var item = Pub.Result.ItemData[vIdx];
// var tsGrab = DateTime.Now - Pub.GetVarTime(VAR_LIVEVIEW);
// var timeoutVision = vIdx == 1 ? COMM.SETTING.Data.Timeout_VisionProcessL : COMM.SETTING.Data.Timeout_VisionProcessU;
// if (tsGrab.TotalMilliseconds >= timeoutVision)
// {
// //다음 바코드가 있다면 추가 진행을 위해서 남겨준다
// _SM_SAVEIMAGE(vIdx, DateTime.Now, "Images(QRValid)");
}
// WS_Send((idx == 0 ? 0 : 1), Pub.wsL, Pub.Result.ItemData[idx].guid, "OFF");
//자료는 있었지만 바코드검증이 실패된 경우이다
//타임아웃까지 기다리지 않고 바로 오류처리를 한다.
if (FindData == true)
{
//데이터를 찾았다면 완료처리를 해준다
idata.VisionData.Complete = true;
//PUB.Result.ItemData[vIdx].VisionData.Complete = true;
return true;
}
return false;
//else
//{
// var item = Pub.Result.ItemData[vIdx];
// var tsGrab = DateTime.Now - Pub.GetVarTime(VAR_LIVEVIEW);
// var timeoutVision = vIdx == 1 ? COMM.SETTING.Data.Timeout_VisionProcessL : COMM.SETTING.Data.Timeout_VisionProcessU;
// if (tsGrab.TotalMilliseconds >= timeoutVision)
// {
// //다음 바코드가 있다면 추가 진행을 위해서 남겨준다
// _SM_SAVEIMAGE(vIdx, DateTime.Now, "Images(QRValid)");
// var barcodepos = vIdx == 0 ? "LEFT" : "RIGHT";
// Pub.log.AddE("(" + barcodepos + ")바코드를 검증했지만 일치하지 않습니다");
// Pub.Result.SetResultMessage(eResult.OPERATION, eECode.BARCODEVALIDERR, eNextStep.pause,
// vIdx, Pub.Result.ItemData[vIdx].VisionData.RID, Pub.Result.ItemData[vIdx].VisionData.RID2,
// Pub.Result.ItemData[vIdx].VisionData.QTY, Pub.Result.ItemData[vIdx].VisionData.QTY2,
// Pub.Result.ItemData[vIdx].VisionData.SID, Pub.Result.ItemData[vIdx].VisionData.SID2,
// Pub.Result.ItemData[vIdx].VisionData.MFGDATE, Pub.Result.ItemData[vIdx].VisionData.MFGDATE2,
// barcodepos);
// return;
// }
//}
}
// WS_Send((idx == 0 ? 0 : 1), Pub.wsL, Pub.Result.ItemData[idx].guid, "OFF");
}
// var barcodepos = vIdx == 0 ? "LEFT" : "RIGHT";
// Pub.log.AddE("(" + barcodepos + ")바코드를 검증했지만 일치하지 않습니다");
// Pub.Result.SetResultMessage(eResult.OPERATION, eECode.BARCODEVALIDERR, eNextStep.pause,
// vIdx, Pub.Result.ItemData[vIdx].VisionData.RID, Pub.Result.ItemData[vIdx].VisionData.RID2,
// Pub.Result.ItemData[vIdx].VisionData.QTY, Pub.Result.ItemData[vIdx].VisionData.QTY2,
// Pub.Result.ItemData[vIdx].VisionData.SID, Pub.Result.ItemData[vIdx].VisionData.SID2,
// Pub.Result.ItemData[vIdx].VisionData.MFGDATE, Pub.Result.ItemData[vIdx].VisionData.MFGDATE2,
// barcodepos);
// return;
// }
//}
}
}
}