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

@@ -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;
// }
//}
}
}
}