This commit is contained in:
ChiKyun Kim
2025-09-09 08:25:50 +09:00
parent 9a7d1d27c7
commit adb66451ca
79 changed files with 4195 additions and 2213 deletions

View File

@@ -29,13 +29,13 @@ namespace Project
// try
// {
// DateTime SetTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + COMM.SETTING.Data.datetime_Reset_1 + ":00");
// DateTime LastClearTime = Pub.counter.;
// DateTime LastClearTime = SETTING.Counter.;
// //현재 시간이 클리어대상 시간보다 크고, 마지막으로 클리어한 시간이 지정시간보다 작아야함
// if (DateTime.Now > SetTime && LastClearTime < SetTime)
// {
// Pub.log.AddI("Count Reset #1");
// Pub.counter.ClearDay();
// SETTING.Counter.ClearDay();
// }
// }
// catch { }
@@ -46,13 +46,13 @@ namespace Project
// try
// {
// DateTime SetTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + COMM.SETTING.Data.datetime_Reset_2 + ":00");
// DateTime LastClearTime = Pub.counter.CountReset;
// DateTime LastClearTime = SETTING.Counter.CountReset;
// //현재 시간이 클리어대상 시간보다 크고, 마지막으로 클리어한 시간이 지정시간보다 작아야함
// if (DateTime.Now > SetTime && LastClearTime < SetTime)
// {
// Pub.log.AddI("Count Reset #2");
// Pub.counter.ClearDay();
// SETTING.Counter.ClearDay();
// }
// }
// catch { }

View File

@@ -30,8 +30,8 @@ namespace Project
lbCntLeft.Text = $"{VAR.I32[eVarInt32.LPickOfCount]}";
lbCntRight.Text = $"{VAR.I32[eVarInt32.RPickOfCount]}";
lbCntPicker.Text = $"{VAR.I32[eVarInt32.PickOfCount]}";
//lbCntPrnL.Text = $"{PUB.counter.CountPrintL}";
//lbCnrPrnR.Text = $"{PUB.counter.CountPrintR}";
//lbCntPrnL.Text = $"{SETTING.Counter.CountPrintL}";
//lbCnrPrnR.Text = $"{SETTING.Counter.CountPrintR}";
if (AR.SETTING.Data.Enable_SpeedLimit)
grpProgress.Text = $"작업 수량(속도제한:{AR.SETTING.Data.LimitSpeed})";

View File

@@ -237,25 +237,25 @@ namespace Project
hmi1.arVar_Port[0].LimitUpper = DIO.GetIOInput(eDIName.PORTL_LIM_UP);
hmi1.arVar_Port[0].DetectUp = DIO.GetIOInput(eDIName.PORTL_DET_UP);
hmi1.arVar_Port[0].SaftyErr = !DIO.isSaftyDoorF(0, false);
hmi1.arVar_Port[0].reelCount = PUB.counter.CountP0;
hmi1.arVar_Port[0].reelCount = SETTING.Counter.CountP0;
hmi1.arVar_Port[0].CartSize = (int)DIO.getCartSize(0);
hmi1.arVar_Port[1].LimitLower = DIO.GetIOInput(eDIName.PORTC_LIM_DN); //front-right
hmi1.arVar_Port[1].LimitUpper = DIO.GetIOInput(eDIName.PORTC_LIM_UP);
hmi1.arVar_Port[1].DetectUp = DIO.GetIOInput(eDIName.PORTC_DET_UP);
hmi1.arVar_Port[1].SaftyErr = !DIO.isSaftyDoorF(1, false);
hmi1.arVar_Port[1].reelCount = PUB.counter.CountP1;
hmi1.arVar_Port[1].reelCount = SETTING.Counter.CountP1;
hmi1.arVar_Port[1].CartSize = (int)DIO.getCartSize(1);
hmi1.arVar_Port[2].LimitLower = DIO.GetIOInput(eDIName.PORTR_LIM_DN); //front-left
hmi1.arVar_Port[2].LimitUpper = DIO.GetIOInput(eDIName.PORTR_LIM_UP);
hmi1.arVar_Port[2].DetectUp = DIO.GetIOInput(eDIName.PORTR_DET_UP);
hmi1.arVar_Port[2].SaftyErr = !DIO.isSaftyDoorF(2, false);
hmi1.arVar_Port[2].reelCount = PUB.counter.CountP2;
hmi1.arVar_Port[2].reelCount = SETTING.Counter.CountP2;
hmi1.arVar_Port[2].CartSize = (int)DIO.getCartSize(2);
hmi1.arCountPrint0 = PUB.counter.CountPrintL;
hmi1.arCountPrint1 = PUB.counter.CountPrintR;
hmi1.arCountPrint0 = SETTING.Counter.CountPrintL;
hmi1.arCountPrint1 = SETTING.Counter.CountPrintR;
if (VAR.BOOL[eVarBool.Use_Conveyor])
{
@@ -263,9 +263,9 @@ namespace Project
hmi1.arVar_Port[2].reelCount = VAR.I32[eVarInt32.RIGT_ITEM_COUNT];
}
hmi1.arCountV1 = PUB.counter.CountV1;
hmi1.arCountV0 = PUB.counter.CountV0;
hmi1.arCountV2 = PUB.counter.CountV2;
hmi1.arCountV1 = SETTING.Counter.CountV1;
hmi1.arCountV0 = SETTING.Counter.CountV0;
hmi1.arCountV2 = SETTING.Counter.CountV2;
//피커 백큠감지 상태(Front)
hmi1.arVar_Picker[0].VacOutput[0] = DIO.GetIOOutput(eDOName.PICK_VAC1);

