..
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@ namespace Project
|
||||
PUB.log.AddI($"Step transition({o} >> {n})");
|
||||
|
||||
//230313
|
||||
EEMStatus.AddStatusSQL(n);
|
||||
//EEMStatus.AddStatusSQL(n);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user