Files
ATV_STDLabelAttach/Handler/Project/RunCode/RunSequence/7_PRINTER_ON.cs
ChiKyun Kim 9a7d1d27c7 프로젝트 구조 개선 및 README.md 추가
- UIControl 프로젝트 구조 변경 (CapCleaningControl → Sub/UIControl)
- arAjinextek 라이브러리 통합 및 구조 개선
- 새로운 arAjinextek_Union 프로젝트 추가
- 솔루션 파일에 README.md 추가
- QR 모드에서 WMS RCV 태그 인식 기능 강화
- 데이터베이스 스키마 업데이트 및 관련 클래스 수정
- 프린터 및 바코드 장치 연동 로직 개선

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-07 08:35:56 +09:00

224 lines
8.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using AR;
namespace Project
{
public partial class FMain
{
public Boolean PRINTER_ON(eWorkPort target, eSMStep cmdIndex)
{
UInt16 idx = 1;
var mv = PUB.Result.vModel;
var mc = PUB.Result.mModel;
var funcName = System.Reflection.MethodBase.GetCurrentMethod().Name;
var seqTime = PUB.sm.seq.GetTime(cmdIndex);
var msgType = (Class.eStatusMesage)target;
var item = target == eWorkPort.Left ? PUB.Result.ItemDataL : PUB.Result.ItemDataR;
var Printer = target == eWorkPort.Left ? PUB.PrinterL : PUB.PrinterR;
//var Jobtype = VAR.STR[eVarString.JOB_TYPE];
//var ByPassMode = Jobtype == "BP";
var CVMode = VAR.BOOL[eVarBool.Use_Conveyor];
//option check
var OPT_PrinterOff = PUB.OPT_PRINTEROFF(target);
var OPT_CameraOff = PUB.OPT_CAMERA(target);
var OPT_BYPASS = PUB.OPT_BYPASS();
//####################################################
//### 인터락 확인
//####################################################
Boolean MotMoveM, MotMoveZ;
AR.CInterLock iLockM, iLockZ;
eAxis axisM = target == eWorkPort.Left ? eAxis.PL_MOVE : eAxis.PR_MOVE;
eAxis axisZ = target == eWorkPort.Left ? eAxis.PL_UPDN : eAxis.PR_UPDN;
if (target == eWorkPort.Left)
{
MotMoveM = PUB.mot.IsMotion((int)eAxis.PL_MOVE);
MotMoveZ = PUB.mot.IsMotion((int)eAxis.PL_UPDN);
iLockM = PUB.iLock[(int)eAxis.PL_MOVE];
iLockZ = PUB.iLock[(int)eAxis.PL_UPDN];
}
else
{
MotMoveM = PUB.mot.IsMotion((int)eAxis.PR_MOVE);
MotMoveZ = PUB.mot.IsMotion((int)eAxis.PR_UPDN);
iLockM = PUB.iLock[(int)eAxis.PR_MOVE];
iLockZ = PUB.iLock[(int)eAxis.PR_UPDN];
}
if (iLockM.IsEmpty() == false && MotMoveM)
{
var locklistX = MOT.GetActiveLockList(axisM, iLockM);
PUB.mot.MoveStop("ILock(" + string.Join(",", locklistX) + ")", (short)axisM);
}
if (iLockZ.IsEmpty() == false && MotMoveZ)
{
var locklistZ = MOT.GetActiveLockList(axisZ, iLockZ);
PUB.mot.MoveStop("ILock(" + string.Join(",", locklistZ) + ")", (short)axisZ);
}
//####################################################
//### 작업시작
//####################################################
if (PUB.sm.seq.Get(cmdIndex) == idx++)
{
PUB.log.Add($"[{target}] 프린트 ON 작업 시작");
PUB.sm.seq.Update(cmdIndex);
return false;
}
//####################################################
//### 종이감지확인
//####################################################
if (PUB.sm.seq.Get(cmdIndex) == idx++)
{
var = target == eWorkPort.Left ? eDIName.L_PICK_VAC : eDIName.R_PICK_VAC;
var = target == eWorkPort.Left ? AR.SETTING.Data.Detect_PrintL : AR.SETTING.Data.Detect_PrintR;
if (OPT_PrinterOff == false)
{
if ( == false)
{
if (seqTime.TotalMilliseconds < 100) return false;
PUB.log.AddAT($"[{target}] 용지감지기능 OFF(3초후 진행)");
}
else
{
var ioresult = DIO.checkDigitalO(, seqTime, true, 0, false);
if (ioresult == eNormalResult.Error)
{
var errCode = target == eWorkPort.Left ? eECode.NO_PAPER_DETECT_L : eECode.NO_PAPER_DETECT_R;
PUB.Result.SetResultMessage(eResult.HARDWARE, errCode, eNextStep.PAUSE, );
return false;
}
else if (ioresult == eNormalResult.False) return false;
}
}
PUB.sm.seq.Update(cmdIndex);
return false;
}
//####################################################
//### Z올리기(slow)
//####################################################
if (PUB.sm.seq.Get(cmdIndex) == idx++)
{
if (iLockZ.IsEmpty() == false) return false;
if (OPT_BYPASS == false)
{
if (seqTime.TotalMilliseconds < 3000) return false;
sPositionData PosZ;
if (target == eWorkPort.Left)
{
PosZ = MOT.GetLZPos(eLZLoc.PICKON);
}
else
{
PosZ = MOT.GetRZPos(eRZLoc.PICKON);
}
PosZ.Position -= 10;
if (PosZ.Position < 1) PosZ.Position = 1;
PosZ.Speed = 5;
if (MOT.CheckMotionPos(seqTime, PosZ, funcName) == false) return false;
}
PUB.sm.seq.Update(cmdIndex);
return false;
}
//####################################################
//### 종이감지확인
//####################################################
if (PUB.sm.seq.Get(cmdIndex) == idx++)
{
if (OPT_PrinterOff == false)
{
var = target == eWorkPort.Left ? eDIName.L_PICK_VAC : eDIName.R_PICK_VAC;
var = target == eWorkPort.Left ? AR.SETTING.Data.Detect_PrintL : AR.SETTING.Data.Detect_PrintR;
if ( == false)
{
if (seqTime.TotalMilliseconds < 100) return false;
PUB.log.AddAT($"[{target}] 용지감지기능 OFF(3초후 진행)");
}
else
{
var ioresult = DIO.checkDigitalO(, seqTime, true, 0, false);
if (ioresult == eNormalResult.Error)
{
var errCode = target == eWorkPort.Left ? eECode.NO_PAPER_DETECT_L : eECode.NO_PAPER_DETECT_R;
PUB.Result.SetResultMessage(eResult.HARDWARE, errCode, eNextStep.PAUSE, );
return false;
}
else if (ioresult == eNormalResult.False) return false;
}
}
PUB.sm.seq.Update(cmdIndex);
return false;
}
//####################################################
//### Z올리기
//####################################################
if (PUB.sm.seq.Get(cmdIndex) == idx++)
{
if (iLockZ.IsEmpty() == false) return false;
if (OPT_BYPASS == false)
{
sPositionData PosZ;
if (target == eWorkPort.Left)
{
PosZ = MOT.GetLZPos(eLZLoc.READY);
}
else
{
PosZ = MOT.GetRZPos(eRZLoc.READY);
}
if (MOT.CheckMotionPos(seqTime, PosZ, funcName) == false) return false;
}
PUB.sm.seq.Update(cmdIndex);
return false;
}
//####################################################
//###
//####################################################
if (PUB.sm.seq.Get(cmdIndex) == idx++)
{
//air off
if (target == eWorkPort.Left)
{
DIO.SetPrintLAir(false);
if (OPT_BYPASS == false)
VAR.I32[eVarInt32.LPickOnCount] += 1;
PUB.flag.set(eVarBool.FG_PL_ITEMON, true, funcName);
}
else
{
DIO.SetPrintRAir(false);
if (OPT_BYPASS == false)
VAR.I32[eVarInt32.RPickOnCount] += 1;
PUB.flag.set(eVarBool.FG_PR_ITEMON, true, funcName);
}
PUB.sm.seq.Update(cmdIndex);
return false;
}
return true;
}
}
}