View File

@@ -64,7 +64,7 @@ namespace Project
var limport = new List<string>();
if (PUB.mot.HasLimitError == true)
{
for (short i = 0; i < PUB.system.MotaxisCount; i++)
for (short i = 0; i < SETTING.System.MotaxisCount; i++)
{
if (PUB.mot.IsUse(i) == false) continue;
if (PUB.mot.IsLimitN(i))

View File

@@ -23,7 +23,7 @@ namespace Project
"디스크 공간(3%)이 부족하여 작업을 진행할 수 없습니다\n" +
"저장경로 : {0}\n" +
"데이터를 삭제하거나 설정의 삭제주기를 확인하세요";
msg = string.Format(msg, AR.SETTING.Data.Path_Data);
msg = string.Format(msg, AR.SETTING.Data.GetDataPath());
PUB.popup.setMessage(msg);
DIO.SetBuzzer(true);
PUB.sm.SetNewStep(eSMStep.IDLE);

View File

@@ -298,6 +298,31 @@ namespace Project
}
return false;
}
else if (Complete == EResultKeyence.MultiSID)
{
//이미 사용자 확인창
if (PUB.flag.get(eVarBool.FG_WAIT_INFOSELECT))
{
//아무것도 하지 않는다
//사용자가 정보를 설정하는 중
}
else
{
bool SHowUserFormINF = true;
//사용자 확인창을 표시한다
if (SHowUserFormINF) //다중SID정보 선택건
{
this.Invoke(new Action(() =>
{
PUB.log.Add("사용자 선택창(INF)을 호출 합니다");
var f = new Dialog.fSelectSIDInformation();
f.Show();
}));
}
}
return false;
}
else if (Complete == EResultKeyence.TimeOut)
{
//이미 사용자 확인창
@@ -309,23 +334,23 @@ namespace Project
else
{
//반복시도횟수가 설정되지 않았거나 최대를 초과하면 사용자 확인창을 띄운다
bool ShowUserForm = false;
bool ShowUserFormBCD = false;
if (AR.SETTING.Data.RetryPickOnMaxCount == 0)
{
PUB.log.Add($"픽온 재시작 횟수가 없어 사용자 확인창을 띄웁니다");
ShowUserForm = true;
ShowUserFormBCD = true;
}
else if (AR.VAR.I32[AR.eVarInt32.PickOnRetry] >= AR.SETTING.Data.RetryPickOnMaxCount)
{
PUB.log.Add($"픽온 재시도 횟수가 초과됨 (최대:{AR.SETTING.Data.RetryPickOnMaxCount})");
ShowUserForm = true;
ShowUserFormBCD = true;
}
else
{
if (VAR.BOOL[eVarBool.Need_UserConfirm_Data])
{
PUB.log.Add($"사용자확인창을 띄워야함");
ShowUserForm = true;
ShowUserFormBCD = true;
}
else
{
@@ -333,18 +358,16 @@ namespace Project
if (PUB.Result.ItemDataC.VisionData.SID.isEmpty() || PUB.Result.ItemDataC.VisionData.SID_Trust == false)
{
PUB.log.Add($"픽온을 재시도 합니다 ({AR.VAR.I32[AR.eVarInt32.PickOnRetry]}/{AR.SETTING.Data.RetryPickOnMaxCount})");
ShowUserForm = false;
ShowUserFormBCD = false;
}
else
{
PUB.log.Add($"SID값이 있으니 재시도하지 않고 사용자확인창을 띄웁니다");
ShowUserForm = true;
ShowUserFormBCD = true;
}
}
}
//사용자 확인창을 표시한다
if (ShowUserForm)
if (ShowUserFormBCD)
{
this.Invoke(new Action(() =>
{

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Security.Cryptography;
using System.ServiceModel.Configuration;
using System.Text;
using AR;
using Project.Class;
@@ -16,6 +17,7 @@ namespace Project
Wait = 0,
Complete,
TimeOut,
MultiSID,
}
public EResultKeyence KEYENCE_READ(eWorkPort target, eSMStep cmdIndex)
{
@@ -67,6 +69,8 @@ namespace Project
}
VAR.BOOL[eVarBool.Need_UserConfirm_Data] = false;
VAR.STR[eVarString.MULTISID_FIELDS] = string.Empty;
VAR.STR[eVarString.MULTISID_QUERY] = string.Empty;
VAR.TIME.Update(eVarTime.KEYENCEWAIT);
PUB.sm.seq.Update(cmdIndex);
return EResultKeyence.Wait;
@@ -92,35 +96,41 @@ namespace Project
//동작중이아니라면 처리하지 않음
if (PUB.sm.getNewStep != eSMStep.RUN) return EResultKeyence.Wait;
//var k1 = UpLoadBarcodeConfig(PUB.keyenceF);
//바이패스라면 무조건ok한다.
var systembypassmode = SETTING.Data.SystemBypass;
if (systembypassmode && PUB.flag.get(eVarBool.FG_RDY_PORT_PC))
{
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;
vdata.SetRID("BP" + DateTime.Now.ToString("yyyyMMddHHmmss"), "bp");
vdata.SID = ("100000000");
vdata.VNAME = "BYPASS";
vdata.MFGDATE = DateTime.Now.ToString("yyyy-MM-dd");
vdata.VLOT = "BYPASS";
vdata.CUSTCODE = "0000";
vdata.CUSTNAME = "BYPASS";
vdata.QTY = "10000";
vdata.ConfirmUser = true;
vdata.PrintPositionData = "1";
vdata.PrintPositionCheck = true;
vdata.MFGDATE_Trust = true;
vdata.PARTNO_Trust = true;
vdata.QTY_Trust = true;
vdata.RID_Trust = true;
vdata.SID_Trust = true;
vdata.VLOT_Trust = true;
vdata.VNAME_Trust = true;
return EResultKeyence.Complete;
}
//로더정보를 사용자가 처리중이면 동작 안함
if (PUB.flag.get(eVarBool.FG_WAIT_LOADERINFO)) return EResultKeyence.TimeOut;
if (VAR.BOOL[eVarBool.FG_WAIT_LOADERINFO]) return EResultKeyence.TimeOut;
//다중SID환경에서 데이터를 선택하고 있다.
if (VAR.BOOL[eVarBool.FG_WAIT_INFOSELECT]) return EResultKeyence.Wait;
//데이터 처리 시간을 넘어서면 사용자 확인 창을 띄운다 220621
var ts = VAR.TIME.RUN((int)eVarTime.KEYENCEWAIT);
if (PUB.flag.get(eVarBool.FG_RDY_PORT_PC) && ts.TotalMilliseconds > AR.SETTING.Data.Timeout_VisionProcessL)
if (VAR.BOOL[eVarBool.FG_RDY_PORT_PC] && ts.TotalMilliseconds > AR.SETTING.Data.Timeout_VisionProcessL)
{
//화면업데이트를 종료한다
if (PUB.keyenceF != null) PUB.keyenceF.Trigger(false);
if (PUB.keyenceR != null) PUB.keyenceR.Trigger(false);
@@ -142,18 +152,10 @@ namespace Project
itemC.VisionData.SetImage(
new Emgu.CV.Mat(tempfiF.FullName, Emgu.CV.CvEnum.ImreadModes.Grayscale),
new Emgu.CV.Mat(tempfiR.FullName, Emgu.CV.CvEnum.ImreadModes.Grayscale));
//using (var tempimg = new Emgu.CV.Image<Emgu.CV.Structure.Gray, byte>(tempfi.FullName))
//{
// itemC.VisionData.SetImage(tempimg);
//}
}
else if (CurImageF)
{
itemC.VisionData.SetImage(new Emgu.CV.Mat(tempfiF.FullName, Emgu.CV.CvEnum.ImreadModes.Grayscale));
//using (var tempimg = new Emgu.CV.Image<Emgu.CV.Structure.Gray, byte>(tempfi.FullName))
//{
// itemC.VisionData.SetImage(tempimg);
//}
}
PUB.keyenceF.Trigger(true);
PUB.keyenceR.Trigger(true);
@@ -184,7 +186,6 @@ namespace Project
}
}
//기본 벤더이름
if (OPT_BYPASS == false && PUB.Result.vModel.Def_Vname.isEmpty() == false)
{
@@ -206,10 +207,87 @@ namespace Project
PUB.log.Add($"Defaul MFGDATE Set to {PUB.Result.vModel.Def_MFG}");
}
}
//옵션설정에 따른 외부데이터 가져오기 작업
bool NewBarcodeUpdated = false;
//[WMS] SID정보테이블에서 정보 추출(프린트정보는 없음)
//[WMS] 에서 중복검색되면 팝업을 해야하므로 이것을 먼저 처리한다.
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("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 (Apply && VAR.BOOL[eVarBool.Opt_SID_Where_CustCode])
{
if (vdata.CUSTCODE.isEmpty() == false) wheres.Add($"CUST_CODE='{vdata.CUSTCODE}'");
else Apply = false;
}
if (Apply && 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 (Apply && 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 (Apply && 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}";
//정보가 여러개 존재하면 선택화면으로 처리해야한다
var cntvalue = (DBHelper.ExecuteScalar(SQLC)?.ToString() ?? "0").toInt();
if (cntvalue > 1)
{
VAR.STR[eVarString.MULTISID_QUERY] = $"select {selectFields} from {TableName} WITH(NOLOCK) {whereState}";
VAR.STR[eVarString.MULTISID_FIELDS] = selectFields;
return EResultKeyence.MultiSID;
}
if (PUB.Result.ItemDataC.VisionData.LastQueryStringWMS.Equals(SQL) == false) //같은 쿼리는 처리하지 않는다
{
if (PUB.GetSIDInfo_And_SetData(fields, ref vdata, SQL, SQLC))
NewBarcodeUpdated = true;
PUB.Result.ItemDataC.VisionData.LastQueryStringWMS = SQL;
}
}
}
//SID정보테이블에서 정보 추출
if (VAR.BOOL[eVarBool.Opt_ApplySIDInfo] && vdata.BarcodeDirty == true)
@@ -230,20 +308,19 @@ namespace Project
//where coluns
List<string> wheres = new List<string>();
//wheres.Add($"MC='{COMM.SETTING.Data.McName}");
if (VAR.BOOL[eVarBool.Opt_SID_Where_CustCode])
if (Apply && 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 (Apply && 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 (Apply && VAR.BOOL[eVarBool.Opt_SID_Where_SID])
{
//if sid convert logic
if (VAR.BOOL[eVarBool.Opt_SIDConvert])
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}'");
@@ -255,16 +332,18 @@ namespace Project
else Apply = false;
}
}
if (VAR.BOOL[eVarBool.Opt_SID_Where_VLOT]) //221013
if (Apply && 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
if (Apply && VAR.BOOL[eVarBool.Opt_SID_Where_MC]) //231006
{
wheres.Add($"attach='{AR.SETTING.Data.McName}'");
if (AR.SETTING.Data.McName.isEmpty() == false)
wheres.Add($"attach='{AR.SETTING.Data.McName}'");
else Apply = false;
}
//if query data . no error
@@ -285,54 +364,151 @@ namespace Project
if (PUB.Result.ItemDataC.VisionData.LastQueryStringSID.Equals(SQL) == false)
{
if (PUB.GetSIDInfo_And_SetData(fields, ref vdata, SQL, SQLC) == true)
NewBarcodeUpdated = true;
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;
}
}
}
//시드변환정보에서 정보 추출
if (VAR.BOOL[eVarBool.Opt_ApplySIDConv] && vdata.BarcodeDirty == true)
{
Boolean Apply = true;
//select columns
List<string> fields = new List<string>();
if (VAR.BOOL[eVarBool.Opt_Conv_Apply_CustCode] && vdata.CUSTCODE.isEmpty()) fields.Add("CustCode");
if (VAR.BOOL[eVarBool.Opt_Conv_Apply_PartNo] && (vdata.PARTNO.isEmpty() || vdata.PARTNO_Trust == false)) fields.Add("PartNo");
if (VAR.BOOL[eVarBool.Opt_Conv_Apply_PrintPos] && vdata.PrintPositionData.isEmpty()) fields.Add("PrintPosition");
if (VAR.BOOL[eVarBool.Opt_Conv_Apply_VenderName] && (vdata.VNAME_Trust == false || vdata.VNAME.isEmpty())) fields.Add("VenderName");
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
//WMS정보테이블에서 정보 추출
//where coluns
List<string> wheres = new List<string>();
//wheres.Add($"MC='{COMM.SETTING.Data.McName}");
if (Apply && VAR.BOOL[eVarBool.Opt_Conv_Where_CustCode])
{
if (vdata.CUSTCODE.isEmpty() == false) wheres.Add($"CustCode='{vdata.CUSTCODE}'");
else Apply = false;
}
if (Apply && VAR.BOOL[eVarBool.Opt_Conv_Where_PartNo])
{
if (vdata.PARTNO_Trust && vdata.PARTNO.isEmpty() == false) wheres.Add($"PartNo='{vdata.PARTNO}'");
else Apply = false;
}
if (Apply && VAR.BOOL[eVarBool.Opt_Conv_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($"SIDTo='{vdata.SID}'");
else Apply = false;
}
else
{
if (vdata.SID_Trust && vdata.SID.isEmpty() == false) wheres.Add($"SIDTo='{vdata.SID}'");
else Apply = false;
}
}
if (VAR.BOOL[eVarBool.Opt_Conv_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;
}
//SID변환정보에서 정보 추출
//기존 작업내역에서 정보 추출
//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_Convert WITH(NOLOCK)" +
" where " + string.Join(" and ", wheres) +
" order by wdate desc";
var SQLC = "select count(*)" +
" from K4EE_Component_Reel_SID_Convert WITH(NOLOCK)" +
" where " + string.Join(" and ", wheres);
if (PUB.Result.ItemDataC.VisionData.LastQueryStringCNV.Equals(SQL) == false)
{
if (PUB.GetSIDInfo_And_SetData(fields, ref vdata, SQL, SQLC) == true)
NewBarcodeUpdated = true;
PUB.Result.ItemDataC.VisionData.LastQueryStringCNV = SQL;
}
}
}
//기존 작업에서 데이터를 찾아서 쓴다
if (VAR.BOOL[eVarBool.Opt_ApplyJobInfo] && vdata.BarcodeDirty == true)
{
Boolean Apply = true;
//select columns
List<string> fields = new List<string>();
if (VAR.BOOL[eVarBool.Opt_Job_Apply_CustCode] && vdata.CUSTCODE.isEmpty()) fields.Add("CUSTCODE");
if (VAR.BOOL[eVarBool.Opt_Job_Apply_PartNo] && (vdata.PARTNO.isEmpty() || vdata.PARTNO_Trust == false)) fields.Add("PARTNO");
if (VAR.BOOL[eVarBool.Opt_Job_Apply_PrintPos] && vdata.PrintPositionData.isEmpty()) fields.Add("POS");
if (VAR.BOOL[eVarBool.Opt_Job_Apply_VenderName] && (vdata.VNAME_Trust == false || vdata.VNAME.isEmpty())) fields.Add("VNAME");
if (VAR.BOOL[eVarBool.Opt_Job_Apply_SID] && (vdata.SID_Trust == false || vdata.SID.isEmpty())) fields.Add("SID");
//where coluns
List<string> wheres = new List<string>();
if (VAR.BOOL[eVarBool.Opt_Job_Where_CustCode])
{
if (vdata.CUSTCODE.isEmpty() == false) wheres.Add($"CUSTCODE='{vdata.CUSTCODE}'");
else Apply = false;
}
if (VAR.BOOL[eVarBool.Opt_Job_Where_PartNo])
{
if (vdata.PARTNO_Trust && vdata.PARTNO.isEmpty() == false) wheres.Add($"PARTNO='{vdata.PARTNO}'");
else Apply = false;
}
if (VAR.BOOL[eVarBool.Opt_Job_Where_SID])
{
if (vdata.SID_Trust && vdata.SID.isEmpty() == false) wheres.Add($"SID='{vdata.SID}'");
else Apply = false;
}
if (VAR.BOOL[eVarBool.Opt_Job_Where_VLOT])
{
if (vdata.VLOT_Trust && vdata.VLOT.isEmpty() == false) wheres.Add($"VenderLot='{vdata.VLOT}'");
else Apply = false;
}
//if query data . no error
if (Apply && fields.Count > 0 && wheres.Count > 0)
{
PUB.log.Add($"DATABAES : RESULT QUERY");
var SQL = "select top 1 " + string.Join(",", fields) +
" 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) +
$" order by wdate desc";
if (PUB.Result.ItemDataC.VisionData.LastQueryStringJOB.Equals(SQL) == false)
{
if (PUB.GetSIDInfo_And_SetData(fields, ref vdata, SQL, ""))
NewBarcodeUpdated = true;
PUB.Result.ItemDataC.VisionData.LastQueryStringJOB = SQL;
}
}
}
//해당 바코드작업이 완료되었는지 확인한다. 신규 바코드값이 업데이트되면 한번더 동작하도록 한다
if (itemC.VisionData.BarcodeDirty == true && NewBarcodeUpdated == false)
{
itemC.VisionData.BarcodeDirty = false;
@@ -377,7 +553,6 @@ namespace Project
}
}
//데이터확정 및 완료처리
if (itemC.VisionData.Confirm)
{
@@ -421,7 +596,6 @@ namespace Project
return EResultKeyence.Wait;
}
//####################################################
//###
//####################################################

View File

@@ -95,13 +95,13 @@ namespace Project
string zpl, qrdata;
zpl = Printer.makeZPL_210908(new Class.Reel
{
sid = item.VisionData.SID,
lot = item.VisionData.VLOT,
manu = item.VisionData.VNAME,
SID = item.VisionData.SID,
venderLot = item.VisionData.VLOT,
venderName = item.VisionData.VNAME,
qty = item.VisionData.QTY.isEmpty() ? -1 : int.Parse(item.VisionData.QTY),
id = item.VisionData.RID,
mfg = item.VisionData.MFGDATE,
partnum = item.VisionData.PARTNO,
PartNo = item.VisionData.PARTNO,
}, AR.SETTING.Data.DrawOutbox, out qrdata);
item.VisionData.ZPL = zpl;
item.VisionData.PrintQRData = qrdata;
@@ -119,7 +119,7 @@ namespace Project
}
else
{
PUB.counter.CountPrintL += 1;
SETTING.Counter.CountPrintL += 1;
item.PrintTime = DateTime.Now;
}
}
@@ -136,7 +136,7 @@ namespace Project
}
else
{
PUB.counter.CountPrintR += 1;
SETTING.Counter.CountPrintR += 1;
item.PrintTime = DateTime.Now;
}
}

