프로젝트 구조 개선 및 README.md 추가
- UIControl 프로젝트 구조 변경 (CapCleaningControl → Sub/UIControl) - arAjinextek 라이브러리 통합 및 구조 개선 - 새로운 arAjinextek_Union 프로젝트 추가 - 솔루션 파일에 README.md 추가 - QR 모드에서 WMS RCV 태그 인식 기능 강화 - 데이터베이스 스키마 업데이트 및 관련 클래스 수정 - 프린터 및 바코드 장치 연동 로직 개선 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -110,7 +110,13 @@ namespace Project
|
||||
|
||||
private string KeyenceBarcodeDataF = string.Empty;
|
||||
private string KeyenceBarcodeDataR = string.Empty;
|
||||
//List<Class.KeyenceBarcodeData> barcodelist = new List<Class.KeyenceBarcodeData>();
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 키엔스로부터 받은 데이터를 분석한다.
|
||||
/// </summary>
|
||||
/// <param name="response"></param>
|
||||
/// <param name="Source"></param>
|
||||
void ParseBarcode(string response, string Source)
|
||||
{
|
||||
|
||||
@@ -155,26 +161,15 @@ namespace Project
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
var MatchList = RegX.Matches(resp.Trim());
|
||||
var buf = MatchList[0].Groups;
|
||||
|
||||
//var buf = resp.Split(':'); //데이터는 :로 분리되어있음
|
||||
//if (buf.Length != 7) //데이터는 총 6개의 데이터로 구성됨
|
||||
//{
|
||||
// PUB.log.AddE("***바코드 응답데이터 오류 값(키엔스 전송포맷을 확인하세요) " + resp);
|
||||
// gridView2.setTitle(8, 1, "ERR");
|
||||
// continue;
|
||||
//}
|
||||
|
||||
|
||||
var angle = 0;
|
||||
Boolean STDData = false; //들어온 자료가 amkor std 바코드여부
|
||||
var sym = buf[1].Value;
|
||||
var vData = buf[2].Value.Trim();
|
||||
var sym = buf[1].Value; //symbol
|
||||
var vData = buf[2].Value.Trim(); //data
|
||||
|
||||
|
||||
if (Source == "R") KeyenceBarcodeDataR = vData;
|
||||
else KeyenceBarcodeDataF = vData;
|
||||
if (Source == "R") KeyenceBarcodeDataR = vData; //rear
|
||||
else KeyenceBarcodeDataF = vData; //front
|
||||
|
||||
//바코드 무시조건 확인
|
||||
//if (PUB.Result.BCDIgnorePattern != null)
|
||||
@@ -234,13 +229,11 @@ namespace Project
|
||||
{
|
||||
theta = angbcd.Angle;
|
||||
}
|
||||
|
||||
|
||||
|
||||
var theta_rad = -theta * Math.PI / 180.0;
|
||||
var PX = (int)(Math.Cos(theta_rad) * (vertextCP.X - ReelCP.X) - Math.Sin(theta_rad) * (vertextCP.Y - ReelCP.Y)) + ReelCP.X;
|
||||
var PY = (int)(Math.Sin(theta_rad) * (vertextCP.X - ReelCP.X) + Math.Cos(theta_rad) * (vertextCP.Y - ReelCP.Y)) + ReelCP.Y;
|
||||
|
||||
|
||||
float LabelAngRad = (float)(Math.Atan2(PY - ReelCP.Y, PX - ReelCP.X));// 2; //라벨의 위치값을 찾아서 입력해야한다.
|
||||
var labelpos = (float)(LabelAngRad * 180.0 / Math.PI);
|
||||
if (labelpos < 0) labelpos = 360 + labelpos;
|
||||
@@ -269,9 +262,8 @@ namespace Project
|
||||
var bcdin = itemC.VisionData.barcodelist.ContainsKey(valuekey);//.Where(t => t.Value.CheckIntersect(vertextCP, vData) == true).FirstOrDefault();
|
||||
if (bcdin == false)
|
||||
{
|
||||
//신규바코드데이터이므로 추가한다.
|
||||
PUB.logKeyence.Add($"{resp.Replace("\n", "").Replace("\r", "")}");
|
||||
|
||||
//없다면 추가한다.
|
||||
var newitem = new Class.KeyenceBarcodeData()
|
||||
{
|
||||
AmkorData = new StdLabelPrint.CAmkorSTDBarcode(vData),
|
||||
@@ -285,11 +277,11 @@ namespace Project
|
||||
};
|
||||
|
||||
var addok = itemC.VisionData.barcodelist.TryAdd(valuekey, newitem);
|
||||
if (addok) PUB.log.Add($"[NEW:{sym}] " + Source + " " + vData);
|
||||
else PUB.log.AddE($"X-[NEW:{sym}] " + Source + " " + vData);
|
||||
if (addok) PUB.log.Add($"[O]BCD RESERV[NEW:{sym}] " + Source + " " + vData);
|
||||
else PUB.log.AddE($"[X]BCD RESERV[NEW:{sym}] " + Source + " " + vData);
|
||||
|
||||
itemC.VisionData.UpdateBarcodePositionData();
|
||||
itemC.VisionData.BarcodeTouched = true;
|
||||
itemC.VisionData.BarcodeDirty = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -310,10 +302,10 @@ namespace Project
|
||||
};
|
||||
|
||||
//기존정보를 지우고
|
||||
PUB.log.Add($"[UPD:{sym}] " + Source + " " + vData);
|
||||
PUB.log.Add($"[UPD]BCD RESERV:{sym}] " + Source + " " + vData);
|
||||
itemC.VisionData.barcodelist[valuekey] = newitem;
|
||||
itemC.VisionData.UpdateBarcodePositionData();
|
||||
itemC.VisionData.BarcodeTouched = true;
|
||||
itemC.VisionData.BarcodeDirty = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -210,7 +210,7 @@ namespace Project
|
||||
catch { }
|
||||
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
for (short i = 0; i < 3; i++)
|
||||
{
|
||||
if (PUB.mot != null && PUB.mot.IsInit)
|
||||
{
|
||||
|
||||
@@ -64,7 +64,7 @@ namespace Project
|
||||
var limport = new List<string>();
|
||||
if (PUB.mot.HasLimitError == true)
|
||||
{
|
||||
for (int i = 0; i < PUB.system.MotaxisCount; i++)
|
||||
for (short i = 0; i < PUB.system.MotaxisCount; i++)
|
||||
{
|
||||
if (PUB.mot.IsUse(i) == false) continue;
|
||||
if (PUB.mot.IsLimitN(i))
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace Project
|
||||
private void _SM_MAIN_ERROR(Boolean isFirst, eSMStep Step, TimeSpan StepTime)
|
||||
{
|
||||
//모션의 위치를 저장해준다. - 재시작시 변경이 잇다면 오류로 처리한다
|
||||
for (int i = 0; i < PUB.mot.DeviceCount; i++)
|
||||
for (short i = 0; i < PUB.mot.DeviceCount; i++)
|
||||
PUB.Result.PreventMotionPosition[i] = PUB.mot.GetLastCmdPos(i);
|
||||
|
||||
var errorMessage = string.Empty;
|
||||
|
||||
@@ -88,7 +88,7 @@ namespace Project
|
||||
if (PUB.sm.seq.Get(cmdIndex) == idx++)
|
||||
{
|
||||
bool vQtyOK = false;
|
||||
|
||||
var vdata = itemC.VisionData;
|
||||
//동작중이아니라면 처리하지 않음
|
||||
if (PUB.sm.getNewStep != eSMStep.RUN) return EResultKeyence.Wait;
|
||||
|
||||
@@ -98,17 +98,17 @@ namespace Project
|
||||
var systembypassmode = SETTING.Data.SystemBypass;
|
||||
if (systembypassmode && PUB.flag.get(eVarBool.FG_RDY_PORT_PC))
|
||||
{
|
||||
PUB.Result.ItemDataC.VisionData.SetRID("BP" + DateTime.Now.ToString("yyyyMMddHHmmss"), "bp");
|
||||
PUB.Result.ItemDataC.VisionData.SID = ("100000000");
|
||||
PUB.Result.ItemDataC.VisionData.VNAME = "BYPASS";
|
||||
PUB.Result.ItemDataC.VisionData.MFGDATE = DateTime.Now.ToString("yyyy-MM-dd");
|
||||
PUB.Result.ItemDataC.VisionData.VLOT = "BYPASS";
|
||||
PUB.Result.ItemDataC.VisionData.CUSTCODE = "0000";
|
||||
PUB.Result.ItemDataC.VisionData.CUSTNAME = "BYPASS";
|
||||
PUB.Result.ItemDataC.VisionData.QTY = "10000";
|
||||
PUB.Result.ItemDataC.VisionData.ConfirmUser = true;
|
||||
PUB.Result.ItemDataC.VisionData.PrintPositionData = "1";
|
||||
PUB.Result.ItemDataC.VisionData.PrintPositionCheck = true;
|
||||
vdata.VisionData.SetRID("BP" + DateTime.Now.ToString("yyyyMMddHHmmss"), "bp");
|
||||
vdata.VisionData.SID = ("100000000");
|
||||
vdata.VisionData.VNAME = "BYPASS";
|
||||
vdata.VisionData.MFGDATE = DateTime.Now.ToString("yyyy-MM-dd");
|
||||
vdata.VisionData.VLOT = "BYPASS";
|
||||
vdata.VisionData.CUSTCODE = "0000";
|
||||
vdata.VisionData.CUSTNAME = "BYPASS";
|
||||
vdata.VisionData.QTY = "10000";
|
||||
vdata.VisionData.ConfirmUser = true;
|
||||
vdata.VisionData.PrintPositionData = "1";
|
||||
vdata.VisionData.PrintPositionCheck = true;
|
||||
return EResultKeyence.Complete;
|
||||
}
|
||||
|
||||
@@ -184,6 +184,160 @@ namespace Project
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//기본 벤더이름
|
||||
if (OPT_BYPASS == false && PUB.Result.vModel.Def_Vname.isEmpty() == false)
|
||||
{
|
||||
if (itemC.VisionData.VNAME.Equals(PUB.Result.vModel.Def_Vname) == false)
|
||||
{
|
||||
itemC.VisionData.VNAME = PUB.Result.vModel.Def_Vname;
|
||||
itemC.VisionData.VNAME_Trust = true;
|
||||
PUB.log.Add($"Defaul V.Name Set to {PUB.Result.vModel.Def_Vname}");
|
||||
}
|
||||
}
|
||||
|
||||
//기본 MFG
|
||||
if (OPT_BYPASS == false && PUB.Result.vModel.Def_MFG.isEmpty() == false)
|
||||
{
|
||||
if (itemC.VisionData.MFGDATE.Equals(PUB.Result.vModel.Def_MFG) == false)
|
||||
{
|
||||
itemC.VisionData.MFGDATE = PUB.Result.vModel.Def_MFG;
|
||||
itemC.VisionData.MFGDATE_Trust = true;
|
||||
PUB.log.Add($"Defaul MFGDATE Set to {PUB.Result.vModel.Def_MFG}");
|
||||
}
|
||||
}
|
||||
|
||||
//옵션설정에 따른 외부데이터 가져오기 작업
|
||||
bool NewBarcodeUpdated = false;
|
||||
|
||||
|
||||
//SID정보테이블에서 정보 추출
|
||||
if (VAR.BOOL[eVarBool.Opt_ApplySIDInfo] && vdata.BarcodeDirty == true)
|
||||
{
|
||||
Boolean Apply = true;
|
||||
|
||||
//select columns
|
||||
List<string> fields = new List<string>();
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Apply_CustCode] && vdata.CUSTCODE.isEmpty()) fields.Add("CustCode");
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Apply_PartNo] && (vdata.PARTNO.isEmpty() || vdata.PARTNO_Trust == false)) fields.Add("PartNo");
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Apply_PrintPos] && vdata.PrintPositionData.isEmpty()) fields.Add("PrintPosition");
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Apply_VenderName] && (vdata.VNAME_Trust == false || vdata.VNAME.isEmpty())) fields.Add("VenderName");
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Apply_SID] && (vdata.SID_Trust == false || vdata.SID.isEmpty())) fields.Add("SID");
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Apply_batch] && (vdata.SID_Trust == false || vdata.BATCH.isEmpty())) fields.Add("batch"); //220921
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Apply_qty] && (vdata.SID_Trust == false || vdata.QTYMAX.isEmpty())) fields.Add("qtymax"); //220921
|
||||
fields.Add("attach"); //231026
|
||||
|
||||
//where coluns
|
||||
List<string> wheres = new List<string>();
|
||||
//wheres.Add($"MC='{COMM.SETTING.Data.McName}");
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Where_CustCode])
|
||||
{
|
||||
if (vdata.CUSTCODE.isEmpty() == false) wheres.Add($"CustCode='{vdata.CUSTCODE}'");
|
||||
else Apply = false;
|
||||
}
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Where_PartNo])
|
||||
{
|
||||
if (vdata.PARTNO_Trust && vdata.PARTNO.isEmpty() == false) wheres.Add($"PartNo='{vdata.PARTNO}'");
|
||||
else Apply = false;
|
||||
}
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Where_SID])
|
||||
{
|
||||
//if sid convert logic
|
||||
if (VAR.BOOL[eVarBool.Opt_SIDConvert])
|
||||
{
|
||||
if (vdata.SID_Trust && vdata.SID0.isEmpty() == false && vdata.SID.isEmpty() == false)
|
||||
wheres.Add($"SID='{vdata.SID}'");
|
||||
else Apply = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (vdata.SID_Trust && vdata.SID.isEmpty() == false) wheres.Add($"SID='{vdata.SID}'");
|
||||
else Apply = false;
|
||||
}
|
||||
}
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Where_VLOT]) //221013
|
||||
{
|
||||
if (vdata.VLOT_Trust && vdata.VLOT.isEmpty() == false)
|
||||
wheres.Add($"(VenderLot like '{vdata.VLOT}' or VenderLot like '%,{vdata.VLOT}' or VenderLot like '{vdata.VLOT},%' or VenderLot like '%,{vdata.VLOT},%')");
|
||||
else Apply = false;
|
||||
}
|
||||
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Where_MC]) //231006
|
||||
{
|
||||
wheres.Add($"attach='{AR.SETTING.Data.McName}'");
|
||||
}
|
||||
|
||||
//if query data . no error
|
||||
if (Apply && fields.Count > 0 && wheres.Count > 0)
|
||||
{
|
||||
|
||||
var mcname = SETTING.Data.McName;
|
||||
if (VAR.BOOL[eVarBool.Use_Conveyor]) mcname = PUB.MCCode;
|
||||
|
||||
var SQL = "select top 1 " + string.Join(",", fields) +
|
||||
" from K4EE_Component_Reel_SID_Information WITH(NOLOCK)" +
|
||||
" where mc='" + mcname + "' and " + string.Join(" and ", wheres) +
|
||||
" order by wdate desc";
|
||||
|
||||
var SQLC = "select count(*)" +
|
||||
" from K4EE_Component_Reel_SID_Information WITH(NOLOCK)" +
|
||||
" where mc='" + mcname + "' and " + string.Join(" and ", wheres);
|
||||
|
||||
if (PUB.Result.ItemDataC.VisionData.LastQueryStringSID.Equals(SQL) == false)
|
||||
{
|
||||
|
||||
PUB.log.Add($"DATABAES : SID INFORMATIION QUERY");
|
||||
PUB.log.Add(SQL);
|
||||
var CS = Properties.Settings.Default.CS;
|
||||
var CN = new System.Data.SqlClient.SqlConnection(CS);
|
||||
var CMD = new System.Data.SqlClient.SqlCommand(SQL, CN);
|
||||
if (CN.State == System.Data.ConnectionState.Closed) CN.Open();
|
||||
|
||||
//데이터가 중복으로 존재하는지 확인한다. 231006
|
||||
CMD.CommandText = SQLC;
|
||||
var cnt = int.Parse(CMD.ExecuteScalar().ToString());
|
||||
if (cnt == 1)
|
||||
{
|
||||
CMD.CommandText = SQL;
|
||||
var DAR = CMD.ExecuteReader();
|
||||
while (DAR.Read())
|
||||
{
|
||||
//loop select columns
|
||||
for (int i = 0; i < fields.Count; i++)
|
||||
{
|
||||
var colName = fields[i];
|
||||
var v = DAR[colName];
|
||||
if (v != null)
|
||||
{
|
||||
var vStr = v.ToString().RemoveNoneASCII().Trim();
|
||||
if (vStr.isEmpty()) continue;
|
||||
|
||||
if (PUB.UpdateSIDInfoData(ref vdata, colName, vStr)) NewBarcodeUpdated = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
DAR.Close();
|
||||
}
|
||||
CMD.Dispose();
|
||||
if (CN.State == System.Data.ConnectionState.Open) CN.Close();
|
||||
CN.Dispose();
|
||||
PUB.Result.ItemDataC.VisionData.LastQueryStringSID = SQL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//WMS정보테이블에서 정보 추출
|
||||
|
||||
//SID변환정보에서 정보 추출
|
||||
|
||||
//기존 작업내역에서 정보 추출
|
||||
if (itemC.VisionData.BarcodeDirty == true && NewBarcodeUpdated == false)
|
||||
{
|
||||
itemC.VisionData.BarcodeDirty = false;
|
||||
}
|
||||
|
||||
//릴Id 신규부여
|
||||
if (OPT_BYPASS == false && VAR.BOOL[eVarBool.Opt_NewReelID])
|
||||
{
|
||||
@@ -223,28 +377,8 @@ namespace Project
|
||||
}
|
||||
}
|
||||
|
||||
//기본 벤더이름
|
||||
if (OPT_BYPASS == false && PUB.Result.vModel.Def_Vname.isEmpty() == false)
|
||||
{
|
||||
if (itemC.VisionData.VNAME.Equals(PUB.Result.vModel.Def_Vname) == false)
|
||||
{
|
||||
itemC.VisionData.VNAME = PUB.Result.vModel.Def_Vname;
|
||||
itemC.VisionData.VNAME_Trust = true;
|
||||
PUB.log.Add($"Defaul V.Name Set to {PUB.Result.vModel.Def_Vname}");
|
||||
}
|
||||
}
|
||||
|
||||
//기본 MFG
|
||||
if (OPT_BYPASS == false && PUB.Result.vModel.Def_MFG.isEmpty() == false)
|
||||
{
|
||||
if (itemC.VisionData.MFGDATE.Equals(PUB.Result.vModel.Def_MFG) == false)
|
||||
{
|
||||
itemC.VisionData.MFGDATE = PUB.Result.vModel.Def_MFG;
|
||||
itemC.VisionData.MFGDATE_Trust = true;
|
||||
PUB.log.Add($"Defaul MFGDATE Set to {PUB.Result.vModel.Def_MFG}");
|
||||
}
|
||||
}
|
||||
|
||||
//데이터확정 및 완료처리
|
||||
if (itemC.VisionData.Confirm)
|
||||
{
|
||||
//이미 완료된 데이터
|
||||
@@ -313,7 +447,7 @@ namespace Project
|
||||
//var Jobtype = VAR.STR[eVarString.JOB_TYPE];
|
||||
var OPT_BYPASS = SETTING.Data.SystemBypass;// Jobtype == "BP";
|
||||
var CVMode = VAR.BOOL[eVarBool.Use_Conveyor];
|
||||
|
||||
var CustomerCode = VAR.STR[eVarString.JOB_CUSTOMER_CODE];
|
||||
if (item.VisionData.Confirm)
|
||||
{
|
||||
//사용자에의해 완성된 자료는 완료된 자료이다
|
||||
@@ -325,15 +459,22 @@ namespace Project
|
||||
|
||||
//이전작업내역에서 데이터를 쓸것이 있다면 기록한다
|
||||
|
||||
//Customer Code
|
||||
if (OPT_BYPASS == false && item.VisionData.CUSTCODE.isEmpty() && CustomerCode.isEmpty() == false)
|
||||
{
|
||||
item.VisionData.CUSTCODE = CustomerCode;
|
||||
PUB.log.Add($"[FIX] CUSTOMER CODE => {CustomerCode}");
|
||||
}
|
||||
|
||||
//서버의수량업데이트기능
|
||||
if (OPT_BYPASS == false && VAR.BOOL[eVarBool.Opt_ServerQty])
|
||||
{
|
||||
//수량원본이 없는 경우
|
||||
if (item.VisionData.QTY0.isEmpty())
|
||||
{
|
||||
string msg= "서버 수량 업데이트 기능은 WMS에 적용되지 않음, 필요한 경우 개발자 컨택";
|
||||
string msg = "서버 수량 업데이트 기능은 WMS에 적용되지 않음, 필요한 경우 개발자 컨택";
|
||||
var cnt = 0;// (int)(Amkor.RestfulService.get_stock_count(item.VisionData.RID, out msg));
|
||||
if(mainjob)
|
||||
if (mainjob)
|
||||
{
|
||||
PUB.log.AddE("서버 수량 업데이트 기능은 WMS에 적용되지 않음, 필요한 경우 개발자 컨택");
|
||||
}
|
||||
@@ -387,8 +528,8 @@ namespace Project
|
||||
var SID = item.VisionData.SID;
|
||||
var MCName = VAR.BOOL[eVarBool.Use_Conveyor] ? "IB" : SETTING.Data.McName;
|
||||
var ta = new DataSet1TableAdapters.QueriesTableAdapter();
|
||||
var exist = ta.CheckSIDExist(MCName, SID) > 0;
|
||||
PUB.log.Add($"SID 존재여부 검사 KEY:{MCName},SID:{item.VisionData.SID},Result={exist}");
|
||||
var exist = ta.CheckSIDExist(SID) > 0;
|
||||
PUB.log.Add($"SID Exist Check SID:{item.VisionData.SID},Result={exist}");
|
||||
if (exist == false)
|
||||
{
|
||||
PUB.Result.SetResultMessage(eResult.OPERATION, eECode.NOSIDINFOFROMDB, eNextStep.PAUSE, SID);
|
||||
@@ -398,21 +539,39 @@ namespace Project
|
||||
|
||||
//sid변환기능확인
|
||||
var SIDOK = false;
|
||||
if (OPT_BYPASS == false && VAR.BOOL[eVarBool.Opt_SIDConvert])
|
||||
if (OPT_BYPASS == false && VAR.BOOL[eVarBool.Opt_SIDConvert] && VAR.BOOL[eVarBool.JOB_Empty_SIDConvertInfo] == false)
|
||||
{
|
||||
//변환된 정보가 없다면 변환을 진행한다
|
||||
//변환된 정보가 없다면 변환을 진행한다
|
||||
if (item.VisionData.SID0.isEmpty() && item.VisionData.SID_Trust && item.VisionData.SID.isEmpty() == false)
|
||||
{
|
||||
//현재SID가 정상 시드라면 변환을 시작한다
|
||||
|
||||
|
||||
//_SM_RUN_VISION_SIDCONV(item);
|
||||
//이 sid가 존재여부확인 후 없는 sid라면 더이상 처리하지 않는다 230510
|
||||
if (PUB.Result.DTSidConvertEmptyList.Contains(item.VisionData.SID))
|
||||
{
|
||||
//존재하지 않는 SID로 이미 확인되었다
|
||||
}
|
||||
else if (PUB.Result.DTSidConvertMultiList.Contains(item.VisionData.SID))
|
||||
{
|
||||
//다중sid로 인해 처리하지 않는다
|
||||
}
|
||||
else
|
||||
{
|
||||
var newsid = PUB.SIDCovert(item.VisionData.SID, "SPS_BarcodeProcess", out bool converr);
|
||||
if (converr)
|
||||
{
|
||||
if (PUB.sm.Step == eSMStep.RUN)
|
||||
PUB.log.AddE(newsid);
|
||||
}
|
||||
else
|
||||
{
|
||||
item.VisionData.SID0 = item.VisionData.SID; //기존자료를 0으로 백업한다
|
||||
item.VisionData.SID = newsid; //신규 SID를 기록
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//시드값이 유효한지 확인한다.
|
||||
SIDOK = item.VisionData.SID_Trust && item.VisionData.SID0.isEmpty() == false && item.VisionData.SID.isEmpty() == false;
|
||||
}
|
||||
else SIDOK = item.VisionData.SID_Trust; //시드변환을 사용하지 않으므로 시드값여부에따라 다르다
|
||||
else SIDOK = (item.VisionData.SID_Trust && item.VisionData.SID.isEmpty() == false); //시드변환을 사용하지 않으므로 시드값여부에따라 다르다
|
||||
|
||||
//사용자확인이 필요한 옵션이라면 사용한다
|
||||
if (OPT_BYPASS == false && VAR.BOOL[eVarBool.Opt_UserConfim])
|
||||
@@ -420,7 +579,6 @@ namespace Project
|
||||
if (NeedConfirm == false)
|
||||
{
|
||||
if (mainjob) item.VisionData.bcdMessage.Add("사용자 확인 필요");
|
||||
//if (mainjob) PUB.log.Add($"사용자 확인 옵션으로 인해 창을 표시 합니다{Source}");
|
||||
NeedConfirm = true;
|
||||
}
|
||||
}
|
||||
@@ -435,7 +593,6 @@ namespace Project
|
||||
if (VAR.BOOL[eVarBool.Opt_DisablePrinter] == false)
|
||||
{
|
||||
if (mainjob) item.VisionData.bcdMessage.Add("첫번째 릴 확인 필요");
|
||||
//if (mainjob) PUB.log.Add($"처음 작업이므로 사용자 확인창을 표시 합니다{Source}");
|
||||
NeedConfirm = true;
|
||||
}
|
||||
}
|
||||
@@ -475,17 +632,12 @@ namespace Project
|
||||
item.VisionData.PrintPositionCheck = true;
|
||||
PUB.log.AddI($"현 작업정보에서 프린트위치 찾음 SID:{item.VisionData.SID},값={preprnpos}");
|
||||
}
|
||||
else
|
||||
else if (NeedConfirm == false)
|
||||
{
|
||||
if (NeedConfirm == false)
|
||||
{
|
||||
//현작업내에서의 정보를 찾아서 적용한다 231005
|
||||
//if (mainjob) PUB.log.AddAT("프린트 위치 결정이 완료되지 않아. 사용자 선택화면을 팝업합니다");
|
||||
if (mainjob) item.VisionData.bcdMessage.Add("부착위치 없음");
|
||||
NeedConfirm = true;
|
||||
}
|
||||
//현작업내에서의 정보를 찾아서 적용한다 231005
|
||||
if (mainjob) item.VisionData.bcdMessage.Add("부착위치 없음");
|
||||
NeedConfirm = true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -504,6 +656,7 @@ namespace Project
|
||||
item.VisionData.PARTNO_Trust &&
|
||||
item.VisionData.QTY_Trust &&
|
||||
item.VisionData.RID_Trust &&
|
||||
item.VisionData.SID_Trust &&
|
||||
SIDOK && item.VisionData.VLOT_Trust &&
|
||||
item.VisionData.VNAME_Trust)
|
||||
{
|
||||
@@ -546,103 +699,10 @@ namespace Project
|
||||
VAR.TIME.Set(eVarTime.KEYENCEWAIT, newtime);
|
||||
}
|
||||
}
|
||||
else
|
||||
else if (PUB.Result.ItemDataC.VisionData.ConfirmAuto == false)
|
||||
{
|
||||
////ecs on 컨베이어때만 사용한다
|
||||
//bool warndata = false;
|
||||
//if (SETTING.Data.ECSSkip == false && CVMode)
|
||||
//{
|
||||
// //모두 찾은상태에서는 활성화여부를 추가 확인한다.
|
||||
// var sid = item.VisionData.SID;
|
||||
// var bat = item.VisionData.BATCH;
|
||||
|
||||
// //현 시점의 활성화 목록을 가져온다
|
||||
// var activelist = PUB.GetECSActiveSIDList();
|
||||
|
||||
// //해당sid+bat 가 활성화된것인지 확인한다.
|
||||
// bool active = false;
|
||||
// string active_sid = "";
|
||||
// string active_bat = "";
|
||||
// var sidorder = 0;
|
||||
// var sidx = 0;
|
||||
// foreach (var actItem in activelist)
|
||||
// {
|
||||
// if (actItem.Item4)
|
||||
// {
|
||||
// if(active_sid.isEmpty())
|
||||
// {
|
||||
// active_sid = actItem.Item1;
|
||||
// active_bat = actItem.Item2;
|
||||
// }
|
||||
|
||||
// }
|
||||
|
||||
// if (actItem.Item1.Equals(sid) && actItem.Item2.Equals(bat))
|
||||
// {
|
||||
// active = actItem.Item4;
|
||||
// sidorder = sidx; //순서를 저장한다. 0부터 시작하는값이다.
|
||||
// }
|
||||
// if (actItem.Item3 == SETTING.Data.McName)
|
||||
// sidx += 1;
|
||||
// }
|
||||
|
||||
// //활성화된 sid가 아니다
|
||||
// if (active == false)
|
||||
// {
|
||||
// if (sidorder > 1) //2번째는 무조건 에러
|
||||
// {
|
||||
// PUB.log.AddE($"active sid 아니고 {sidorder + 1}번 항목이므로 오류 처리한다.");
|
||||
// warndata = true;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// //활성sid의 작업데이터가있으면 ok
|
||||
// var qa = new DataSet1TableAdapters.QueriesTableAdapter();
|
||||
// var existreadat = qa.GetIBResultCountBySIDBatch(DateTime.Now.AddHours(-6), active_sid, active_sid) > 0;
|
||||
|
||||
// //활성sid의 작업데이터가있으면 ok
|
||||
// if (existreadat)
|
||||
// {
|
||||
// PUB.log.AddAT($"active sid 는 아니지만 활성sid({active_sid}{active_sid}) 의 기록이 있어 진행 합니다");
|
||||
// warndata = false;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// PUB.log.AddE($"active sid 아니고 활성sid({active_sid}{active_sid}) 의 기록이 없어 진행 불가");
|
||||
// warndata = true;
|
||||
// }
|
||||
// //없으면 ng
|
||||
// }
|
||||
// }
|
||||
|
||||
// //오류발생조건이나, 이미 발생했다면 처리하지 않는다.
|
||||
// if (warndata)
|
||||
// {
|
||||
// if (warninactivelist.Contains(sid + bat) == false)
|
||||
// {
|
||||
// warninactivelist.Add(sid + bat);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// PUB.log.AddAT($"이미 경고한 sid+bqt이므로 넘어갑니다({sid}{bat})");
|
||||
// warndata = false;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
//if (warndata)
|
||||
//{
|
||||
// PUB.Result.SetResultMessage(eResult.OPERATION, eECode.NOECSDATAACTIVE, eNextStep.PAUSE, item.VisionData.SID, item.VisionData.BATCH);
|
||||
// return;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
if (PUB.Result.ItemDataC.VisionData.ConfirmAuto == false)
|
||||
{
|
||||
PUB.logDbg.Add($"비젼 자동 확정 처리 {Source}");
|
||||
PUB.Result.ItemDataC.VisionData.ConfirmAuto = true;
|
||||
}
|
||||
//}
|
||||
PUB.logDbg.Add($"비젼 자동 확정 처리 {Source}");
|
||||
PUB.Result.ItemDataC.VisionData.ConfirmAuto = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -52,13 +52,13 @@ namespace Project
|
||||
if (iLockM.IsEmpty() == false && MotMoveM)
|
||||
{
|
||||
var locklistX = MOT.GetActiveLockList(axisM, iLockM);
|
||||
PUB.mot.MoveStop("ILock(" + string.Join(",", locklistX) + ")", (int)axisM);
|
||||
PUB.mot.MoveStop("ILock(" + string.Join(",", locklistX) + ")", (short)axisM);
|
||||
}
|
||||
|
||||
if (iLockZ.IsEmpty() == false && MotMoveZ)
|
||||
{
|
||||
var locklistZ = MOT.GetActiveLockList(axisZ, iLockZ);
|
||||
PUB.mot.MoveStop("ILock(" + string.Join(",", locklistZ) + ")", (int)axisZ);
|
||||
PUB.mot.MoveStop("ILock(" + string.Join(",", locklistZ) + ")", (short)axisZ);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -52,13 +52,13 @@ namespace Project
|
||||
if (iLockM.IsEmpty() == false && MotMoveM)
|
||||
{
|
||||
var locklistX = MOT.GetActiveLockList(axisM, iLockM);
|
||||
PUB.mot.MoveStop("ILock(" + string.Join(",", locklistX) + ")", (int)axisM);
|
||||
PUB.mot.MoveStop("ILock(" + string.Join(",", locklistX) + ")", (short)axisM);
|
||||
}
|
||||
|
||||
if (iLockZ.IsEmpty() == false && MotMoveZ)
|
||||
{
|
||||
var locklistZ = MOT.GetActiveLockList(axisZ, iLockZ);
|
||||
PUB.mot.MoveStop("ILock(" + string.Join(",", locklistZ) + ")", (int)axisZ);
|
||||
PUB.mot.MoveStop("ILock(" + string.Join(",", locklistZ) + ")", (short)axisZ);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ namespace Project
|
||||
var OPT_BYPASS = SETTING.Data.SystemBypass;// PUB.OPT_BYPASS(target);
|
||||
|
||||
|
||||
using (var taResult = new DataSet1TableAdapters.Component_Reel_ResultTableAdapter())
|
||||
using (var taResult = new DataSet1TableAdapters.K4EE_Component_Reel_ResultTableAdapter())
|
||||
{
|
||||
//QTY 0값은 없을 수도있다(해당 값은 서버조회여부에다라 다르다)
|
||||
int? qtyorg = null;
|
||||
@@ -60,8 +60,8 @@ namespace Project
|
||||
else if (item.VisionData.ConfirmUser) remark = "[확인]" + remark; //사용자 확인데이터 비고에 추가
|
||||
if (OPT_BYPASS) remark = "(BYPASS)" + remark;
|
||||
|
||||
DataSet1.Component_Reel_ResultRow newdr = this.dataSet1.Component_Reel_Result.Where(t => t.JGUID.Equals(item.guid)).FirstOrDefault();
|
||||
if (newdr == null) newdr = this.dataSet1.Component_Reel_Result.NewComponent_Reel_ResultRow();
|
||||
DataSet1.K4EE_Component_Reel_ResultRow newdr = this.dataSet1.K4EE_Component_Reel_Result.Where(t => t.JGUID.Equals(item.guid)).FirstOrDefault();
|
||||
if (newdr == null) newdr = this.dataSet1.K4EE_Component_Reel_Result.NewK4EE_Component_Reel_ResultRow();
|
||||
//else newdr = dt.Rows[0] as DataSet1.Component_Reel_ResultRow;
|
||||
|
||||
if (item.JobStart.Year != 1982) newdr.STIME = item.JobStart;
|
||||
@@ -118,10 +118,11 @@ namespace Project
|
||||
newdr.GUID = PUB.Result.guid; //220921
|
||||
newdr.JGUID = item.guid;
|
||||
newdr.wdate = DateTime.Now;
|
||||
this.dataSet1.Component_Reel_Result.AddComponent_Reel_ResultRow(newdr);
|
||||
this.dataSet1.K4EE_Component_Reel_Result.AddK4EE_Component_Reel_ResultRow(newdr);
|
||||
}
|
||||
else newdr.EndEdit();
|
||||
|
||||
var ta = new DataSet1TableAdapters.K4EE_Component_Reel_ResultTableAdapter();
|
||||
var cnt = ta.Update(newdr);
|
||||
newdr.AcceptChanges();
|
||||
if (cnt == 0) PUB.log.AddE("Save Error");
|
||||
|
||||
@@ -21,9 +21,6 @@ namespace Project
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//인터락설정(공용)
|
||||
Set_InterLock();
|
||||
|
||||
@@ -33,7 +30,6 @@ namespace Project
|
||||
hmi1.CVRightBusy = PUB.iLockCVR.get((int)eILockCV.BUSY);
|
||||
hmi1.CVRightReady = PUB.iLockCVR.get((int)eILockCV.EXTBUSY);
|
||||
|
||||
|
||||
//XMOVE 시에 RESET 키를 이용한 장치 초기화 작업
|
||||
if (PUB.sm.Step == eSMStep.IDLE)
|
||||
if (PUB.mot.HasHomeSetOff == true)
|
||||
@@ -87,10 +83,6 @@ namespace Project
|
||||
if (PUB.dio.IsInit)
|
||||
Func_AutoRoomLight();
|
||||
|
||||
//AIR공급중단체크 - Sensitive 에 작동시간을 직접 입력했다(delay time)
|
||||
//if (Pub.dio.IsInit)
|
||||
//Func_CheckAirOffCondition();
|
||||
|
||||
//부저확인
|
||||
if (PUB.dio.IsInit)
|
||||
Func_BuzzerControl();
|
||||
@@ -102,46 +94,9 @@ namespace Project
|
||||
//포트의 UP/DN 모터
|
||||
PortZMotorAutoOff();
|
||||
|
||||
//포트의 마그넷 작동
|
||||
PortMagnet();
|
||||
|
||||
//바코드동작처리 - 210103
|
||||
//var qrdatas1 = ProcessBarcodeQue(0);
|
||||
//var qrdatas2 = ProcessBarcodeQue(2);
|
||||
|
||||
////왼쪽비젼에서 데이터가 있었다
|
||||
//if (qrdatas1.Count > 0)
|
||||
//{
|
||||
// if (PUB.flag.get(eVarBool.PRC_VISIONL) == false)
|
||||
// {
|
||||
// PUB.log.AddAT("비젼(L) READY가 아니므로 처리하지 않음");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// //처리가 완료되지 않은경우엠ㄴ 사용한다.
|
||||
// if (PUB.flag.get(eVarBool.END_VISIONL) == false)
|
||||
// RecvQRProcess(qrdatas1, eWorkPort.Left);
|
||||
// else PUB.log.AddAT("비젼(L) 이전작업이 완료되어 처리하지 않음");
|
||||
// }
|
||||
//}
|
||||
////오른쪽비젼에서 데이터가 있었다
|
||||
//if (qrdatas2.Count > 0)
|
||||
//{
|
||||
// if (PUB.flag.get(eVarBool.PRC_VISIONR) == false)
|
||||
// {
|
||||
// PUB.log.AddAT("비젼(R) READY가 아니므로 처리하지 않음");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// //비젼처리가 완료되지 않은경우에만 사용한다
|
||||
// if (PUB.flag.get(eVarBool.END_VISIONR) == false)
|
||||
// RecvQRProcess(qrdatas2, eWorkPort.Right);
|
||||
// else PUB.log.AddAT("비젼(R) 이전작업이 완료되어 처리하지 않음");
|
||||
// }
|
||||
|
||||
//}
|
||||
//}
|
||||
|
||||
|
||||
//동작중에 데이터가 reset 되는 코드 임시로 모니터링한다.
|
||||
if (PUB.sm.Step != eSMStep.IDLE && PUB.sm.Step != eSMStep.HOME_FULL && PUB.sm.Step != eSMStep.HOME_QUICK)
|
||||
{
|
||||
@@ -305,26 +260,5 @@ namespace Project
|
||||
}
|
||||
}
|
||||
|
||||
//void Func_CheckAirOffCondition()
|
||||
//{
|
||||
// if (Pub.sm.Step < eSMStep.IDLE) return;
|
||||
|
||||
// //181226
|
||||
// var airSw = Util_DO.GetIOInput(eDIName.BUT_AIRF);
|
||||
// if (airSw == true && AirOff == true && AirOffStart.Year != 1982)
|
||||
// {
|
||||
// //스위치가 눌려져있고, 눌린 시간이 설정되어 있는 경우
|
||||
// //스위치 ON 시간을 계산한다
|
||||
// var ts = DateTime.Now - AirOffStart;
|
||||
// if (ts.TotalMilliseconds >= COMM.SETTING.Data.AirOFFTimer)
|
||||
// {
|
||||
// Util_DO.SetAIR(false);
|
||||
// AirOff = false;
|
||||
// AirOffStart = DateTime.Parse("1982-11-23");
|
||||
// Pub.log.AddAT("AIR OFF by User");
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,8 +38,6 @@ namespace Project
|
||||
else patsEx = patternsEx.Where(t => t.IsEnable == true).OrderBy(t => t.Seq).ToList();
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (pats.Any() == false)
|
||||
{
|
||||
PUB.log.AddAT($"등록된 패턴이 없습니다(SYM={barcodeSymbol})");
|
||||
@@ -68,11 +66,8 @@ namespace Project
|
||||
IgnoreBarcode = true;
|
||||
return new Tuple<int, List<string>>(0, new List<string>());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//이 바코드가 무시바코드에 있는지 먼저 검사한다 220718
|
||||
foreach (var pt in patsEx)
|
||||
{
|
||||
@@ -147,7 +142,7 @@ namespace Project
|
||||
return new Tuple<int, List<string>>(ValueApplyCount, list);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// barcod eprocess
|
||||
/// </summary>
|
||||
@@ -163,6 +158,8 @@ namespace Project
|
||||
if (vdata.Confirm) return;
|
||||
var vm = PUB.Result.vModel;
|
||||
|
||||
|
||||
//바코드목록에서 정규식값으로 각 필드값을 기록한다.
|
||||
lock (vdata.barcodelist)
|
||||
{
|
||||
foreach (var item in vdata.barcodelist)
|
||||
@@ -186,135 +183,11 @@ namespace Project
|
||||
}
|
||||
}
|
||||
|
||||
//assign customer code - fixed data
|
||||
if (vdata.CUSTCODE.isEmpty() && VAR.STR[eVarString.JOB_CUSTOMER_CODE].isEmpty() == false)
|
||||
{
|
||||
vdata.CUSTCODE = VAR.STR[eVarString.JOB_CUSTOMER_CODE];
|
||||
PUB.log.Add($"Cutomer Code 고정값 사용 : {vdata.CUSTCODE}");
|
||||
}
|
||||
|
||||
//SiD CONVERT
|
||||
if (VAR.BOOL[eVarBool.Opt_SIDConvert])
|
||||
{
|
||||
if (PUB.flag.get(eVarBool.FG_WAIT_LOADERINFO) == false && VAR.BOOL[eVarBool.JOB_Empty_SIDConvertInfo] == false)
|
||||
{
|
||||
//원본시드(sid0)가 비어있는데 sid과 확정되었다면 변환작업을 진행한다
|
||||
if (vdata.SID0.isEmpty() && vdata.SID.isEmpty() == false && vdata.SID_Trust)
|
||||
{
|
||||
//이 sid가 존재여부확인 후 없는 sid라면 더이상 처리하지 않는다 230510
|
||||
if (PUB.Result.DTSidConvertEmptyList.Contains(vdata.SID))
|
||||
{
|
||||
//존재하지 않는 SID로 이미 확인되었다
|
||||
}
|
||||
else if (PUB.Result.DTSidConvertMultiList.Contains(vdata.SID))
|
||||
{
|
||||
//다중sid로 인해 처리하지 않는다
|
||||
}
|
||||
else
|
||||
{
|
||||
var newsid = PUB.SIDCovert(vdata.SID, "SPS_BarcodeProcess", out bool converr);
|
||||
if (converr)
|
||||
{
|
||||
if (PUB.sm.Step == eSMStep.RUN)
|
||||
PUB.log.AddE(newsid);
|
||||
}
|
||||
else
|
||||
{
|
||||
vdata.SID0 = vdata.SID;
|
||||
vdata.SID = newsid;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//정규식혹은 바코드 룰에 의해 데이터가 바뀌었더라도 모델 기준으로 진행한다
|
||||
if (PUB.Result.vModel.Def_Vname.isEmpty() == false)
|
||||
{
|
||||
if (itemC.VisionData.VNAME.Equals(PUB.Result.vModel.Def_Vname) == false)
|
||||
{
|
||||
itemC.VisionData.VNAME = PUB.Result.vModel.Def_Vname.Trim();
|
||||
itemC.VisionData.VNAME_Trust = true;
|
||||
PUB.log.Add($"Defaul V.Name Set to {PUB.Result.vModel.Def_Vname}");
|
||||
}
|
||||
}
|
||||
if (PUB.Result.vModel.Def_MFG.isEmpty() == false)
|
||||
{
|
||||
if (itemC.VisionData.MFGDATE.Equals(PUB.Result.vModel.Def_MFG) == false)
|
||||
{
|
||||
itemC.VisionData.MFGDATE = PUB.Result.vModel.Def_MFG.Trim();
|
||||
itemC.VisionData.MFGDATE_Trust = true;
|
||||
PUB.log.Add($"Defaul MFGDATE Set to {PUB.Result.vModel.Def_MFG}");
|
||||
}
|
||||
}
|
||||
|
||||
////New ReelID
|
||||
/// this process run ( 3_keyence_read.cs )
|
||||
//if (VAR.BOOL[eVarBool.Opt_NewReelID) && PUB.sm.isRunning)
|
||||
//{
|
||||
// if (vdata.temp_custcode.Length == 4 && vdata.RID0.isEmpty() && vdata.RIDNew == false)
|
||||
// {
|
||||
// //backup old reel id
|
||||
// vdata.RID0 = vdata.RID;
|
||||
// vdata.RIDNew = true;
|
||||
|
||||
// var newid = Amkor.RestfulService.Allocation_Unique_ReelID_AmkorSTD(vdata.temp_custcode, "4", "A", out string err);
|
||||
// if (newid.isEmpty() == false)
|
||||
// {
|
||||
// //remain original reel id
|
||||
// vdata.SetRID( newid,"SPS");
|
||||
// PUB.log.AddI($"New REELID:{newid}");
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
//릴ID 신규발행
|
||||
if (PUB.sm.Step == eSMStep.RUN && vdata.CUSTCODE.isEmpty() == false && vdata.SID.isEmpty() == false)
|
||||
{
|
||||
if (VAR.BOOL[eVarBool.Opt_NewReelID])
|
||||
{
|
||||
if (itemC.VisionData.RIDNew == false && itemC.VisionData.CUSTCODE.isEmpty() == false)
|
||||
{
|
||||
var newid = PUB.MakeNewREELID(vdata.SID);// Amkor.RestfulService.Allocation_Unique_ReelID_AmkorSTD(itemC.VisionData.CUSTCODE, "4", "A", out string errmsg);
|
||||
if (newid.success)
|
||||
{
|
||||
//backup origin reel id
|
||||
itemC.VisionData.RID0 = itemC.VisionData.RID;
|
||||
|
||||
//set new reel id
|
||||
itemC.VisionData.SetRID(newid.newid, "SPS:CHKDATACOMPLETE");// = newid;
|
||||
itemC.VisionData.RIDNew = true; //applied new reel id
|
||||
|
||||
//서버의수량업데이트기능이 켜져있다면 해당 값을 제거해준다. (다시 조회되도록 함)
|
||||
if (VAR.BOOL[eVarBool.Opt_ServerQty])
|
||||
{
|
||||
//이미 수량업데이트된 경우이므로 복원시켜준다
|
||||
if (itemC.VisionData.QTY0.isEmpty() == false)
|
||||
{
|
||||
PUB.log.AddAT($"릴아이디 변경으로 인해 수량을 복원합니다({itemC.VisionData.QTY}->{itemC.VisionData.QTY0})");
|
||||
itemC.VisionData.QTY = itemC.VisionData.QTY0;
|
||||
itemC.VisionData.QTY0 = string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var logtime = VAR.TIME.RUN((int)eVarTime.LOG_NEWIDERROR);
|
||||
if (logtime.TotalSeconds >= 3000)
|
||||
{
|
||||
PUB.log.AddAT($"Reel_ID 생성실패 : {newid.message}");
|
||||
VAR.TIME.Update(eVarTime.LOG_NEWIDERROR);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//바코드가 변경된 경우이다, 자동채우기 기능이 있다면 사용한다
|
||||
bool NewBarcodeUpdated = false;
|
||||
if (VAR.BOOL[eVarBool.Opt_ApplySIDInfo] && vdata.BarcodeTouched == true)
|
||||
|
||||
//SID정보테이블에서 정보 추출
|
||||
if (VAR.BOOL[eVarBool.Opt_ApplySIDInfo] && vdata.BarcodeDirty == true)
|
||||
{
|
||||
Boolean Apply = true;
|
||||
|
||||
@@ -377,19 +250,15 @@ namespace Project
|
||||
if (VAR.BOOL[eVarBool.Use_Conveyor]) mcname = PUB.MCCode;
|
||||
|
||||
var SQL = "select top 1 " + string.Join(",", fields) +
|
||||
" from Component_Reel_SID_Information WITH(NOLOCK)" +
|
||||
" from K4EE_Component_Reel_SID_Information WITH(NOLOCK)" +
|
||||
" where mc='" + mcname + "' and " + string.Join(" and ", wheres) +
|
||||
" order by wdate desc";
|
||||
|
||||
var SQLC = "select count(*)" +
|
||||
" from Component_Reel_SID_Information WITH(NOLOCK)" +
|
||||
" from K4EE_Component_Reel_SID_Information WITH(NOLOCK)" +
|
||||
" where mc='" + mcname + "' and " + string.Join(" and ", wheres);
|
||||
|
||||
if (PUB.Result.ItemDataC.VisionData.LastQueryString.Equals(SQL))
|
||||
{
|
||||
//같은 쿼리이므로 처리하지 않는다
|
||||
}
|
||||
else
|
||||
if (PUB.Result.ItemDataC.VisionData.LastQueryStringSID.Equals(SQL) == false)
|
||||
{
|
||||
|
||||
PUB.log.Add($"DATABAES : SID INFORMATIION QUERY");
|
||||
@@ -418,75 +287,7 @@ namespace Project
|
||||
var vStr = v.ToString().RemoveNoneASCII().Trim();
|
||||
if (vStr.isEmpty()) continue;
|
||||
|
||||
//O_Trust == false)) fields.Add("PartNo");
|
||||
//ields.Add("PrintPosition");
|
||||
//ta.VNAME.isEmpty())) fields.Add("VenderName");
|
||||
//Empty())) fields.Add("SID");
|
||||
|
||||
//value is not empty
|
||||
if (colName == "CustCode")
|
||||
{
|
||||
PUB.log.Add($"AUP [{colName}] {vdata.CUSTCODE}=>{vStr}");
|
||||
vdata.CUSTCODE = vStr;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "PartNo")
|
||||
{
|
||||
PUB.log.Add($"AUP [{colName}] {vdata.PARTNO}=>{vStr}");
|
||||
vdata.PARTNO = vStr;
|
||||
vdata.PARTNO_Trust = true;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "PrintPosition")
|
||||
{
|
||||
PUB.log.Add($"AUP [{colName}] {vdata.PrintPositionData}=>{vStr}");
|
||||
vdata.PrintPositionData = vStr;
|
||||
vdata.PrintPositionCheck = true;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "VenderName")
|
||||
{
|
||||
PUB.log.Add($"AUP [{colName}] {vdata.VNAME}=>{vStr}");
|
||||
vdata.VNAME = vStr;
|
||||
vdata.VNAME_Trust = true;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "VenderLot")
|
||||
{
|
||||
PUB.log.Add($"AUP [{colName}] {vdata.VLOT}=>{vStr}");
|
||||
vdata.VLOT = vStr;
|
||||
vdata.VLOT_Trust = true;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "SID")
|
||||
{
|
||||
PUB.log.Add($"AUP [{colName}] {vdata.SID}=>{vStr}");
|
||||
vdata.SID = vStr;
|
||||
vdata.SID_Trust = vdata.SID.Length == 9;
|
||||
if (vStr.Length != 9)
|
||||
{
|
||||
PUB.log.AddE($"DB SID LEN ERROR:{vStr},LEN={vStr.Length}");
|
||||
}
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "batch")
|
||||
{
|
||||
PUB.log.Add($"AUP [{colName}] {vdata.BATCH}=>{vStr}");
|
||||
vdata.BATCH = vStr;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "qtymax")
|
||||
{
|
||||
PUB.log.Add($"AUP [{colName}] {vdata.BATCH}=>{vStr}");
|
||||
vdata.QTYMAX = vStr;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName.ToLower() == "attach")
|
||||
{
|
||||
PUB.log.Add($"attach [{colName}] {vdata.Target}=>{vStr}");
|
||||
vdata.Target = vStr;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
if (PUB.UpdateSIDInfoData(ref vdata, colName, vStr)) NewBarcodeUpdated = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -495,13 +296,111 @@ namespace Project
|
||||
CMD.Dispose();
|
||||
if (CN.State == System.Data.ConnectionState.Open) CN.Close();
|
||||
CN.Dispose();
|
||||
PUB.Result.ItemDataC.VisionData.LastQueryString = SQL;
|
||||
PUB.Result.ItemDataC.VisionData.LastQueryStringSID = SQL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//[WMS] SID정보테이블에서 정보 추출(프린트정보는 없음)
|
||||
if (VAR.BOOL[eVarBool.Opt_ApplySIDInfo] && vdata.BarcodeDirty == true)
|
||||
{
|
||||
Boolean Apply = true;
|
||||
|
||||
if (VAR.BOOL[eVarBool.Opt_ApplySIDConv] && vdata.BarcodeTouched == true)
|
||||
//select columns
|
||||
List<string> fields = new List<string>();
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Apply_CustCode] && vdata.CUSTCODE.isEmpty()) fields.Add("CUST_CODE");
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Apply_PartNo] && (vdata.PARTNO.isEmpty() || vdata.PARTNO_Trust == false)) fields.Add("PART_NO");
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Apply_VenderName] && (vdata.VNAME_Trust == false || vdata.VNAME.isEmpty())) fields.Add("VENDOR_NM");
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Apply_SID] && (vdata.SID_Trust == false || vdata.SID.isEmpty())) fields.Add("SID");
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Apply_batch] && (vdata.SID_Trust == false || vdata.BATCH.isEmpty())) fields.Add("BATCH_NO"); //220921
|
||||
|
||||
//where coluns
|
||||
List<string> wheres = new List<string>();
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Where_CustCode])
|
||||
{
|
||||
if (vdata.CUSTCODE.isEmpty() == false) wheres.Add($"CUST_CODE='{vdata.CUSTCODE}'");
|
||||
else Apply = false;
|
||||
}
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Where_PartNo])
|
||||
{
|
||||
if (vdata.PARTNO_Trust && vdata.PARTNO.isEmpty() == false) wheres.Add($"PART_NO='{vdata.PARTNO}'");
|
||||
else Apply = false;
|
||||
}
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Where_SID])
|
||||
{
|
||||
if (VAR.BOOL[eVarBool.Opt_SIDConvert]) //if sid convert logic
|
||||
{
|
||||
if (vdata.SID_Trust && vdata.SID0.isEmpty() == false && vdata.SID.isEmpty() == false) wheres.Add($"SID='{vdata.SID}'");
|
||||
else Apply = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (vdata.SID_Trust && vdata.SID.isEmpty() == false) wheres.Add($"SID='{vdata.SID}'");
|
||||
else Apply = false;
|
||||
}
|
||||
}
|
||||
if (VAR.BOOL[eVarBool.Opt_SID_Where_VLOT]) //221013
|
||||
{
|
||||
if (vdata.VLOT_Trust && vdata.VLOT.isEmpty() == false) wheres.Add($"VENDER_LOT = '{vdata.VLOT}'");
|
||||
else Apply = false;
|
||||
}
|
||||
|
||||
//if query data . no error
|
||||
if (Apply && fields.Count > 0 && wheres.Count > 0)
|
||||
{
|
||||
var mcname = VAR.BOOL[eVarBool.Use_Conveyor] ? PUB.MCCode : SETTING.Data.McName;
|
||||
|
||||
var TableName = "VW_GET_MAX_QTY_VENDOR_LOT";
|
||||
var whereState = " where " + string.Join(" and ", wheres);
|
||||
var selectFields = string.Join(",", fields);
|
||||
|
||||
var SQL = $"select top 1 {selectFields} from {TableName} WITH(NOLOCK) {whereState}";
|
||||
var SQLC = $"select count(*) from {TableName} WITH(NOLOCK) {whereState}";
|
||||
|
||||
if (PUB.Result.ItemDataC.VisionData.LastQueryStringWMS.Equals(SQL) == false) //같은 쿼리는 처리하지 않는다
|
||||
{
|
||||
PUB.log.Add($"DATABAES : WMS INFORMATIION QUERY");
|
||||
PUB.log.Add(SQL);
|
||||
var CS = Properties.Settings.Default.CS;
|
||||
var CN = new System.Data.SqlClient.SqlConnection(CS);
|
||||
var CMD = new System.Data.SqlClient.SqlCommand(SQL, CN);
|
||||
if (CN.State == System.Data.ConnectionState.Closed) CN.Open();
|
||||
|
||||
//데이터가 중복으로 존재하는지 확인한다. 231006
|
||||
CMD.CommandText = SQLC;
|
||||
var cnt = int.Parse(CMD.ExecuteScalar().ToString());
|
||||
if (cnt == 1)
|
||||
{
|
||||
CMD.CommandText = SQL;
|
||||
var DAR = CMD.ExecuteReader();
|
||||
while (DAR.Read())
|
||||
{
|
||||
//loop select columns
|
||||
for (int i = 0; i < fields.Count; i++)
|
||||
{
|
||||
var colName = fields[i];
|
||||
var v = DAR[colName];
|
||||
if (v != null)
|
||||
{
|
||||
var vStr = v.ToString().RemoveNoneASCII().Trim();
|
||||
if (vStr.isEmpty()) continue;
|
||||
|
||||
if (PUB.UpdateSIDInfoData(ref vdata, colName, vStr)) NewBarcodeUpdated = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
DAR.Close();
|
||||
}
|
||||
CMD.Dispose();
|
||||
if (CN.State == System.Data.ConnectionState.Open) CN.Close();
|
||||
CN.Dispose();
|
||||
PUB.Result.ItemDataC.VisionData.LastQueryStringWMS = SQL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//시드변환정보에서 정보 추출
|
||||
if (VAR.BOOL[eVarBool.Opt_ApplySIDConv] && vdata.BarcodeDirty == true)
|
||||
{
|
||||
Boolean Apply = true;
|
||||
|
||||
@@ -514,7 +413,7 @@ namespace Project
|
||||
if (VAR.BOOL[eVarBool.Opt_Conv_Apply_SID] && (vdata.SID_Trust == false || vdata.SID.isEmpty())) fields.Add("SID");
|
||||
if (VAR.BOOL[eVarBool.Opt_Conv_Apply_Batch] && (vdata.SID_Trust == false || vdata.BATCH.isEmpty())) fields.Add("batch"); //220921
|
||||
if (VAR.BOOL[eVarBool.Opt_Conv_Apply_QtyMax] && (vdata.SID_Trust == false || vdata.QTYMAX.isEmpty())) fields.Add("qtymax"); //220921
|
||||
|
||||
|
||||
|
||||
//where coluns
|
||||
List<string> wheres = new List<string>();
|
||||
@@ -564,19 +463,15 @@ namespace Project
|
||||
if (VAR.BOOL[eVarBool.Use_Conveyor]) mcname = PUB.MCCode;
|
||||
|
||||
var SQL = "select top 1 " + string.Join(",", fields) +
|
||||
" from Component_Reel_SID_Convert WITH(NOLOCK)" +
|
||||
" from K4EE_Component_Reel_SID_Convert WITH(NOLOCK)" +
|
||||
" where " + string.Join(" and ", wheres) +
|
||||
" order by wdate desc";
|
||||
|
||||
var SQLC = "select count(*)" +
|
||||
" from Component_Reel_SID_Convert WITH(NOLOCK)" +
|
||||
" from K4EE_Component_Reel_SID_Convert WITH(NOLOCK)" +
|
||||
" where " + string.Join(" and ", wheres);
|
||||
|
||||
if (PUB.Result.ItemDataC.VisionData.LastQueryString.Equals(SQL))
|
||||
{
|
||||
//같은 쿼리이므로 처리하지 않는다
|
||||
}
|
||||
else
|
||||
if (PUB.Result.ItemDataC.VisionData.LastQueryStringCNV.Equals(SQL) == false)
|
||||
{
|
||||
|
||||
PUB.log.Add($"DATABAES : SID(CONV) INFORMATIION QUERY");
|
||||
@@ -605,75 +500,7 @@ namespace Project
|
||||
var vStr = v.ToString().RemoveNoneASCII().Trim();
|
||||
if (vStr.isEmpty()) continue;
|
||||
|
||||
//O_Trust == false)) fields.Add("PartNo");
|
||||
//ields.Add("PrintPosition");
|
||||
//ta.VNAME.isEmpty())) fields.Add("VenderName");
|
||||
//Empty())) fields.Add("SID");
|
||||
|
||||
//value is not empty
|
||||
if (colName == "CustCode")
|
||||
{
|
||||
PUB.log.Add($"AUP [{colName}] {vdata.CUSTCODE}=>{vStr}");
|
||||
vdata.CUSTCODE = vStr;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "PartNo")
|
||||
{
|
||||
PUB.log.Add($"AUP [{colName}] {vdata.PARTNO}=>{vStr}");
|
||||
vdata.PARTNO = vStr;
|
||||
vdata.PARTNO_Trust = true;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "PrintPosition")
|
||||
{
|
||||
PUB.log.Add($"AUP [{colName}] {vdata.PrintPositionData}=>{vStr}");
|
||||
vdata.PrintPositionData = vStr;
|
||||
vdata.PrintPositionCheck = true;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "VenderName")
|
||||
{
|
||||
PUB.log.Add($"AUP [{colName}] {vdata.VNAME}=>{vStr}");
|
||||
vdata.VNAME = vStr;
|
||||
vdata.VNAME_Trust = true;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "VenderLot")
|
||||
{
|
||||
PUB.log.Add($"AUP [{colName}] {vdata.VLOT}=>{vStr}");
|
||||
vdata.VLOT = vStr;
|
||||
vdata.VLOT_Trust = true;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "SID")
|
||||
{
|
||||
PUB.log.Add($"AUP [{colName}] {vdata.SID}=>{vStr}");
|
||||
vdata.SID = vStr;
|
||||
vdata.SID_Trust = vdata.SID.Length == 9;
|
||||
if (vStr.Length != 9)
|
||||
{
|
||||
PUB.log.AddE($"DB SID LEN ERROR:{vStr},LEN={vStr.Length}");
|
||||
}
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "batch")
|
||||
{
|
||||
PUB.log.Add($"AUP [{colName}] {vdata.BATCH}=>{vStr}");
|
||||
vdata.BATCH = vStr;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "qtymax")
|
||||
{
|
||||
PUB.log.Add($"AUP [{colName}] {vdata.BATCH}=>{vStr}");
|
||||
vdata.QTYMAX = vStr;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName.ToLower() == "attach")
|
||||
{
|
||||
PUB.log.Add($"attach [{colName}] {vdata.Target}=>{vStr}");
|
||||
vdata.Target = vStr;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
if (PUB.UpdateSIDInfoData(ref vdata, colName, vStr)) NewBarcodeUpdated = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -682,13 +509,13 @@ namespace Project
|
||||
CMD.Dispose();
|
||||
if (CN.State == System.Data.ConnectionState.Open) CN.Close();
|
||||
CN.Dispose();
|
||||
PUB.Result.ItemDataC.VisionData.LastQueryString = SQL;
|
||||
PUB.Result.ItemDataC.VisionData.LastQueryStringCNV = SQL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//기존 작업에서 데이터를 찾아서 쓴다
|
||||
if (VAR.BOOL[eVarBool.Opt_ApplyJobInfo] && vdata.BarcodeTouched == true)
|
||||
if (VAR.BOOL[eVarBool.Opt_ApplyJobInfo] && vdata.BarcodeDirty == true)
|
||||
{
|
||||
Boolean Apply = true;
|
||||
|
||||
@@ -729,7 +556,7 @@ namespace Project
|
||||
PUB.log.Add($"DATABAES : RESULT QUERY");
|
||||
|
||||
var SQL = "select top 1 " + string.Join(",", fields) +
|
||||
" from Component_Reel_Result WITH(NOLOCK) " +
|
||||
" from K4EE_Component_Reel_Result WITH(NOLOCK) " +
|
||||
$" where mc = '{AR.SETTING.Data.McName}'" +
|
||||
$" and prnattach = 1 and stime >= '{DateTime.Now.AddHours(-3).ToString("yyyy-MM-dd HH:mm:ss")}'" +
|
||||
$" and " + string.Join(" and ", wheres) +
|
||||
@@ -760,53 +587,8 @@ namespace Project
|
||||
var vStr = v.ToString().RemoveNoneASCII().Trim();
|
||||
if (vStr.isEmpty()) continue;
|
||||
|
||||
//O_Trust == false)) fields.Add("PartNo");
|
||||
//ields.Add("PrintPosition");
|
||||
//ta.VNAME.isEmpty())) fields.Add("VenderName");
|
||||
//Empty())) fields.Add("SID");
|
||||
|
||||
//value is not empty
|
||||
if (colName == "CUSTCODE")
|
||||
{
|
||||
PUB.log.Add($"JUP [{colName}] {vdata.CUSTCODE}=>{vStr}");
|
||||
vdata.CUSTCODE = vStr;
|
||||
if (PUB.UpdateSIDInfoData(ref vdata, colName, vStr))
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "PARTNO")
|
||||
{
|
||||
PUB.log.Add($"JUP [{colName}] {vdata.PARTNO}=>{vStr}");
|
||||
vdata.PARTNO = vStr;
|
||||
vdata.PARTNO_Trust = true;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "POS")
|
||||
{
|
||||
PUB.log.Add($"JUP [{colName}] {vdata.PrintPositionData}=>{vStr}");
|
||||
vdata.PrintPositionData = vStr;
|
||||
vdata.PrintPositionCheck = true;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "VNAME")
|
||||
{
|
||||
PUB.log.Add($"JUP [{colName}] {vdata.VNAME}=>{vStr}");
|
||||
vdata.VNAME = vStr;
|
||||
vdata.VNAME_Trust = true;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "VenderLot")
|
||||
{
|
||||
PUB.log.Add($"JUP [{colName}] {vdata.VLOT}=>{vStr}");
|
||||
vdata.VLOT = vStr;
|
||||
vdata.VLOT_Trust = true;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
else if (colName == "SID")
|
||||
{
|
||||
PUB.log.Add($"JUP [{colName}] {vdata.SID}=>{vStr}");
|
||||
vdata.SID = vStr;
|
||||
vdata.SID_Trust = true;
|
||||
NewBarcodeUpdated = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -818,28 +600,10 @@ namespace Project
|
||||
}
|
||||
}
|
||||
|
||||
if (PUB.sm.Step == eSMStep.RUN)
|
||||
{
|
||||
var CVMode = VAR.BOOL[eVarBool.Use_Conveyor];
|
||||
if (itemC.VisionData.VNAME.isEmpty() == false &&
|
||||
itemC.VisionData.VLOT.isEmpty() == false &&
|
||||
itemC.VisionData.SID.Length == 9 &&
|
||||
itemC.VisionData.MFGDATE.isEmpty() == false &&
|
||||
(itemC.VisionData.PARTNO.isEmpty() == false) &&
|
||||
itemC.VisionData.BATCH.isEmpty() == false &&
|
||||
itemC.VisionData.RID.isEmpty() == false)
|
||||
{
|
||||
//모든값이 입력되어 있다면 조건 체크후 진행할 수 있도록 한다
|
||||
CheckDataComplte(itemC, "SPS-BARCODEPROCESS", false); //2206211400
|
||||
}
|
||||
//CheckDataComplte(PUB.Result.ItemDataC, "SPS-BARCODEPROCESS");
|
||||
}
|
||||
|
||||
//바코드 처리 여부 변경
|
||||
if (vdata.BarcodeTouched == true && NewBarcodeUpdated == false)
|
||||
if (vdata.BarcodeDirty == true && NewBarcodeUpdated == false)
|
||||
{
|
||||
vdata.BarcodeTouched = false;
|
||||
var a = PUB.Result.ItemDataC.VisionData.BarcodeTouched;
|
||||
vdata.BarcodeDirty = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@ namespace Project
|
||||
if (PUB.sm.seq.Get(cmdIndex) == idx++)
|
||||
{
|
||||
//홈 설정여부플래그 OFF
|
||||
for (int i = 0; i < PUB.mot.DeviceCount; i++)
|
||||
for (short i = 0; i < PUB.mot.DeviceCount; i++)
|
||||
{
|
||||
if (PUB.mot.IsUse(i) == false) continue;
|
||||
PUB.mot.SetHomeSet(i, false);
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace Project
|
||||
//Int32[] _bufferSize = new Int32[] { 0, 0, 0 };
|
||||
//Boolean[] _isCrevisOpen = new bool[] { false, false, false };
|
||||
//Boolean[] _isCrevisACQ = new bool[] { false, false, false };
|
||||
// IntPtr[] _pImage = new IntPtr[] { IntPtr.Zero, IntPtr.Zero, IntPtr.Zero };
|
||||
// IntPtr[] _pImage = new IntPtr[] { IntPtr.Zero, IntPtr.Zero, IntPtr.Zero };
|
||||
|
||||
public void _STEP_INIT_START(eSMStep step)
|
||||
{
|
||||
@@ -56,9 +56,9 @@ namespace Project
|
||||
DIO.SetPortMotor(2, eMotDir.CW, false, "init");
|
||||
}
|
||||
else PUB.log.AddE(string.Format("DIO INIT ERROR : {0}", PUB.dio.ErrorMessage));
|
||||
TowerLamp.Init(PUB.dio,
|
||||
TowerLamp.Init(PUB.dio,
|
||||
DIO.Pin[eDOName.TWR_REDF].terminalno,
|
||||
DIO.Pin[eDOName.TWR_GRNF].terminalno,
|
||||
DIO.Pin[eDOName.TWR_GRNF].terminalno,
|
||||
DIO.Pin[eDOName.TWR_YELF].terminalno);
|
||||
|
||||
TowerLamp.Enable = !SETTING.Data.Disable_TowerLamp;
|
||||
@@ -72,21 +72,11 @@ namespace Project
|
||||
//230504
|
||||
hmi1.SetDIO(PUB.dio);
|
||||
hmi1.SetMOT(PUB.mot);
|
||||
|
||||
|
||||
//남은 공간
|
||||
PUB.sm.RaiseStateProgress(++progress, "공간 확인", ProgressMax, fColor); System.Threading.Thread.Sleep(5);
|
||||
CheckFreeSpace(); //181225
|
||||
|
||||
//모델자동선택 181206
|
||||
PUB.sm.RaiseStateProgress(++progress, "이전모델 확인", ProgressMax, fColor); System.Threading.Thread.Sleep(5);
|
||||
|
||||
//
|
||||
if (PUB.uSetting.LastModelV != "") PUB.SelectModelV(PUB.uSetting.LastModelV, false);
|
||||
var motionmodel = PUB.uSetting.LastModelM;
|
||||
if (motionmodel.isEmpty()) motionmodel = PUB.Result.vModel.Motion;
|
||||
if (motionmodel.ToUpper().StartsWith("CONV")) PUB.flag.set(eVarBool.Use_Conveyor, true, "load");
|
||||
else PUB.flag.set(eVarBool.Use_Conveyor, false, "load");
|
||||
PUB.SelectModelM(motionmodel, false);
|
||||
|
||||
//프린터설정
|
||||
PUB.sm.RaiseStateProgress(++progress, "프린터설정", ProgressMax, fColor); System.Threading.Thread.Sleep(5);
|
||||
@@ -99,6 +89,18 @@ namespace Project
|
||||
PUB.PrinterR.BaudRate = AR.SETTING.Data.PrintR_Baud;
|
||||
|
||||
PUB.flag.set(eVarBool.FG_INIT_PRINTER, true, "INIT");
|
||||
|
||||
//모델자동선택 181206
|
||||
PUB.sm.RaiseStateProgress(++progress, "이전모델 확인", ProgressMax, fColor); System.Threading.Thread.Sleep(5);
|
||||
|
||||
//
|
||||
if (PUB.uSetting.LastModelV != "") PUB.SelectModelV(PUB.uSetting.LastModelV, false);
|
||||
var motionmodel = PUB.uSetting.LastModelM;
|
||||
if (motionmodel.isEmpty()) motionmodel = PUB.Result.vModel.Motion;
|
||||
if (motionmodel.ToUpper().StartsWith("CONV")) PUB.flag.set(eVarBool.Use_Conveyor, true, "load");
|
||||
else PUB.flag.set(eVarBool.Use_Conveyor, false, "load");
|
||||
PUB.SelectModelM(motionmodel, false);
|
||||
|
||||
PUB.sm.RaiseStateProgress(ProgressMax, "초기화 완료", ProgressMax, Color.Gold); System.Threading.Thread.Sleep(5);
|
||||
PUB.log.Add("init finish");
|
||||
|
||||
@@ -153,42 +155,43 @@ namespace Project
|
||||
PUB.mot.SetAlarmClearOff();
|
||||
|
||||
//7개의 축을 사용한다
|
||||
for (int i = 0; i < PUB.system.MotaxisCount; i++)
|
||||
if (PUB.mot.IsInit == false)
|
||||
{
|
||||
//설정파일이 있다면 불러온다
|
||||
var file = System.IO.Path.Combine(UTIL.CurrentPath, "Model", "axis" + i.ToString() + ".motaxt");
|
||||
if (System.IO.File.Exists(file) == false)
|
||||
{
|
||||
PUB.log.AddAT($"모션({i}) 설정파일 없음!!");
|
||||
PUB.mot.InitAxis(i, file);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (PUB.mot.InitAxis((short)i, file) == false)
|
||||
PUB.log.AddE("모션 설정 실패 축:" + i.ToString());
|
||||
else
|
||||
PUB.log.AddI($"모션({i}) 설정 완료");
|
||||
}
|
||||
PUB.log.AddE("모션보드 초기화 오류로 설정을 진행하지 않습니다");
|
||||
}
|
||||
|
||||
//EStop Disable
|
||||
PUB.mot.SetEStopEnable(0, false);
|
||||
PUB.mot.SetEStopEnable(1, false);
|
||||
PUB.mot.SetEStopEnable(2, false);
|
||||
PUB.mot.SetEStopEnable(3, false);
|
||||
PUB.mot.SetEStopEnable(4, false);
|
||||
PUB.mot.SetEStopEnable(5, false);
|
||||
PUB.mot.SetEStopEnable(6, false);
|
||||
|
||||
//softlimit 적용 - 201214
|
||||
UpdateSoftLimit();
|
||||
|
||||
//PUB.mot.[(short)eAxis.Z_PICKER] = true;
|
||||
//PUB.mot.useBrake[(short)eAxis.PL_UPDN] = true;
|
||||
//PUB.mot.useBrake[(short)eAxis.PR_UPDN] = true;
|
||||
|
||||
if (PUB.mot.IsInit)
|
||||
else
|
||||
{
|
||||
for (short i = 0; i < PUB.system.MotaxisCount; i++)
|
||||
{
|
||||
//설정파일이 있다면 불러온다
|
||||
var file = System.IO.Path.Combine(UTIL.CurrentPath, "Model", "axis" + i.ToString() + ".motaxt");
|
||||
if (System.IO.File.Exists(file) == false)
|
||||
{
|
||||
PUB.log.AddAT($"모션({i}) 설정파일 없음!!");
|
||||
PUB.mot.InitAxis(i, file);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (PUB.mot.InitAxis((short)i, file) == false)
|
||||
PUB.log.AddE("모션 설정 실패 축:" + i.ToString());
|
||||
else
|
||||
PUB.log.AddI($"모션({i}) 설정 완료");
|
||||
}
|
||||
}
|
||||
|
||||
//EStop Disable
|
||||
PUB.mot.SetEStopEnable(0, false);
|
||||
PUB.mot.SetEStopEnable(1, false);
|
||||
PUB.mot.SetEStopEnable(2, false);
|
||||
PUB.mot.SetEStopEnable(3, false);
|
||||
PUB.mot.SetEStopEnable(4, false);
|
||||
PUB.mot.SetEStopEnable(5, false);
|
||||
PUB.mot.SetEStopEnable(6, false);
|
||||
|
||||
//softlimit 적용 - 201214
|
||||
UpdateSoftLimit();
|
||||
|
||||
|
||||
PUB.log.Add("MOT RUN MONITOR");
|
||||
PUB.mot.RunMonitor();
|
||||
PUB.log.AddAT("ALL SERVO ON");
|
||||
|
||||
@@ -44,7 +44,7 @@ namespace Project
|
||||
}
|
||||
|
||||
var reason = string.Join(",", lst);
|
||||
PUB.log.Add("MOT", $"모터정지사유({e.Axis}):{reason}:bit={bitstatus}");
|
||||
PUB.log.Add("MOT", $"모터정지사유({e.axis}):{reason}:bit={bitstatus}");
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user