영문화완료

This commit is contained in:
ChiKyun Kim
2025-09-09 17:24:19 +09:00
parent adb66451ca
commit 02028afc27
338 changed files with 2205 additions and 79829 deletions

View File

@@ -81,7 +81,7 @@ namespace Project
if (DIO.IsEmergencyOn() == true) return;
if (PUB.sm.Step == eSMStep.RUN) return;
PUB.log.AddAT("조이스틱으로 홈 초기화작업");
PUB.log.AddAT("Home initialization operation with joystick");
Func_sw_initialize();
}
}
@@ -157,17 +157,17 @@ namespace Project
private void Joystick_Disconnected(object sender, EventArgs e)
{
PUB.log.AddE("조이스틱 연결 종료");
PUB.log.AddE("Joystick connection terminated");
}
private void Joystick_Connected(object sender, EventArgs e)
{
PUB.log.AddI("조이스틱 연결 완료");
PUB.log.AddI("Joystick connection completed");
}
private void Joystick_Changed(object sender, EventArgs e)
{
PUB.log.AddAT("조이스틱 감지");
PUB.log.AddAT("Joystick detected");
}
}

View File

@@ -66,7 +66,7 @@ namespace Project
//PUB.keyence.UpdateBitmap((Bitmap)e.Image, newbitmap);
keyenceview.Image = e.Image;
if (old != null) old.Dispose();
PUB.log.AddAT("최초 이미지 수신");
PUB.log.AddAT("First image received");
}
else
{
@@ -149,7 +149,7 @@ namespace Project
//에러처리 221018
if (resp.StartsWith("0:ERROR")) continue;
PUB.log.AddE($"***바코드({Source}) 응답데이터 오류 값(키엔스 전송포맷을 확인하세요) " + resp);
PUB.log.AddE($"***Barcode({Source}) response data error value (please check Keyence transmission format) " + resp);
listView21.SetText(9, 3, "ERR");//.setTitle(8, 1, "ERR");
continue;
}
@@ -157,7 +157,7 @@ namespace Project
if (AR.VAR.BOOL[eVarBool.JOB_PickON_Retry]) //221110
{
if (PUB.sm.Step == eSMStep.RUN)
PUB.log.AddAT($"피커({Source}) 재시도 중이라 바코드를 무시 합니다:{resp}");
PUB.log.AddAT($"Picker({Source}) is retrying, ignoring barcode:{resp}");
continue;
}

View File

@@ -1,22 +0,0 @@
//using System;
//using System.Collections.Generic;
//using System.Diagnostics;
//using System.Drawing;
//using System.IO;
//using System.Linq;
//using System.Net;
//using System.Net.NetworkInformation;
//using System.Runtime.Serialization.Formatters.Binary;
//using System.Text;
//using System.Windows.Forms;
//using System.Management;
//using COMM;
//namespace Project
//{
// public static partial class UTIL
// {
// }
//}

View File