View File

@@ -83,36 +83,36 @@ namespace Project
void IncCount(int seq, int port, int value = 1)
{
if (PUB.counter.DateStr != DateTime.Now.ToShortDateString())
if (SETTING.Counter.DateStr != DateTime.Now.ToShortDateString())
{
if (port == 0) PUB.counter.CountDP1 = value;
if (port == 1) PUB.counter.CountDP2 = value;
if (port == 2) PUB.counter.CountDP3 = value;
if (port == 3) PUB.counter.CountDP4 = value;
PUB.counter.DateStr = DateTime.Now.ToShortDateString();
if (port == 0) SETTING.Counter.CountDP1 = value;
if (port == 1) SETTING.Counter.CountDP2 = value;
if (port == 2) SETTING.Counter.CountDP3 = value;
if (port == 3) SETTING.Counter.CountDP4 = value;
SETTING.Counter.DateStr = DateTime.Now.ToShortDateString();
}
else
{
if (port == 0) PUB.counter.CountDP1 += value;
if (port == 1) PUB.counter.CountDP2 += value;
if (port == 2) PUB.counter.CountDP3 += value;
if (port == 3) PUB.counter.CountDP4 += value;
if (port == 0) SETTING.Counter.CountDP1 += value;
if (port == 1) SETTING.Counter.CountDP2 += value;
if (port == 2) SETTING.Counter.CountDP3 += value;
if (port == 3) SETTING.Counter.CountDP4 += value;
}
//각 포트별 수량은 차수별 작업이므로 차수가 변경되면 리셋됨
//리셋되는 코드 필요함
if (port == 0) PUB.counter.CountP0 += value;
if (port == 1) PUB.counter.CountP1 += value;
if (port == 2) PUB.counter.CountP2 += value;
if (port == 3) PUB.counter.CountPrintR += value;
if (port == 0) SETTING.Counter.CountP0 += value;
if (port == 1) SETTING.Counter.CountP1 += value;
if (port == 2) SETTING.Counter.CountP2 += value;
if (port == 3) SETTING.Counter.CountPrintR += value;
else
{
PUB.log.AddAT(string.Format("[{0}] 미지정 포트이므로 수량 증가 불가", seq));
}
//Pub.log.AddI("수량정보가 저장 되었습니다");
PUB.counter.Save();
SETTING.Counter.Save();
}