@@ -51,14 +51,14 @@ namespace Project
var t1 = VAR.I32[eVarInt32.LEFT_ITEM_COUNT];
var t2 = VAR.I32[eVarInt32.RIGT_ITEM_COUNT];
groupBox2.Text = $"바코드({t1:N1}/{t2:N1})";
groupBox2.Text = $"Barcode({t1:N1}/{t2:N1})";
}
else
{
groupBox2.Text = "바코드";
groupBox2.Text = "Barcode";
}
groupBox1.Text = $"장비조작({PUB.sm.Loop_ms:N0}ms)";
groupBox1.Text = $"Equipment Operation({PUB.sm.Loop_ms:N0}ms)";
//릴사이즈가 맞지 않으면 깜박인다.
if (DIO.getCartSize(1) != eCartSize.None)
{
@@ -117,9 +117,9 @@ namespace Project
var l1 = DIO.GetIOOutput(eDOName.CART_MAG1);
var l2 = DIO.GetIOOutput(eDOName.CART_MAG2);
lbLock0.Text = l0 ? "카트 교환" : "카트 없음";
lbLock1.Text = l1 ? "카트 교환" : "카트 없음";
lbLock2.Text = l2 ? "카트 교환" : "카트 없음";
lbLock0.Text = l0 ? "Cart Exchange" : "No Cart";
lbLock1.Text = l1 ? "Cart Exchange" : "No Cart";
lbLock2.Text = l2 ? "Cart Exchange" : "No Cart";
var sbVisTitle0 = listView21.GetCell(0, 1);
var sbVisTitle2 = listView21.GetCell(0, 5);
@@ -365,7 +365,7 @@ namespace Project
}
else
{
lbModelName.Text = "모델을 선택하세요";
lbModelName.Text = "Please select a model";
lbModelName.ForeColor = Color.Blue;
lbModelName.BackColor = Color.Tomato;
lbModelName.BackColor2 = Color.Red;

View File

@@ -11,14 +11,14 @@ namespace Project
public partial class FMain
{
/// <summary>
/// 상태표시라벨의 메세지 자동 변경
/// Automatic message change for status display labels
/// </summary>
/// <param name="idx"></param>
void UpdateStatusMessage()
{
arCtl.arLabel lbl = lbMsg;
//메세지창이 깜박거려야하는 상황 체크
//Check if message window should blink
if (lbl.Tag != null && lbl.Tag.ToString() == "BLINK")
{
var bg1 = lbl.BackColor;
@@ -30,31 +30,31 @@ namespace Project
if (PUB.sm.Step == eSMStep.INIT)
{
SetStatusMessage("초기화 작업 중", Color.White, Color.FromArgb(0x38, 0x4d, 0x9d));
SetStatusMessage("Initialization in progress", Color.White, Color.FromArgb(0x38, 0x4d, 0x9d));
}
else if (PUB.sm.Step == eSMStep.IDLE)
{
//각종 IO확인하여 에러메세지 표시한다
//Check various I/O and display error messages
var msg = string.Empty;
bool errst = true;
if (PUB.mot.IsInit == false) msg = "모션 카드 준비 안됨";
else if (PUB.dio.IsInit == false) msg = "I/O 카드 준비 안됨";
else if (PUB.dio.HasDIOn == false) msg = "전원 확인 필요 (입력포트 감지 안됨)";
else if (PUB.mot.HasServoAlarm == true) msg = "서보 알람 발생";
else if (PUB.mot.HasHoming == true) msg = "홈 검색 진행 중";
else if (PUB.mot.HasServoOff == true) msg = "서보 OFF 발생";
else if (DIO.GetIOOutput(eDOName.SOL_AIR) == false) msg = "AIR 출력 안됨(전면 청색 AIR버튼을 누르세요)";
else if (DIO.GetIOInput(eDIName.AIR_DETECT) == false) msg = "AIR 감지 안됨";
if (PUB.mot.IsInit == false) msg = "Motion card not ready";
else if (PUB.dio.IsInit == false) msg = "I/O card not ready";
else if (PUB.dio.HasDIOn == false) msg = "Power check required (input port not detected)";
else if (PUB.mot.HasServoAlarm == true) msg = "Servo alarm occurred";
else if (PUB.mot.HasHoming == true) msg = "Home search in progress";
else if (PUB.mot.HasServoOff == true) msg = "Servo OFF occurred";
else if (DIO.GetIOOutput(eDOName.SOL_AIR) == false) msg = "AIR output failed (Press the front blue AIR button)";
else if (DIO.GetIOInput(eDIName.AIR_DETECT) == false) msg = "AIR not detected";
else if (PUB.mot.HasHomeSetOff == true)
{
if (DIO.GetIOInput(eDIName.PICKER_SAFE) == false)
{
msg = "피커(X)축을 중앙으로 옮겨주세요 (기능-관리화면)";
msg = "Please move the picker (X) axis to center (Function-Management screen)";
}
else
{
msg = "홈 검색이 필요 합니다";
msg = "Home search is required";
}
}
@@ -82,11 +82,11 @@ namespace Project
}
if (limport.Any())
{
msg = "서보 LIMIT 알람 발생(Ax:" + string.Join(",", limport) + ")";
msg = "Servo LIMIT alarm occurred (Ax:" + string.Join(",", limport) + ")";
}
else
{
msg = "작업을 시작 하려면 START를 누르세요";
msg = "Press START to begin operation";
errst = false;
}
@@ -110,7 +110,7 @@ namespace Project
else if (PUB.sm.Step == eSMStep.WAITSTART)
{
SetStatusMessage("[시작 대기] ", Color.Gold, Color.FromArgb(50, 50, 50));
SetStatusMessage("[Waiting to Start] ", Color.Gold, Color.FromArgb(50, 50, 50));
}
else if (PUB.sm.Step == eSMStep.ERROR)
{
@@ -119,61 +119,61 @@ namespace Project
}
else if (PUB.sm.Step == eSMStep.PAUSE)
{
SetStatusMessage("[일시 정지] ", Color.Gold, Color.FromArgb(50, 50, 50));
SetStatusMessage("[Paused] ", Color.Gold, Color.FromArgb(50, 50, 50));
}
else if (PUB.sm.Step == eSMStep.HOME_FULL)// || Pub.sm.Step == eSMStep.QHOME)
{
SetStatusMessage($"전체 모션의 원점을 확인하고 있습니다", Color.White, Color.FromArgb(0x98, 0x79, 0xd0), shadow: Color.DimGray);
SetStatusMessage($"Checking home position of all motion axes", Color.White, Color.FromArgb(0x98, 0x79, 0xd0), shadow: Color.DimGray);
}
else if (PUB.sm.Step == eSMStep.HOME_DELAY)// || Pub.sm.Step == eSMStep.QHOME)
{
SetStatusMessage($"잠시만 기다려 주세요(홈 진행 중)", Color.White, Color.FromArgb(0x98, 0x79, 0xd0), shadow: Color.DimGray);
SetStatusMessage($"Please wait a moment (homing in progress)", Color.White, Color.FromArgb(0x98, 0x79, 0xd0), shadow: Color.DimGray);
}
else if (PUB.sm.Step == eSMStep.HOME_CONFIRM)// || Pub.sm.Step == eSMStep.QHOME)
{
SetStatusMessage($"홈 작업을 완료 하는 중", Color.White, Color.FromArgb(0x98, 0x79, 0xd0), shadow: Color.DimGray);
SetStatusMessage($"Completing home operation", Color.White, Color.FromArgb(0x98, 0x79, 0xd0), shadow: Color.DimGray);
}
else if (PUB.sm.Step == eSMStep.RUN)
{
double cur = PUB.sm.seq.GetTime(PUB.sm.Step).TotalSeconds;
double max = AR.SETTING.Data.Timeout_StepMaxTime;
string msg = $"진행 중";
string msg = $"In Progress";
Color fColor = Color.Gold;
if (PUB.flag.get(eVarBool.FG_JOB_END))
{
msg = "로더가 비어 있습니다. 잠시 후 작업이 완료 됩니다";
msg = "Loader is empty. Operation will be completed shortly";
cur = max = 0;
fColor = Color.Lime;
}
else if (PUB.flag.get(eVarBool.FG_WAIT_LOADERINFO))
{
msg = "사용자 정보 입력을 기다리고 있습니다";
msg = "Waiting for user information input";
cur = 100;
max = 100;
}
else //if (PUB.flag.get(eVarBool.RDY_VISION1) == true && PUB.flag.get(eVarBool.RDY_PORT_PC) == true && idx == 9)
{
msg = "작업 중";
msg = "Working";
if (PUB.flag.get(eVarBool.FG_PRC_VISIONL) && PUB.flag.get(eVarBool.FG_END_VISIONL) == false)
msg += "(LEFT-QR검증중)";
msg += "(LEFT-QR validation)";
if (PUB.flag.get(eVarBool.FG_PRC_VISIONR) && PUB.flag.get(eVarBool.FG_END_VISIONR) == false)
msg += "(RIGHT-QR검증중)";
msg += "(RIGHT-QR validation)";
//컨베이어 사용모드에서 컨베이어 인터락 검사
//Conveyor interlock check in conveyor usage mode
if (VAR.BOOL[eVarBool.Use_Conveyor])
{
if (DIO.GetIOInput(eDIName.R_CONV1) || DIO.GetIOInput(eDIName.R_CONV4))
{
if (PUB.iLockCVR.IsEmpty() == false)
msg += "(우측컨베이어 인터락 해제 대기)";
msg += "(Waiting for right conveyor interlock release)";
}
if (DIO.GetIOInput(eDIName.L_CONV1) || DIO.GetIOInput(eDIName.L_CONV4))
{
if (PUB.iLockCVL.IsEmpty() == false)
msg += "(좌측컨베이어 인터락 해제 대기)";
msg += "(Waiting for left conveyor interlock release)";
}
}
@@ -189,7 +189,7 @@ namespace Project
//}
//else if (PUB.mot.IsMotion((int)eAxis.Y_PICKER])
//{
// msg = string.Format("이동 중");
// msg = string.Format("Moving");
// cur = 0;// Pub.getRunSteptime(0).TotalSeconds;// ts.TotalSeconds;
// max = 10;//COMM.SETTING.Data.Timeout_JOBEnd;
//}
@@ -197,7 +197,7 @@ namespace Project
}
else if (PUB.flag.get(eVarBool.FG_MOVE_PICKER))
{
SetStatusMessage("X축을 버튼으로 이동 가능 합니다", Color.Black, Color.White);
SetStatusMessage("X-axis can be moved with buttons", Color.Black, Color.White);
}
else
{

View File

@@ -26,7 +26,7 @@ namespace Project
{
//사용자 값 입력창에서는 오류를 표시하지않는다
if (Step == eSMStep.PAUSE && PUB.flag.get(eVarBool.FG_WAIT_LOADERINFO))
PUB.log.Add("바코드정보입력창이라 일시중지 메세지를 표시하지 않음");
PUB.log.Add("Pause message not displayed because barcode information input window is open");
else
PUB.popup.setMessage(errorMessage);
}

View File

@@ -20,9 +20,9 @@ namespace Project
if (free < 3.0)
{
string msg = "FREE SPACE ERROR\n" +
"디스크 공간(3%)이 부족하여 작업을 진행할 수 없습니다\n" +
"저장경로 : {0}\n" +
"데이터를 삭제하거나 설정의 삭제주기를 확인하세요";
"Insufficient disk space (3%) to proceed with the work\n" +
"Storage path: {0}\n" +
"Please delete data or check the deletion cycle in settings";
msg = string.Format(msg, AR.SETTING.Data.GetDataPath());
PUB.popup.setMessage(msg);
DIO.SetBuzzer(true);
@@ -34,7 +34,7 @@ namespace Project
if (PUB.Result.isSetmModel == false)
{
string msg = "모션모델이 선택되지 않았습니다\n작업모델의 'MOTION'항목을 확인하세요";
string msg = "Motion model not selected\nPlease check the 'MOTION' item in the work model";
PUB.popup.setMessage(msg);
DIO.SetBuzzer(true);
PUB.sm.SetNewStep(eSMStep.IDLE);
@@ -109,11 +109,11 @@ namespace Project
if (PUB.flag.get(eVarBool.FG_USERSTEP))
{
PUB.flag.set(eVarBool.FG_USERSTEP, false, "STACHKSW");
PUB.log.AddI("작업 시작으로 인해 H/W검사 무시기능을 해제 함");
PUB.log.AddI("H/W inspection ignore function disabled due to work start");
}
//공용변수초기화
PUB.log.Add("공용변수(카운트)값 초기화");
PUB.log.Add("Common variable (count) values initialized");
VAR.I32.Clear((int)eVarInt32.LPickOfCount);
VAR.I32.Clear((int)eVarInt32.LPickOnCount);
VAR.I32.Clear((int)eVarInt32.RPickOfCount);
@@ -136,7 +136,7 @@ namespace Project
PUB.Result.BCDPattern = PUB.GetPatterns(modelName, false);
PUB.Result.BCDIgnorePattern = PUB.GetPatterns(modelName, true);
PUB.Result.BCDPrintPattern = PUB.GetPrintPatterns();
PUB.log.Add($"모델패턴로딩:{PUB.Result.BCDPattern.Count}/{PUB.Result.BCDIgnorePattern.Count}");
PUB.log.Add($"Model pattern loading: {PUB.Result.BCDPattern.Count}/{PUB.Result.BCDIgnorePattern.Count}");
//변환SID SID확인여부데이터 삭제
PUB.Result.DTSidConvertEmptyList.Clear();

View File

@@ -120,7 +120,7 @@ namespace Project
//}
if (VAR.DBL[eVarDBL.CONVL_RUNTIME] > 15)
{
PUB.log.AddE($"(L) 컨베이어 15초 초과로 버퍼 클리어");
PUB.log.AddE($"(L) Buffer cleared due to conveyor exceeding 15 seconds");
VAR.I32[eVarInt32.LEFT_ITEM_COUNT] = 0;
}
else return false;
@@ -144,7 +144,7 @@ namespace Project
//}
if (VAR.DBL[eVarDBL.CONVR_RUNTIME] > 15)
{
PUB.log.AddE($"(R) 컨베이어 15초 초과로 버퍼 클리어");
PUB.log.AddE($"(R) Buffer cleared due to conveyor exceeding 15 seconds");
VAR.I32[eVarInt32.RIGT_ITEM_COUNT] = 0;
}
else return false;
@@ -222,7 +222,7 @@ namespace Project
}
if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false;
PUB.log.AddAT($"###### 처음 작업 회피 이동 완료({target})");
PUB.log.AddAT($"###### Initial work avoidance movement completed ({target})");
}
else
{
@@ -293,7 +293,7 @@ namespace Project
//sPositionData Pos = target == eWorkPort.Left ? MOT.GetPXPos(ePXLoc.READYL) : MOT.GetPXPos(ePXLoc.READYR);
if (MOT.getPositionMatch(Pos) == false)
{
PUB.log.AddAT($"######비젼데이터없으므로 회피이동II({target})");
PUB.log.AddAT($"######Avoidance movement II due to no vision data({target})");
MOT.Move(Pos);
}
return false;
@@ -315,7 +315,7 @@ namespace Project
{
this.Invoke(new Action(() =>
{
PUB.log.Add("사용자 선택창(INF)을 호출 합니다");
PUB.log.Add("Calling user selection window (INF)");
var f = new Dialog.fSelectSIDInformation();
f.Show();
}));
@@ -337,19 +337,19 @@ namespace Project
bool ShowUserFormBCD = false;
if (AR.SETTING.Data.RetryPickOnMaxCount == 0)
{
PUB.log.Add($"픽온 재시작 횟수가 없어 사용자 확인창을 띄웁니다");
PUB.log.Add($"Showing user confirmation window due to no pick-on retry count");
ShowUserFormBCD = true;
}
else if (AR.VAR.I32[AR.eVarInt32.PickOnRetry] >= AR.SETTING.Data.RetryPickOnMaxCount)
{
PUB.log.Add($"픽온 재시도 횟수가 초과됨 (최대:{AR.SETTING.Data.RetryPickOnMaxCount})");
PUB.log.Add($"Pick-on retry count exceeded (Max: {AR.SETTING.Data.RetryPickOnMaxCount})");
ShowUserFormBCD = true;
}
else
{
if (VAR.BOOL[eVarBool.Need_UserConfirm_Data])
{
PUB.log.Add($"사용자확인창을 띄워야함");
PUB.log.Add($"Need to show user confirmation window");
ShowUserFormBCD = true;
}
else
@@ -357,12 +357,12 @@ namespace Project
//읽은데이터가 atkstandard라면 바로 팝업을 띄운다
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})");
PUB.log.Add($"Retrying pick-on ({AR.VAR.I32[AR.eVarInt32.PickOnRetry]}/{AR.SETTING.Data.RetryPickOnMaxCount})");
ShowUserFormBCD = false;
}
else
{
PUB.log.Add($"SID값이 있으니 재시도하지 않고 사용자확인창을 띄웁니다");
PUB.log.Add($"SID value exists, showing user confirmation window instead of retrying");
ShowUserFormBCD = true;
}
}
@@ -372,7 +372,7 @@ namespace Project
this.Invoke(new Action(() =>
{
var itemC = PUB.Result.ItemDataC;
PUB.log.Add("사용자 확인창을 호출 합니다");
PUB.log.Add("Calling user confirmation window");
var f = new Dialog.fLoaderInfo(itemC.VisionData.bcdMessage);
f.Show();
}));
@@ -384,7 +384,7 @@ namespace Project
VAR.I32[eVarInt32.PickOnRetry] += 1;//, 1);
VAR.BOOL[eVarBool.JOB_PickON_Retry] = true;
PUB.log.Add($"픽온재시도 ({VAR.I32[eVarInt32.PickOnRetry]})");
PUB.log.Add($"Pick-on retry ({VAR.I32[eVarInt32.PickOnRetry]})");
PUB.sm.seq.Update(cmdIndex, -2);
}
}
@@ -397,7 +397,7 @@ namespace Project
else VAR.BOOL[eVarBool.wait_for_keyenceR] = false;
PUB.Result.ItemDataC.VisionData.ReelSize = DIO.getCartSize(1);
PUB.log.AddI($"[{target}] 키엔스 확인 완료(크기:{PUB.Result.ItemDataC.VisionData.ReelSize})");
PUB.log.AddI($"[{target}] Keyence verification completed (Size: {PUB.Result.ItemDataC.VisionData.ReelSize})");
PUB.log.AddI($"[{target}] Print Position:{PUB.Result.ItemDataC.VisionData.PrintPositionData}");
@@ -412,7 +412,7 @@ namespace Project
PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_ON_F);
//PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_OFF_F);
PUB.Result.ItemDataC.CopyTo(ref PUB.Result.ItemDataL);
PUB.log.Add($"[{target}] 비젼데이터 카피 (C->L) ID:{PUB.Result.ItemDataL.VisionData.RID}");
PUB.log.Add($"[{target}] Vision data copy (C->L) ID:{PUB.Result.ItemDataL.VisionData.RID}");
}
else
{
@@ -423,7 +423,7 @@ namespace Project
PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_ON_R);
//PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_OFF_R);
PUB.Result.ItemDataC.CopyTo(ref PUB.Result.ItemDataR);
PUB.log.Add($"[{target}] 비젼데이터 카피 (C->R) ID:{PUB.Result.ItemDataR.VisionData.RID}");
PUB.log.Add($"[{target}] Vision data copy (C->R) ID:{PUB.Result.ItemDataR.VisionData.RID}");
}
//트리거 OFF
@@ -454,7 +454,7 @@ namespace Project
if (OPT_BYPASS)
{
PUB.log.Add($"바이패스이므로 이전 릴아이디 검사 안함");
PUB.log.Add($"Bypass mode - skipping previous reel ID check");
}
else
{
@@ -471,7 +471,7 @@ namespace Project
}
else
{
PUB.log.Add($"신규아이디 사용체크 OK PRE={pre_ridN},NEW={cur_ridN}");
PUB.log.Add($"New ID usage check OK PRE={pre_ridN},NEW={cur_ridN}");
if (pre_ridO.isEmpty() == false && cur_ridO.isEmpty() == false) //구형아이디는 둘다 값이 있을때 처리한다.
{
@@ -482,24 +482,24 @@ namespace Project
else
PUB.Result.SetResultMessage(eResult.OPERATION, eECode.PRE_USE_REELID_R, eNextStep.ERROR, target, pre_ridO, cur_ridO);
}
else PUB.log.Add($"신규아이디 사용체크(ORG) OK PRE={pre_ridO},NEW={cur_ridO}");
else PUB.log.Add($"New ID usage check (ORG) OK PRE={pre_ridO},NEW={cur_ridO}");
}
else
{
PUB.log.Add($"신규아이디 사용체크(ORG) SKIP(NODATA) PRE={pre_ridO},NEW={cur_ridO}");
PUB.log.Add($"New ID usage check (ORG) SKIP (NO DATA) PRE={pre_ridO},NEW={cur_ridO}");
}
}
}
else
{
PUB.log.Add($"처음작업하므로 이전 릴아이디 검사 안함");
PUB.log.Add($"First work - skipping previous reel ID check");
}
VAR.STR[eVarString.PrePick_ReelIDNew] = cur_ridN;
VAR.STR[eVarString.PrePick_ReelIDOld] = cur_ridO;
VAR.STR[eVarString.PrePick_ReelIDTarget] = target.ToString();
PUB.log.Add($"이전작업릴ID설정 값 N={cur_ridN},O={cur_ridO}");
PUB.log.Add($"Previous work reel ID set values N={cur_ridN},O={cur_ridO}");
}
PUB.sm.seq.Update(cmdIndex);
@@ -536,7 +536,7 @@ namespace Project
// if (cvrun < 6) return false;
//}
}
PUB.log.Add($"CVMODE에서 컨베이어 비어있음(SEQ)");
PUB.log.Add($"Conveyor empty in CV MODE (SEQ)");
}
PUB.sm.seq.Update(cmdIndex);
@@ -571,7 +571,7 @@ namespace Project
{
PUB.sm.seq.Clear(eSMStep.RUN_PICKER_OFF_L);
//PUB.Result.ItemData[1].CopyTo(ref PUB.Result.ItemData[0]);
PUB.log.Add($"바코드데이터 복제(LEFT)");
PUB.log.Add($"Barcode data copy (LEFT)");
PUB.flag.set(eVarBool.FG_BUSY_LEFT, true, funcName);
//프린터용 AIR처리해준다.
@@ -583,7 +583,7 @@ namespace Project
{
PUB.sm.seq.Clear(eSMStep.RUN_PICKER_OFF_R);
//PUB.Result.ItemData[1].CopyTo(ref PUB.Result.ItemData[0]);
PUB.log.Add($"바코드데이터 복제(RIGHT)");
PUB.log.Add($"Barcode data copy (RIGHT)");
PUB.flag.set(eVarBool.FG_BUSY_RIGHT, true, funcName);
//프린터용 AIR처리해준다.
@@ -592,7 +592,7 @@ namespace Project
//PUB.Result.ItemData[1].UpdateTo(ref PUB.Result.ItemData[2]);
}
PUB.Result.ItemDataC.Clear($"[{target}] 픽온완료"); //전송했으니 지운다
PUB.Result.ItemDataC.Clear($"[{target}] Pick-on completed"); //Clear after transmission
KeyenceBarcodeDataF = string.Empty;
KeyenceBarcodeDataR = string.Empty;
@@ -626,14 +626,14 @@ namespace Project
if (PUB.Result.PrintPostionList.ContainsKey(sid) == false)
{
PUB.Result.PrintPostionList.Add(sid, prn);
PUB.log.AddAT($"프린트위치저장 SID:{sid} = {prn}");
PUB.log.AddAT($"Print position saved SID:{sid} = {prn}");
}
else
{
var predata = PUB.Result.PrintPostionList[sid];
if (predata != prn)
{
PUB.log.AddAT($"프린트위치저장값 변경 SID:{sid} = {predata} -> {prn}");
PUB.log.AddAT($"Print position save value changed SID:{sid} = {predata} -> {prn}");
PUB.Result.PrintPostionList[sid] = prn;
}
}
@@ -964,7 +964,7 @@ namespace Project
if (SETTING.Data.SystemBypass == false)
{
rlt = PUB.UpdateWMS(item.VisionData); //rlt = Amkor.RestfulService.Inbound_label_attach_reel_info(reelinfo, out errmsg);
PUB.log.AddE("WMS전송" + (rlt ? "성공" : "실패") + $":{errmsg}");
PUB.log.AddE("WMS transmission " + (rlt ? "success" : "failed") + $": {errmsg}");
if (rlt == false) //230927 - 오류발생시
{
PUB.Result.SetResultMessage(eResult.OPERATION, eECode.INBOUNDWEBAPIERROR, eNextStep.PAUSE, target, errmsg);
@@ -975,7 +975,7 @@ namespace Project
{
errmsg = "bypass";
rlt = false;
PUB.log.AddAT($"System bytpass 로 인해 WMS 저장 안함");
PUB.log.AddAT($"WMS save disabled due to System bypass");
}
if (errmsg.Length > 190) errmsg = errmsg.Substring(0, 190); //230810 maxlength error
SaveData_EE(item, (target == eWorkPort.Left ? "L" : "R"), (rlt ? "OK" : errmsg), "root_sequence");
@@ -1004,7 +1004,7 @@ namespace Project
}
VAR.TIME[(int)eVarTime.JOBEVENT] = DateTime.Now;
PUB.log.AddI($"[{target}] 작업완료");
PUB.log.AddI($"[{target}] Work completed");
PUB.sm.seq.Clear(cmdIndex);
return true;
}

View File

@@ -39,7 +39,7 @@ namespace Project
//데이터가 완료되었는지 확인
if (itemC.VisionData.Confirm)
{
PUB.log.AddAT("비젼 데이터 완료로 인해 바코드 메세지를 제거 합니다");
PUB.log.AddAT("Removing barcode messages due to vision data completion");
itemC.VisionData.bcdMessage.Clear();
return EResultKeyence.Complete;
}
@@ -58,12 +58,12 @@ namespace Project
{
if (PUB.Result.DryRun)
{
PUB.log.Add($"[{target}] DRY-RUN 으로 인한 완료");
PUB.log.Add($"[{target}] Completed due to DRY-RUN");
SetDryrunData();
}
else
{
PUB.logDbg.Add($"[{target}] 키엔스 읽기 시작");
PUB.logDbg.Add($"[{target}] Keyence reading started");
if (PUB.keyenceF != null) PUB.keyenceF.Trigger(true);
if (PUB.keyenceR != null) PUB.keyenceR.Trigger(true);
}
@@ -535,7 +535,7 @@ namespace Project
//이미 수량업데이트된 경우이므로 복원시켜준다
if (itemC.VisionData.QTY0.isEmpty() == false)
{
PUB.log.AddAT($"릴아이디 변경으로 인해 수량을 복원합니다({itemC.VisionData.QTY}->{itemC.VisionData.QTY0})");
PUB.log.AddAT($"Restoring quantity due to reel ID change ({itemC.VisionData.QTY}->{itemC.VisionData.QTY0})");
itemC.VisionData.QTY = itemC.VisionData.QTY0;
itemC.VisionData.QTY0 = string.Empty;
}
@@ -546,7 +546,7 @@ namespace Project
var logtime = VAR.TIME.RUN((int)eVarTime.LOG_NEWIDERROR);
if (logtime.TotalSeconds >= 3000)
{
PUB.log.AddAT($"Reel_ID 생성실패 : {newid.message}");
PUB.log.AddAT($"Reel_ID generation failed : {newid.message}");
VAR.TIME.Update(eVarTime.LOG_NEWIDERROR);
}
}
@@ -558,11 +558,11 @@ namespace Project
{
//이미 완료된 데이터
if (itemC.VisionData.ConfirmAuto)
PUB.log.AddI($"데이터확정완료(자동)로 인한 진행");
PUB.log.AddI($"Proceeding due to data confirmation completion (automatic)");
else if (itemC.VisionData.ConfirmUser)
PUB.log.AddI($"데이터확정완료(수동)로 인한 진행");
PUB.log.AddI($"Proceeding due to data confirmation completion (manual)");
else
PUB.log.AddI($"데이터확정완료(BYPASS)로 인한 진행");
PUB.log.AddI($"Proceeding due to data confirmation completion (BYPASS)");
}
else if (itemC.VisionData.QRInputRaw.isEmpty() == false && itemC.VisionData.BATCH.isEmpty() == false)
{
@@ -646,24 +646,24 @@ namespace Project
//수량원본이 없는 경우
if (item.VisionData.QTY0.isEmpty())
{
string msg = "서버 수량 업데이트 기능은 WMS에 적용되지 않음, 필요한 경우 개발자 컨택";
string msg = "Server quantity update feature is not applicable to WMS, contact developer if needed";
var cnt = 0;// (int)(Amkor.RestfulService.get_stock_count(item.VisionData.RID, out msg));
if (mainjob)
{
PUB.log.AddE("서버 수량 업데이트 기능은 WMS에 적용되지 않음, 필요한 경우 개발자 컨택");
PUB.log.AddE("Server quantity update feature is not applicable to WMS, contact developer if needed");
}
if (cnt > 0)
{
//새로받은 데이터를 실제 수량에 추가한다
item.VisionData.QTY0 = item.VisionData.QTY;
item.VisionData.QTY = cnt.ToString();
if (mainjob) PUB.log.Add($"서버수량업데이트 RID:{item.VisionData.RID} :{item.VisionData.QTY},:{cnt}");
if (mainjob) PUB.log.Add($"Server quantity update RID:{item.VisionData.RID} Old:{item.VisionData.QTY}, New:{cnt}");
}
else
{
if (mainjob) PUB.log.AddE($"수량업데이트 실패 rID:{item.VisionData.RID},Message={msg}");
if (mainjob) PUB.log.AddE($"Quantity update failed rID:{item.VisionData.RID}, Message={msg}");
NeedConfirm = true;
if (mainjob) item.VisionData.bcdMessage.Add("수량 업데이트 실패");
if (mainjob) item.VisionData.bcdMessage.Add("Quantity update failed");
}
}
}
@@ -678,19 +678,19 @@ namespace Project
if (rqBcd.Value != null)
{
var newqty = rqBcd.Value.Data.Substring(2).Trim();
if (mainjob) PUB.log.Add($"수량업데이트(01) {item.VisionData.QTY}->{newqty}");
if (mainjob) PUB.log.Add($"Quantity update (01) {item.VisionData.QTY}->{newqty}");
item.VisionData.QTY = newqty;
if (mainjob) PUB.log.AddI("수량수동입력상태이나 RQ값이 확인되어 사용자 확인을 하지 않음");
if (mainjob) PUB.log.AddI("Manual quantity input mode but RQ value confirmed, no user confirmation required");
}
else
{
if (mainjob) item.VisionData.bcdMessage.Add("RQ값 오류 (자동불가)");
if (mainjob) item.VisionData.bcdMessage.Add("RQ value error (auto mode not possible)");
NeedConfirm = true;
}
}
else
{
if (mainjob) item.VisionData.bcdMessage.Add("수량 수동 입력 필요");
if (mainjob) item.VisionData.bcdMessage.Add("Manual quantity input required");
NeedConfirm = true;
}
}
@@ -752,7 +752,7 @@ namespace Project
{
if (NeedConfirm == false)
{
if (mainjob) item.VisionData.bcdMessage.Add("사용자 확인 필요");
if (mainjob) item.VisionData.bcdMessage.Add("User confirmation required");
NeedConfirm = true;
}
}
@@ -766,7 +766,7 @@ namespace Project
//프린트를 하지 않는다면 처리하지 않는다.
if (VAR.BOOL[eVarBool.Opt_DisablePrinter] == false)
{
if (mainjob) item.VisionData.bcdMessage.Add("첫번째 릴 확인 필요");
if (mainjob) item.VisionData.bcdMessage.Add("First reel confirmation required");
NeedConfirm = true;
}
}
@@ -778,7 +778,7 @@ namespace Project
{
if (NeedConfirm == false)
{
if (mainjob) item.VisionData.bcdMessage.Add("SID변환값 확인 필요");
if (mainjob) item.VisionData.bcdMessage.Add("SID conversion value confirmation required");
NeedConfirm = true;
}
}
@@ -793,7 +793,7 @@ namespace Project
{
item.VisionData.PrintPositionData = "1";
item.VisionData.PrintPositionCheck = true;
PUB.log.AddI($"바이패스SID({item.VisionData.SID})로 인해 인쇄위치 임의지정");
PUB.log.AddI($"Print position arbitrarily set due to bypass SID ({item.VisionData.SID})");
}
}
else
@@ -804,12 +804,12 @@ namespace Project
var preprnpos = PUB.Result.PrintPostionList[item.VisionData.SID];
item.VisionData.PrintPositionData = preprnpos;
item.VisionData.PrintPositionCheck = true;
PUB.log.AddI($"현 작업정보에서 프린트위치 찾음 SID:{item.VisionData.SID},={preprnpos}");
PUB.log.AddI($"Print position found in current job info SID:{item.VisionData.SID}, Value={preprnpos}");
}
else if (NeedConfirm == false)
{
//현작업내에서의 정보를 찾아서 적용한다 231005
if (mainjob) item.VisionData.bcdMessage.Add("부착위치 없음");
if (mainjob) item.VisionData.bcdMessage.Add("Attachment position not found");
NeedConfirm = true;
}
}
@@ -839,13 +839,13 @@ namespace Project
{
if (OPT_BYPASS)
{
PUB.log.Add("데이터가 모두 확인되어 자동 확정을 진행 합니다(bypassmode)");
PUB.log.Add("All data confirmed, proceeding with automatic confirmation (bypass mode)");
if (item.VisionData.bcdMessage.Count > 0) item.VisionData.bcdMessage.Clear();
item.VisionData.ConfirmBypass = true;
}
else if (item.VisionData.ConfirmAuto == false)
{
PUB.log.Add("데이터가 모두 확인되어 자동 확정을 진행 합니다");
PUB.log.Add("All data confirmed, proceeding with automatic confirmation");
if (item.VisionData.bcdMessage.Count > 0) item.VisionData.bcdMessage.Clear();
item.VisionData.ConfirmAuto = true;
}
@@ -858,7 +858,7 @@ namespace Project
if (mainjob)
{
NeedConfirm = true;
PUB.log.AddAT($"데이터가 완료되지 않았으나 QR을 읽은 상태이므로 바로 확인창을 띄운다");
PUB.log.AddAT($"Data incomplete but QR has been read, showing confirmation window immediately");
}
}
}
@@ -875,7 +875,7 @@ namespace Project
}
else if (PUB.Result.ItemDataC.VisionData.ConfirmAuto == false)
{
PUB.logDbg.Add($"비젼 자동 확정 처리 {Source}");
PUB.logDbg.Add($"Vision automatic confirmation processing {Source}");
PUB.Result.ItemDataC.VisionData.ConfirmAuto = true;
}
@@ -885,7 +885,7 @@ namespace Project
private void SetDryrunData()
{
var item = PUB.Result.ItemDataC;
PUB.log.AddAT("드라이런 기본 데이터 입력");
PUB.log.AddAT("Dry run basic data input");
if (item.VisionData.QTY.isEmpty()) item.VisionData.QTY = DateTime.Now.ToString("HHmm");
if (item.VisionData.MFGDATE.isEmpty()) item.VisionData.MFGDATE = DateTime.Now.ToString("yy-MM-dd");
if (item.VisionData.SID.isEmpty()) item.VisionData.SID = "108" + "0" + DateTime.Now.ToString("HH").PadLeft(2, '0') + DateTime.Now.ToString("fff").PadLeft(3, '0');

View File

@@ -49,7 +49,7 @@ namespace Project
//####################################################
if (PUB.sm.seq.Get(cmdIndex) == idx++)
{
PUB.log.Add($"[{target}] 피커 ON 작업시작");
PUB.log.Add($"[{target}] Picker ON work started");
PUB.sm.seq.Update(cmdIndex);
return false;
}
@@ -65,7 +65,7 @@ namespace Project
var PosZ = MOT.GetPZPos(ePZLoc.READY);
if (MOT.CheckMotionPos(seqTime, PosZ, funcName) == false) return false;
if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false;
PUB.log.Add($"[{target}] 피커 ON X,Y 준비위치 확인");
PUB.log.Add($"[{target}] Picker ON X,Y ready position confirmed");
DIO.SetPickerVac(true);
PUB.sm.seq.Update(cmdIndex);
return false;
@@ -205,11 +205,11 @@ namespace Project
{
baseAngle = bcd.Angle;
baseSource = bcd.barcodeSource; //230504 각도
PUB.log.AddI($"[{target}] 각도산출내용:{msg},바코드:{bcd.Data},ID:{vdata.RID}"); //210602
PUB.log.AddI($"[{target}] Angle calculation: {msg}, Barcode: {bcd.Data}, ID: {vdata.RID}"); //210602
}
else if (PUB.Result.DryRun)
{
PUB.log.AddAT($"[{target}] 드라이런으로 인해 각도를 적용하지 않음");
PUB.log.AddAT($"[{target}] Angle not applied due to dry run");
}
else
{
@@ -218,7 +218,7 @@ namespace Project
var addangle = baseSource == "R" ? SETTING.Data.RearBarcodeRotate : SETTING.Data.FrontBarcodeRotate;
var rotAngle = baseAngle + addangle + vdata.PositionAngle;
PUB.log.AddI($"[{target}]-소스:{baseSource} 회전값(Base:{baseAngle}+추가:{addangle}+비젼:{vdata.PositionAngle}={rotAngle})");
PUB.log.AddI($"[{target}] Source: {baseSource} Rotation value (Base: {baseAngle} + Additional: {addangle} + Vision: {vdata.PositionAngle} = {rotAngle})");
int dir = -1;
while (true)
@@ -234,7 +234,7 @@ namespace Project
dir = 1;
}
PUB.log.AddI($"[{target}] 회전(최종) [{rotAngle}도,방향:{dir}],RID:{vdata.RID}");
PUB.log.AddI($"[{target}] Rotation (Final) [{rotAngle} degrees, Direction: {dir}], RID: {vdata.RID}");
if (target == eWorkPort.Left)
PUB.Result.ItemDataL.VisionData.ApplyAngle = rotAngle; //회전각도를 넣는다
@@ -243,7 +243,7 @@ namespace Project
var curtheta = PUB.mot.GetActPos((int)eAxis.Z_THETA);
var newPos = curtheta + (dir * rotAngle);
PUB.log.Add($"회전전 모터 위치 : {curtheta}, 대상위치:{newPos},속도:{thpos.Speed},가속:{thpos.Acc}");
PUB.log.Add($"Motor position before rotation: {curtheta}, Target position: {newPos}, Speed: {thpos.Speed}, Acceleration: {thpos.Acc}");
if (target == eWorkPort.Left)
VAR.DBL[(int)eVarDBL.ThetaPositionL] = newPos;

View File

@@ -49,7 +49,7 @@ namespace Project
//####################################################
if (PUB.sm.seq.Get(cmdIndex) == idx++)
{
PUB.log.Add($"[{target}] 피커 RETRY 작업시작({PickerRetryCount}/{AR.SETTING.Data.RetryPickOnMaxCount})");
PUB.log.Add($"[{target}] Picker RETRY work started ({PickerRetryCount}/{AR.SETTING.Data.RetryPickOnMaxCount})");
//기존자료를 모두 삭제 한다 221102
if (PUB.Result.ItemDataC != null && PUB.Result.ItemDataC.VisionData != null && PUB.Result.ItemDataC.VisionData.barcodelist != null)
@@ -218,7 +218,7 @@ namespace Project
PUB.mot.ClearPosition((int)eAxis.Z_THETA);
if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false;
PUB.log.AddAT($"###### 재시도 작업 회피 이동 완료({target})");
PUB.log.AddAT($"###### Retry work avoidance movement completed ({target})");
PUB.sm.seq.Update(cmdIndex);
return false;
}
@@ -228,7 +228,7 @@ namespace Project
//####################################################
if (PUB.sm.seq.Get(cmdIndex) == idx++)
{
PUB.log.Add($"retry 완료로 비젼데이터를 삭제 합니다");
PUB.log.Add($"Deleting vision data due to retry completion");
PUB.Result.ItemDataC.VisionData.Clear(funcName, true);
AR.VAR.BOOL[eVarBool.JOB_PickON_Retry] = false;
PUB.sm.seq.Update(cmdIndex);

View File

@@ -70,10 +70,10 @@ namespace Project
if (DIO.GetIOInput(eDIName.R_CONV1)) return false;
if (VAR.I32[eVarInt32.RIGT_ITEM_COUNT] > 0) return false;
}
PUB.log.Add($"CVMODE에서 컨베이어 비어있음");
PUB.log.Add($"Conveyor is empty in CV MODE");
}
PUB.log.Add($"[{target}] 피커 OFF 작업시작");
PUB.log.Add($"[{target}] Picker OFF work started");
PUB.sm.seq.Update(cmdIndex);
return false;
}
@@ -87,7 +87,7 @@ namespace Project
var Pos = target == eWorkPort.Left ? MOT.GetLMPos(eLMLoc.READY) : MOT.GetRMPos(eRMLoc.READY);
if (MOT.getPositionMatch(Pos) == false)
{
PUB.Result.SetResultMessage(eResult.OPERATION, eECode.POSITION_ERROR, eNextStep.PAUSE, "프린터 Y축이 준비위치에 있지 않습니다");
PUB.Result.SetResultMessage(eResult.OPERATION, eECode.POSITION_ERROR, eNextStep.PAUSE, "Printer Y-axis is not at ready position");
return false;
}
PUB.sm.seq.Update(cmdIndex);
@@ -265,7 +265,7 @@ namespace Project
{
if (OPT_BYPASS == true || OPT_PrinterOff)
{
PUB.log.AddAT($"bypass 로 인해 추가 회전을 하지 않습니다");
PUB.log.AddAT($"Additional rotation not performed due to bypass");
}
else
{
@@ -285,7 +285,7 @@ namespace Project
else VAR.DBL[(int)eVarDBL.ThetaPositionR] = theta + OffsetAngle;
if (AR.SETTING.Data.Log_Debug)
PUB.logDbg.Add($"[{target}] 모션 추가회전 :{OffsetAngle}");
PUB.logDbg.Add($"[{target}] Motor additional rotation: {OffsetAngle}");
}
}
@@ -307,7 +307,7 @@ namespace Project
var Pos = MOT.GetPTPos(ePTLoc.READY);
Pos.Position = Theta;
if (MOT.CheckMotionPos(seqTime, Pos, funcName, false) == false) return false;
PUB.log.Add($"[{target}] 회전축 확인 완료 위치:{Theta},모터값:{PUB.mot.GetActPos((int)eAxis.Z_THETA)} => 위치초기화함");
PUB.log.Add($"[{target}] Rotation axis verification complete Position: {Theta}, Motor value: {PUB.mot.GetActPos((int)eAxis.Z_THETA)} => Position initialized");
PUB.mot.ClearPosition((int)eAxis.Z_THETA);
}