View File

@@ -158,7 +158,6 @@ namespace Project
if (vdata.Confirm) return;
var vm = PUB.Result.vModel;
//바코드목록에서 정규식값으로 각 필드값을 기록한다.
lock (vdata.barcodelist)
{
@@ -182,431 +181,6 @@ namespace Project
bcdObj.RegExConfirm = true;
}
}
//바코드가 변경된 경우이다, 자동채우기 기능이 있다면 사용한다
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 (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("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;
//select columns
List<string> fields = new List<string>();
if (VAR.BOOL[eVarBool.Opt_Conv_Apply_CustCode] && vdata.CUSTCODE.isEmpty()) fields.Add("CustCode");
if (VAR.BOOL[eVarBool.Opt_Conv_Apply_PartNo] && (vdata.PARTNO.isEmpty() || vdata.PARTNO_Trust == false)) fields.Add("PartNo");
if (VAR.BOOL[eVarBool.Opt_Conv_Apply_PrintPos] && vdata.PrintPositionData.isEmpty()) fields.Add("PrintPosition");
if (VAR.BOOL[eVarBool.Opt_Conv_Apply_VenderName] && (vdata.VNAME_Trust == false || vdata.VNAME.isEmpty())) fields.Add("VenderName");
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>();
//wheres.Add($"MC='{COMM.SETTING.Data.McName}");
if (VAR.BOOL[eVarBool.Opt_Conv_Where_CustCode])
{
if (vdata.CUSTCODE.isEmpty() == false) wheres.Add($"CustCode='{vdata.CUSTCODE}'");
else Apply = false;
}
if (VAR.BOOL[eVarBool.Opt_Conv_Where_PartNo])
{
if (vdata.PARTNO_Trust && vdata.PARTNO.isEmpty() == false) wheres.Add($"PartNo='{vdata.PARTNO}'");
else Apply = false;
}
if (VAR.BOOL[eVarBool.Opt_Conv_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($"SIDTo='{vdata.SID}'");
else Apply = false;
}
else
{
if (vdata.SID_Trust && vdata.SID.isEmpty() == false) wheres.Add($"SIDTo='{vdata.SID}'");
else Apply = false;
}
}
if (VAR.BOOL[eVarBool.Opt_Conv_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_Conv_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_Convert WITH(NOLOCK)" +
" where " + string.Join(" and ", wheres) +
" order by wdate desc";
var SQLC = "select count(*)" +
" from K4EE_Component_Reel_SID_Convert WITH(NOLOCK)" +
" where " + string.Join(" and ", wheres);
if (PUB.Result.ItemDataC.VisionData.LastQueryStringCNV.Equals(SQL) == false)
{
PUB.log.Add($"DATABAES : SID(CONV) 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.LastQueryStringCNV = SQL;
}
}
}
//기존 작업에서 데이터를 찾아서 쓴다
if (VAR.BOOL[eVarBool.Opt_ApplyJobInfo] && vdata.BarcodeDirty == true)
{
Boolean Apply = true;
//select columns
List<string> fields = new List<string>();
if (VAR.BOOL[eVarBool.Opt_Job_Apply_CustCode] && vdata.CUSTCODE.isEmpty()) fields.Add("CUSTCODE");
if (VAR.BOOL[eVarBool.Opt_Job_Apply_PartNo] && (vdata.PARTNO.isEmpty() || vdata.PARTNO_Trust == false)) fields.Add("PARTNO");
if (VAR.BOOL[eVarBool.Opt_Job_Apply_PrintPos] && vdata.PrintPositionData.isEmpty()) fields.Add("POS");
if (VAR.BOOL[eVarBool.Opt_Job_Apply_VenderName] && (vdata.VNAME_Trust == false || vdata.VNAME.isEmpty())) fields.Add("VNAME");
if (VAR.BOOL[eVarBool.Opt_Job_Apply_SID] && (vdata.SID_Trust == false || vdata.SID.isEmpty())) fields.Add("SID");
//where coluns
List<string> wheres = new List<string>();
if (VAR.BOOL[eVarBool.Opt_Job_Where_CustCode])
{
if (vdata.CUSTCODE.isEmpty() == false) wheres.Add($"CUSTCODE='{vdata.CUSTCODE}'");
else Apply = false;
}
if (VAR.BOOL[eVarBool.Opt_Job_Where_PartNo])
{
if (vdata.PARTNO_Trust && vdata.PARTNO.isEmpty() == false) wheres.Add($"PARTNO='{vdata.PARTNO}'");
else Apply = false;
}
if (VAR.BOOL[eVarBool.Opt_Job_Where_SID])
{
if (vdata.SID_Trust && vdata.SID.isEmpty() == false) wheres.Add($"SID='{vdata.SID}'");
else Apply = false;
}
if (VAR.BOOL[eVarBool.Opt_Job_Where_VLOT])
{
if (vdata.VLOT_Trust && vdata.VLOT.isEmpty() == false) wheres.Add($"VenderLot='{vdata.VLOT}'");
else Apply = false;
}
//if query data . no error
if (Apply && fields.Count > 0 && wheres.Count > 0)
{
PUB.log.Add($"DATABAES : RESULT QUERY");
var SQL = "select top 1 " + string.Join(",", fields) +
" 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) +
$" order by wdate desc";
// var SQLC = "select count(*) " +
//" from 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) +
//$" order by wdate desc";
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();
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();
}
}
//바코드 처리 여부 변경
if (vdata.BarcodeDirty == true && NewBarcodeUpdated == false)
{
vdata.BarcodeDirty = false;
}
}
}

View File

@@ -67,7 +67,7 @@ namespace Project
if (ts.TotalSeconds > 1)
{
//파일을 찾아서 소거한다.
var delpath = System.IO.Path.Combine(AR.SETTING.Data.Path_Data, "Images");
var delpath = System.IO.Path.Combine(AR.SETTING.Data.GetDataPath(), "Images");
if (delpath != "") DeleteFile(delpath);
lastDeleteTime = DateTime.Now;

View File

@@ -94,8 +94,8 @@ namespace Project
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 (SETTING.User.LastModelV != "") PUB.SelectModelV(SETTING.User.LastModelV, false);
var motionmodel = SETTING.User.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");
@@ -161,7 +161,7 @@ namespace Project
}
else
{
for (short i = 0; i < PUB.system.MotaxisCount; i++)
for (short i = 0; i < SETTING.System.MotaxisCount; i++)
{
//설정파일이 있다면 불러온다
var file = System.IO.Path.Combine(UTIL.CurrentPath, "Model", "axis" + i.ToString() + ".motaxt");

View File

@@ -45,11 +45,11 @@ namespace Project
//loader1.arVar_Port.ToList().ForEach(t => t.AlignReset());
//daycount 초기화
if (PUB.counter.DateStr != DateTime.Now.ToString("yyyy-MM-dd"))
if (SETTING.Counter.DateStr != DateTime.Now.ToString("yyyy-MM-dd"))
{
PUB.counter.ClearDay();
PUB.counter.DateStr = DateTime.Now.ToString("yyyy-MM-dd");
PUB.counter.Save();
SETTING.Counter.ClearDay();
SETTING.Counter.DateStr = DateTime.Now.ToString("yyyy-MM-dd");
SETTING.Counter.Save();
}
@@ -117,7 +117,7 @@ namespace Project
//PUB.Result.JobStartTime = DateTime.Now; //200728
//신규실행이므로 작업차수별 수량을 초기화해준다
PUB.counter.ClearP(); //200711
SETTING.Counter.ClearP(); //200711
PUB.flag.set(eVarBool.FG_JOB_END, false, "SM_RUN");

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using AR;
namespace Project
{
@@ -23,7 +24,7 @@ namespace Project
void mot_StatusChanged(object sender, arDev.MOT.StatusChangeEventArags e)
{
if (e.Axis >= PUB.system.MotaxisCount) return;
if (e.Axis >= SETTING.System.MotaxisCount) return;
if (e.Status == arDev.MOT.MOTION_STATUS.SERVOALARM) hmi1.arMOT_Alm[e.Axis] = e.Value;
else if (e.Status == arDev.MOT.MOTION_STATUS.LIMITN) hmi1.arMOT_LimDn[e.Axis] = e.Value;
else if (e.Status == arDev.MOT.MOTION_STATUS.LIMITP) hmi1.arMOT_LimUp[e.Axis] = e.Value;