View File

@@ -34,7 +34,7 @@ namespace Project
//####################################################
if (PUB.sm.seq.Get(cmdIndex) == idx++)
{
PUB.log.Add($"[{target}] 프린트 작업 시작");
PUB.log.Add($"[{target}] Print operation started");
PUB.sm.seq.Update(cmdIndex);
return false;
}
@@ -106,7 +106,7 @@ namespace Project
item.VisionData.ZPL = zpl;
item.VisionData.PrintQRData = qrdata;
PUB.log.Add("PRINT", $"[{target}] 프린트");//QR=" + item.VisionData.QRData);
PUB.log.Add("PRINT", $"[{target}] Printing");//QR=" + item.VisionData.QRData);
if (target == eWorkPort.Left)
{
@@ -141,7 +141,7 @@ namespace Project
}
}
}
else PUB.log.AddAT($"[{target}] 프린터 기능 OFF(bypass or model or setting)");
else PUB.log.AddAT($"[{target}] Printer function OFF (bypass or model or setting)");
PUB.sm.seq.Update(cmdIndex);
return false;

View File

@@ -86,7 +86,7 @@ namespace Project
if ( == false)
{
if (seqTime.TotalMilliseconds < 100) return false;
PUB.log.AddAT($"[{target}] 용지감지기능 OFF(3초후 진행)");
PUB.log.AddAT($"[{target}] Paper detection function OFF(proceed after 3 seconds)");
}
else
{
@@ -148,7 +148,7 @@ namespace Project
if ( == false)
{
if (seqTime.TotalMilliseconds < 100) return false;
PUB.log.AddAT($"[{target}] 용지감지기능 OFF(3초후 진행)");
PUB.log.AddAT($"[{target}] Paper detection function OFF(proceed after 3 seconds)");
}
else
{

View File

@@ -25,7 +25,7 @@ namespace Project
var retval = false;
if (AR.SETTING.Data.OnlineMode == false)
{
PUB.log.AddAT($"[SAVE-EE] 오프라인으로 저장 하지 않음");
PUB.log.AddAT($"[SAVE-EE] Not saving in offline mode");
return;
}

View File

@@ -50,7 +50,7 @@ namespace Project
{
//카메라 트리거 전송
var sendok = WS_Send(target, WS, item.guid, "TRIG", item.VisionData.PrintQRData);
PUB.log.Add($"바코드트리거전송({target}) = {sendok}");
PUB.log.Add($"Barcode trigger transmission ({target}) = {sendok}");
if(sendok==false) //230512 전송실패시 오류로 한다
{
PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.VISION_TRIGERROR, eNextStep.PAUSE);
@@ -73,7 +73,7 @@ namespace Project
{
if (VAR.BOOL[eVarBool.VisionL_Retry] == false)
{
PUB.log.AddAT("비젼(L) 1회 실패로 재 시도 합니다");
PUB.log.AddAT("Vision (L) failed once, retrying");
VAR.BOOL[eVarBool.VisionL_Retry] = true;
PUB.sm.seq.Update(cmdIndex, -1);
return false;
@@ -92,7 +92,7 @@ namespace Project
{
if (VAR.BOOL[eVarBool.VisionR_Retry] == false)
{
PUB.log.AddAT("비젼(R) 1회 실패로 재 시도 합니다");
PUB.log.AddAT("Vision (R) failed once, retrying");
VAR.BOOL[eVarBool.VisionR_Retry] = true;
PUB.sm.seq.Update(cmdIndex, -1);
return false;
@@ -121,12 +121,12 @@ namespace Project
{
if (PUB.flag.get(eVarBool.FG_END_VISIONL)) //종료신호가 설정되어있다면 완료된 경우다
{
PUB.log.AddI($"{target} 비젼 종료 신호로 인해 완료 처리 합니다");
PUB.log.AddI($"{target} Completed processing due to vision end signal");
item.PrintQRValid = true;
}
else if (PUB.flag.get(eVarBool.FG_PRC_VISIONL) == false) //사용자가 취소했다면 넘어간다
{
PUB.log.AddAT($"{target} 사용자 취소로 QR검증을 넘김");
PUB.log.AddAT($"{target} Skip QR verification due to user cancellation");
item.PrintQRValid = false;
}
else return false; //아직 완료전이므로 리턴한다
@@ -135,12 +135,12 @@ namespace Project
{
if (PUB.flag.get(eVarBool.FG_END_VISIONR))
{
PUB.log.AddI($"{target} 비젼 종료 신호로 인해 완료 처리 합니다");
PUB.log.AddI($"{target} Completed processing due to vision end signal");
item.PrintQRValid = true;
}
else if (PUB.flag.get(eVarBool.FG_PRC_VISIONR) == false) //사용자가 취소했다면 넘어간다
{
PUB.log.AddAT($"{target} 사용자 취소로 QR검증을 넘김");
PUB.log.AddAT($"{target} Skip QR verification due to user cancellation");
item.PrintQRValid = false;
}
else return false; //아직 완료전이므로 리턴한다
@@ -157,7 +157,7 @@ namespace Project
//####################################################
if (PUB.sm.seq.Get(cmdIndex) == idx++)
{
PUB.log.Add($"{target} 비젼 검증 완료(결과:{item.PrintQRValid})");
PUB.log.Add($"{target} Vision verification completed (Result: {item.PrintQRValid})");
if (target == eWorkPort.Left)
PUB.flag.set(eVarBool.FG_PRC_VISIONL, false, funcName);

View File

@@ -117,7 +117,7 @@ namespace Project
{
var o = (eSMStep)e.Old;
var n = (eSMStep)e.New;
PUB.log.AddI($"스텝전환({o} >> {n})");
PUB.log.AddI($"Step transition({o} >> {n})");
//230313
EEMStatus.AddStatusSQL(n);

View File

@@ -80,7 +80,7 @@ namespace Project
var runMethod = obj.GetMethod(runMethodName);
if (runMethod == null)
{
PUB.log.AddE($"다음 명령이 구현되지 않았습니다 {methodName}/{runMethodName}");
PUB.log.AddE($"The following command is not implemented {methodName}/{runMethodName}");
PUB.Result.SetResultMessage(eResult.DEVELOP, eECode.NOFUNCTION, eNextStep.ERROR, methodName, runMethodName);
}
else
@@ -101,7 +101,7 @@ namespace Project
var rlt = (bool)runMethod.Invoke(this, param);
if (rlt == true)
{
PUB.log.AddI("사용자스텝(자동) 실행완료 대기상태전환");
PUB.log.AddI("User step(automatic) execution completed, switching to idle state");
PUB.sm.SetNewStep(eSMStep.IDLE, true);
}
}

View File

@@ -15,7 +15,7 @@ namespace Project
var diPin = DIO.Pin.input.Where(t=>t.terminalno == e.ArrIDX).FirstOrDefault();
if(diPin == null)
{
PUB.log.AddE($"DI INDEX:{e.ArrIDX} 에 해당하는 터미널 대상이 없습니다");
PUB.log.AddE($"No terminal target found for DI INDEX:{e.ArrIDX}");
}
else
{
@@ -33,7 +33,7 @@ namespace Project
var doPin = DIO.Pin.output.Where(t => t.terminalno == e.ArrIDX).FirstOrDefault();
if (doPin == null)
{
PUB.log.AddE($"DO INDEX:{e.ArrIDX} 에 해당하는 터미널 대상이 없습니다");
PUB.log.AddE($"No terminal target found for DO INDEX:{e.ArrIDX}");
}
else
{
@@ -108,7 +108,7 @@ namespace Project
if (port == 3) SETTING.Counter.CountPrintR += value;
else
{
PUB.log.AddAT(string.Format("[{0}] 미지정 포트이므로 수량 증가 불가", seq));
PUB.log.AddAT(string.Format("[{0}] Cannot increase quantity as it is an unspecified port", seq));
}
//Pub.log.AddI("수량정보가 저장 되었습니다");

View File

@@ -62,9 +62,9 @@ namespace Project
PUB.Result.ResultCode = eResult.EMERGENCY;
PUB.Result.ResultMessage = string.Format("EMERGENCY\n" +
"비상정지 버튼({0})이 눌렸습니다\n" +
"모든 모션이 강제 정지 합니다\n" +
"비상 정지 버튼을 확인 한 후 시스템을 초기화 하세요", EmgButtonState);
"Emergency stop button ({0}) has been pressed\n" +
"All motions are forced to stop\n" +
"Please check the emergency stop button and initialize the system", EmgButtonState);
PUB.log.AddI("SPS:Reserve Emergency Step");
PUB.sm.SetNewStep(eSMStep.EMERGENCY);

View File

@@ -40,7 +40,7 @@ namespace Project
if (pats.Any() == false)
{
PUB.log.AddAT($"등록된 패턴이 없습니다(SYM={barcodeSymbol})");
PUB.log.AddAT($"No registered pattern(SYM={barcodeSymbol})");
return new Tuple<int, List<string>>(0, new List<string>());
}
@@ -50,19 +50,19 @@ namespace Project
{
if (vm.BCD_DM == false && barcodeSymbol == "2")
{
PUB.log.AddAT($"모델(DM)에서 비활성:{bcd}");
PUB.log.AddAT($"Inactive in model(DM):{bcd}");
IgnoreBarcode = true;
return new Tuple<int, List<string>>(0, new List<string>());
}
else if (vm.BCD_1D == false && (barcodeSymbol == "6" || barcodeSymbol == "11"))
{
PUB.log.AddAT($"모델(1D)에서 비활성:{bcd}");
PUB.log.AddAT($"Inactive in model(1D):{bcd}");
IgnoreBarcode = true;
return new Tuple<int, List<string>>(0, new List<string>());
}
else if (vm.BCD_QR == false && (barcodeSymbol == "1"))
{
PUB.log.AddAT($"모델(QR)에서 비활성:{bcd}");
PUB.log.AddAT($"Inactive in model(QR):{bcd}");
IgnoreBarcode = true;
return new Tuple<int, List<string>>(0, new List<string>());
}

View File

@@ -36,7 +36,7 @@ namespace Project
DIO.SetOutput(eDOName.RIGHT_CONV, false);
DIO.SetBuzzer(true, AR.SETTING.Data.Force_JobEndBuzzer);
PUB.log.AddI("작업이 완료되었습니다");
PUB.log.AddI("Work has been completed");
needShowSummary = true;
}

View File

@@ -16,7 +16,7 @@ namespace Project
DIO.SetBuzzer(false);
//홈이완료되었으므로 3초정도 기다려준다.
PUB.log.AddAT("홈 완료 확정을 위한 타이머 시작");
PUB.log.AddAT("Timer started for home completion confirmation");
HomeSuccessTime = DateTime.Now;
}
@@ -42,7 +42,7 @@ namespace Project
DIO.SetBuzzer(false);
PUB.flag.set(eVarBool.FG_USERSTEP, false, "SM_HOME");
PUB.log.AddI("홈 작업 완료로 인해 홈 검증 코드로 이동함");
PUB.log.AddI("Moving to home verification code due to home operation completion");
HomeChkTime = DateTime.Now;
PUB.sm.SetNewStep(eSMStep.HOME_CONFIRM);

View File

@@ -478,7 +478,7 @@ namespace Project
void FlagClear(bool ClearItemOn)
{
PUB.log.AddAT($"플래그초기화({ClearItemOn})");
PUB.log.AddAT($"Flag initialization({ClearItemOn})");
//연관플래그 소거
if (ClearItemOn)
{

View File

@@ -52,7 +52,7 @@ namespace Project
var ts = DateTime.Now - IdleStartTime;
if (ts.TotalMinutes > AR.SETTING.Data.AutoOffRoomLightMin)
{
PUB.log.Add("대기상태 전환으로 인해 조명을 끕니다");
PUB.log.Add("Turning off lights due to idle state transition");
IdleSleep = true;
DIO.SetRoomLight(false);
}

View File

@@ -32,11 +32,11 @@ namespace Project
if (PUB.mot.Init() == false)
{
PUB.log.AddE(string.Format("MOT INIT ERROR : {0}", PUB.mot.ErrorMessage));
PUB.log.AddE("모션 초기화 오류로 잠시 후 다시 시도합니다");
PUB.log.AddE("Motion initialization error, retrying shortly");
System.Threading.Thread.Sleep(1000);
if (PUB.mot.Init() == false)
{
PUB.log.AddE("모션 초기화 재시도 실패" + PUB.mot.ErrorMessage);
PUB.log.AddE("Motion initialization retry failed " + PUB.mot.ErrorMessage);
}
}
_SM_RUN_INIT_MOTION();
@@ -66,7 +66,7 @@ namespace Project
PUB.sm.RaiseStateProgress(++progress, "Set DIO Names", ProgressMax, fColor); System.Threading.Thread.Sleep(5);
_SM_RUN_INIT_SETDIONAME();
PUB.log.AddI("모션 초기화 플래그 설정완료");
PUB.log.AddI("Motion initialization flag setup complete");
PUB.flag.set(eVarBool.FG_INIT_MOTIO, true, "INIT");
//230504
@@ -74,12 +74,12 @@ namespace Project
hmi1.SetMOT(PUB.mot);
//남은 공간
PUB.sm.RaiseStateProgress(++progress, "공간 확인", ProgressMax, fColor); System.Threading.Thread.Sleep(5);
PUB.sm.RaiseStateProgress(++progress, "Space Check", ProgressMax, fColor); System.Threading.Thread.Sleep(5);
CheckFreeSpace(); //181225
//프린터설정
PUB.sm.RaiseStateProgress(++progress, "프린터설정", ProgressMax, fColor); System.Threading.Thread.Sleep(5);
PUB.sm.RaiseStateProgress(++progress, "Printer Setup", ProgressMax, fColor); System.Threading.Thread.Sleep(5);
PUB.PrinterL = new Device.SATOPrinterAPI();
PUB.PrinterL.PortName = AR.SETTING.Data.PrintL_Port;
PUB.PrinterL.BaudRate = AR.SETTING.Data.PrintL_Baud;
@@ -91,7 +91,7 @@ namespace Project
PUB.flag.set(eVarBool.FG_INIT_PRINTER, true, "INIT");
//모델자동선택 181206
PUB.sm.RaiseStateProgress(++progress, "이전모델 확인", ProgressMax, fColor); System.Threading.Thread.Sleep(5);
PUB.sm.RaiseStateProgress(++progress, "Previous Model Check", ProgressMax, fColor); System.Threading.Thread.Sleep(5);
//
if (SETTING.User.LastModelV != "") PUB.SelectModelV(SETTING.User.LastModelV, false);
@@ -101,7 +101,7 @@ namespace Project
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.sm.RaiseStateProgress(ProgressMax, "Initialization Complete", ProgressMax, Color.Gold); System.Threading.Thread.Sleep(5);
PUB.log.Add("init finish");
//조명 ON
@@ -111,7 +111,7 @@ namespace Project
// Start OWIN host
var baseAddress = "http://*:9001";
WebApp.Start<OWIN.Startup>(url: baseAddress);
PUB.log.AddI($"호스팅서비스ON : {baseAddress}");
PUB.log.AddI($"Hosting service ON: {baseAddress}");
}
@@ -157,7 +157,7 @@ namespace Project
//7개의 축을 사용한다
if (PUB.mot.IsInit == false)
{
PUB.log.AddE("모션보드 초기화 오류로 설정을 진행하지 않습니다");
PUB.log.AddE("Motion board initialization error, configuration will not proceed");
}
else
{
@@ -167,15 +167,15 @@ namespace Project
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.log.AddAT($"Motion ({i}) configuration file not found!!");
PUB.mot.InitAxis(i, file);
}
else
{
if (PUB.mot.InitAxis((short)i, file) == false)
PUB.log.AddE("모션 설정 실패 축:" + i.ToString());
PUB.log.AddE("Motion setup failed axis:" + i.ToString());
else
PUB.log.AddI($"모션({i}) 설정 완료");
PUB.log.AddI($"Motion ({i}) setup complete");
}
}

View File

@@ -129,7 +129,7 @@ namespace Project
//plc의 SID 데이터를 갱신하도록 한다
PUB.Result.ClearAllSID = true;
PUB.log.AddI("*** 신규 작업이 시작 되었습니다 ***");
PUB.log.AddI("*** New job has started ***");
//PUB.flag.set(eVarBool.RDY_VISION1, true, "JOB START"); //최초 시작시에는 1번 비젼이 동작하게 한다
//새로시작할때에는 이 값을 초기화 해준다.
@@ -149,10 +149,10 @@ namespace Project
{
if (VAR.BOOL[eVarBool.wait_for_keyence])
{
PUB.log.Add($"바코드수신대기중이었으므로 기존 값을 삭제 합니다(CONF={PUB.Result.ItemDataC.VisionData.Confirm},ID:{PUB.Result.ItemDataC.VisionData.RID})");
PUB.log.Add($"Deleting existing values because barcode reception was waiting (CONF={PUB.Result.ItemDataC.VisionData.Confirm}, ID:{PUB.Result.ItemDataC.VisionData.RID})");
PUB.Result.ItemDataC.VisionData.Clear("RESTART", true);
}
PUB.log.AddI("*** 작업이 재시작 되었습니다 ***");
PUB.log.AddI("*** Job has been restarted ***");
}
}
@@ -253,7 +253,7 @@ namespace Project
if (PUB.flag.get(eVarBool.FG_JOB_END) == false)
{
PUB.log.AddAT("작업완료조건실행");
PUB.log.AddAT("Work completion condition execution");
VAR.TIME.Update(eVarTime.JOB_END);
PUB.flag.set(eVarBool.FG_JOB_END, true, "SM_RUN");
}
@@ -264,7 +264,7 @@ namespace Project
if (ts.TotalSeconds >= AR.SETTING.Data.Timeout_JOBEnd)
{
PUB.Result.JobEndTime = DateTime.Now;
PUB.log.AddI($"작업완료 상태로 전환합니다(대기시간:{AR.SETTING.Data.Timeout_JOBEnd})");
PUB.log.AddI($"Switching to job completion state (wait time: {AR.SETTING.Data.Timeout_JOBEnd} seconds)");
PUB.sm.SetNewStep(eSMStep.FINISH);
PUB.flag.set(eVarBool.FG_JOB_END, false, "SM_RUN:FINISH");
}
@@ -275,7 +275,7 @@ namespace Project
//이조건일때에는 job_End 가 없어야한다
if (PUB.flag.get(eVarBool.FG_JOB_END) == true)
{
PUB.log.AddI("작업완료조건 해제");
PUB.log.AddI("Work completion condition released");
PUB.flag.set(eVarBool.FG_JOB_END, false, "run");
//메인메세지를 제거 해준다.

View File

@@ -105,7 +105,7 @@ namespace Project
{
PUB.flag.set(FG_RDY_PORT, false, "IOCHANGE");
if (PUB.sm.Step > eSMStep.IDLE)
PUB.log.AddAT("안전센서 검출로 인해 PORT_READY(L)를 해제 합니다");
PUB.log.AddAT("Releasing PORT_READY(L) due to safety sensor detection");
}
//도어가 열리면 포트를 멈춘다 210329
@@ -225,7 +225,7 @@ namespace Project
var PosZ = MOT.getPositionMatch(MOT.GetLZPos(eLZLoc.PICKON));//.MOT.GetPRM_PosName();
if (PosM && PosZ)
{
PUB.log.Add("도어열림으로 인해 프린터L Z축을 올립니다");
PUB.log.Add("Raising printer L Z-axis due to door opening");
var Pos = MOT.GetLZPos(eLZLoc.PICKON);
MOT.Move(Pos);
}
@@ -236,7 +236,7 @@ namespace Project
var PosZ = MOT.getPositionMatch(MOT.GetRZPos(eRZLoc.PICKON));// GetPRZ_PosName();
if (PosM && PosZ)
{
PUB.log.Add("도어열림으로 인해 프린터R Z축을 올립니다");
PUB.log.Add("Raising printer R Z-axis due to door opening");
MOT.Move(eAxis.PR_UPDN, 0, 100, 1000, false, false, false);
}
}
@@ -257,7 +257,7 @@ namespace Project
if (PosM && PosZ)
{
var zpos = MOT.GetLZPos(eLZLoc.PICKON);
PUB.log.Add("도어닫힘으로 인해 프린터L Z축을 내립니다");
PUB.log.Add("Lowering printer L Z-axis due to door closing");
MOT.Move(eAxis.PL_UPDN, zpos.Position, 100, 1000, false, false, false);
}
}
@@ -268,7 +268,7 @@ namespace Project
if (PosM && PosZ)
{
var zpos = MOT.GetRZPos(eRZLoc.PICKON);
PUB.log.Add("도어닫힘으로 인해 프린터R Z축을 내립니다");
PUB.log.Add("Lowering printer R Z-axis due to door closing");
MOT.Move(eAxis.PR_UPDN, zpos.Position, 100, 1000, false, false, false);
}
}
@@ -286,12 +286,12 @@ namespace Project
if (curState == false)
{
DIO.SetAIR(!curState);
PUB.log.AddI("에어 컴");
PUB.log.AddI("Air ON");
}
else
{
DIO.SetAIR(!curState);
PUB.log.AddAT("에어 끔");
PUB.log.AddAT("Air OFF");
}
}
//AIR의 LED는 실제 AIR 출력 상태와 동기화 한다 * output event 에서 처리함
@@ -430,7 +430,7 @@ namespace Project
if (DIO.GetIOInput(eDIName.PORTL_LIM_DN) == true && DIO.GetIOOutput(eDOName.CART_MAG0) == true)
{
DIO.SetPortMagnet(0, false);
PUB.log.Add("좌측 포트의 마그넷 OFF");
PUB.log.Add("Left port magnet OFF");
}
}
else if (pin == eDIName.PORTC_LIM_DN)
@@ -439,7 +439,7 @@ namespace Project
if (DIO.GetIOInput(eDIName.PORTC_LIM_DN) == true && DIO.GetIOOutput(eDOName.CART_MAG1) == true)
{
DIO.SetPortMagnet(1, false);
PUB.log.Add("중앙 포트의 마그넷 OFF");
PUB.log.Add("Center port magnet OFF");
if(PUB.sm.Step == eSMStep.FINISH)
{
@@ -453,7 +453,7 @@ namespace Project
if (DIO.GetIOInput(eDIName.PORTR_LIM_DN) == true && DIO.GetIOOutput(eDOName.CART_MAG2) == true)
{
DIO.SetPortMagnet(2, false);
PUB.log.Add("우측 포트의 마그넷 OFF");
PUB.log.Add("Right port magnet OFF");
}
}
else if (pin == eDIName.L_CONV3)
@@ -464,7 +464,7 @@ namespace Project
if(VAR.I32[eVarInt32.LEFT_ITEM_COUNT] > 0)
{
VAR.I32[eVarInt32.LEFT_ITEM_COUNT] -= 1;//= false; //해제
PUB.log.AddAT($"left 버퍼 수량 감소");
PUB.log.AddAT($"Left buffer quantity decrease");
}
}
@@ -477,7 +477,7 @@ namespace Project
if (VAR.I32[eVarInt32.RIGT_ITEM_COUNT] > 0)
{
VAR.I32[eVarInt32.RIGT_ITEM_COUNT] -= 1;//= false; //해제
PUB.log.AddAT($"right 버퍼 수량 감소");
PUB.log.AddAT($"Right buffer quantity decrease");
}
}

View File

@@ -45,7 +45,7 @@ namespace Project
}
var reason = string.Join(",", lst);
PUB.log.Add("MOT", $"모터정지사유({e.axis}):{reason}:bit={bitstatus}");
PUB.log.Add("MOT", $"Motor stop reason ({e.axis}): {reason}: bit={bitstatus}");
}
@@ -61,7 +61,7 @@ namespace Project
}
else if (e.NewStatus == arDev.MOT.HOME_RESULT.HOME_SUCCESS)
{
PUB.log.AddI(string.Format("홈 검색이 완료되었습니다 축:{0}", e.Axis));
PUB.log.AddI(string.Format("Home search completed for axis: {0}", e.Axis));
}
}
}
@@ -71,7 +71,7 @@ namespace Project
{
if (e.IsError)
{
if (e.Message.IndexOf("동일위치") != -1 || e.Message.IndexOf("inposition") != -1)
if (e.Message.IndexOf("same position") != -1 || e.Message.IndexOf("inposition") != -1)
{ // Pub.log.AddAT("MOT:" + e.Message);
}
else PUB.log.AddE("MOT:" + e.Message);

View File

@@ -148,11 +148,11 @@ namespace Project
if (DIO.isSaftyDoorF() == false)
{
PUB.Result.SetResultMessage(eResult.EMERGENCY, eECode.DOORSAFTY, eNextStep.PAUSE);// false);
PUB.mot.MoveStop("안전문제", true);
PUB.mot.MoveStop("Safety issue", true);
if (DIO.isSaftyDoorF(0, false) == false) DIO.SetPortMotor(0, eMotDir.CW, false, "안전오류");
if (DIO.isSaftyDoorF(1, false) == false) DIO.SetPortMotor(1, eMotDir.CW, false, "안전오류");
if (DIO.isSaftyDoorF(2, false) == false) DIO.SetPortMotor(2, eMotDir.CW, false, "안전오류");
if (DIO.isSaftyDoorF(0, false) == false) DIO.SetPortMotor(0, eMotDir.CW, false, "Safety error");
if (DIO.isSaftyDoorF(1, false) == false) DIO.SetPortMotor(1, eMotDir.CW, false, "Safety error");
if (DIO.isSaftyDoorF(2, false) == false) DIO.SetPortMotor(2, eMotDir.CW, false, "Safety error");
return false;
}
@@ -176,7 +176,7 @@ namespace Project
Boolean isPortLimDN(int idx)
{
if (idx < 0 || idx > 2) throw new Exception("포트번호는(0~2)사이로 입력하세요");
if (idx < 0 || idx > 2) throw new Exception("Port number must be between (0~2)");
if (idx == 0) return DIO.GetIOInput(eDIName.PORTL_LIM_DN);
else if (idx == 1) return DIO.GetIOInput(eDIName.PORTC_LIM_DN);
else return DIO.GetIOInput(eDIName.PORTR_LIM_DN);
@@ -184,14 +184,14 @@ namespace Project
}
Boolean isPortLimUP(int idx)
{
if (idx < 0 || idx > 2) throw new Exception("포트번호는(0~2)사이로 입력하세요");
if (idx < 0 || idx > 2) throw new Exception("Port number must be between (0~2)");
if (idx == 0) return DIO.GetIOInput(eDIName.PORTL_LIM_UP);
else if (idx == 1) return DIO.GetIOInput(eDIName.PORTC_LIM_UP);
else return DIO.GetIOInput(eDIName.PORTR_LIM_UP);
}
Boolean isPortDetUp(int idx)
{
if (idx < 0 || idx > 2) throw new Exception("포트번호는(0~2)사이로 입력하세요");
if (idx < 0 || idx > 2) throw new Exception("Port number must be between (0~2)");
if (idx == 0) return DIO.GetIOInput(eDIName.PORTL_DET_UP);
else if (idx == 1) return DIO.GetIOInput(eDIName.PORTC_DET_UP);
else return DIO.GetIOInput(eDIName.PORTR_DET_UP);

View File

@@ -56,27 +56,27 @@ namespace Project
private void Ws_DisconnectedL(object sender, EventArgs e)
{
var ws = sender as WatsonWebsocket.WatsonWsClient;
PUB.log.AddAT("카메라L 접속 종료");
PUB.log.AddAT("Camera L connection terminated");
//_isCrevisOpen[0] = false;
PUB.flag.set(eVarBool.FG_RDY_CAMERA_L, false, "DISC");
}
private void Ws_ConnectedL(object sender, EventArgs e)
{
PUB.log.AddAT("카메라L 접속 성공");
PUB.log.AddAT("Camera L connection successful");
//_isCrevisOpen[0] = true;
}
private void Ws_DisconnectedR(object sender, EventArgs e)
{
var ws = sender as WatsonWebsocket.WatsonWsClient;
PUB.log.AddAT("카메라R 접속 종료");
PUB.log.AddAT("Camera R connection terminated");
//_isCrevisOpen[2] = false;
PUB.flag.set(eVarBool.FG_RDY_CAMERA_R, false, "DISC");
}
private void Ws_ConnectedR(object sender, EventArgs e)
{
PUB.log.AddAT("카메라R 접속 성공");
PUB.log.AddAT("Camera R connection successful");
//_isCrevisOpen[2] = true;
}
@@ -137,7 +137,7 @@ namespace Project
if(PUB.flag.get(eVarBool.FG_RDY_CAMERA_L)==false)
{
PUB.flag.set(eVarBool.FG_RDY_CAMERA_L, true, "WEBSOCKET");
PUB.log.Add("왼쪽카메라 준비 완료");
PUB.log.Add("Left camera ready");
}
}
else
@@ -145,7 +145,7 @@ namespace Project
if (PUB.flag.get(eVarBool.FG_RDY_CAMERA_R) == false)
{
PUB.flag.set(eVarBool.FG_RDY_CAMERA_R, true, "WEBSOCKET");
PUB.log.Add("오른쪽카메라 준비 완료");
PUB.log.Add("Right camera ready");
}
}
@@ -158,7 +158,7 @@ namespace Project
}
catch (Exception ex)
{
PUB.log.AddE("상태메시지 분석실패: " + ex.Message);
PUB.log.AddE("Status message analysis failed: " + ex.Message);
}
}
else
@@ -166,16 +166,16 @@ namespace Project
//처리가능한 상황에서만 큐에 데이터를 넣는다
if (idx == 0 && PUB.flag.get(eVarBool.FG_PRC_VISIONL) == false)
{
PUB.log.AddAT("(좌)측 비젼 검증상태가 아니므로 바코드 데이터 삭제\n" + data);
PUB.log.AddAT("Left side vision not in verification state, deleting barcode data\n" + data);
return;
}
if (idx != 0 && PUB.flag.get(eVarBool.FG_PRC_VISIONR) == false)
{
PUB.log.AddAT("(우)측 비젼 검증상태가 아니므로 바코드 데이터 삭제\n" + data);
PUB.log.AddAT("Right side vision not in verification state, deleting barcode data\n" + data);
return;
}
PUB.log.Add($"QR검증({(idx == 0 ? "L" : "R")})수신: " + data);
PUB.log.Add($"QR verification ({(idx == 0 ? "L" : "R")}) received: " + data);
var guid = idx == 0 ? PUB.Result.ItemDataL.guid : PUB.Result.ItemDataR.guid;
//BarcodeParsing(idx, guid, data, "WS");
@@ -190,7 +190,7 @@ namespace Project
var Complete = RecvQRProcess(qrDataList, eWorkPort.Left);
if (Complete) PUB.flag.set(eVarBool.FG_END_VISIONL, true, "DATA_ARRIVAL");
}
else PUB.log.AddAT("비젼(L) 이전작업이 완료되어 처리하지 않음");
else PUB.log.AddAT("Vision (L) previous task completed, not processing");
}
else
{
@@ -199,7 +199,7 @@ namespace Project
var Complete = RecvQRProcess(qrDataList, eWorkPort.Right);
if (Complete) PUB.flag.set(eVarBool.FG_END_VISIONR, true, "DATA_ARRIVAL");
}
else PUB.log.AddAT("비젼(R) 이전작업이 완료되어 처리하지 않음");
else PUB.log.AddAT("Vision (R) previous task completed, not processing");
}
}
@@ -258,7 +258,7 @@ namespace Project
}
catch (Exception ex)
{
PUB.log.AddE($"전송{idx}실패{ex.Message}");
PUB.log.AddE($"Transmission {idx} failed {ex.Message}");
sendok = false;
}
@@ -271,13 +271,13 @@ namespace Project
if(ws != null)
{
PUB.log.AddAT($"전송{idx} 실패로 소켓을 닫습니다");
PUB.log.AddAT($"Closing socket due to transmission {idx} failure");
ws.Stop();
}
}
catch (Exception ex)
{
PUB.log.AddE($"소켓{idx} 종료 실패:{ex.Message}");
PUB.log.AddE($"Socket {idx} termination failed: {ex.Message}");
}
}
return sendok;
@@ -303,7 +303,7 @@ namespace Project
if (JsonStr.isEmpty())
{
PUB.log.AddE("바코드 수신값(JSON) 이 없어 진행할 수 없습니다");
PUB.log.AddE("Cannot proceed due to missing barcode receive value (JSON)");
return retval;
}
@@ -371,7 +371,7 @@ namespace Project
}
catch (Exception ex)
{
PUB.logVision.Add($"카메라(${vIdx}) ProcessBarcodeQue 실패{ex.Message}"); PUB.logVision.Flush();
PUB.logVision.Add($"Camera ({vIdx}) ProcessBarcodeQue failed {ex.Message}"); PUB.logVision.Flush();
}
return retval;