Initial commit
This commit is contained in:
330
Handler/Project_form2/Dialog/fPickerMove.cs
Normal file
330
Handler/Project_form2/Dialog/fPickerMove.cs
Normal file
@@ -0,0 +1,330 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Project.Dialog
|
||||
{
|
||||
public partial class fPickerMove : Form
|
||||
{
|
||||
public fPickerMove()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.FormClosing += FPickerMove_FormClosing;
|
||||
}
|
||||
private void fPickerMove_Load(object sender, EventArgs e)
|
||||
{
|
||||
Pub.flag.set(eFlag.MOVE_PICKER, true, "PICKERMOVE");
|
||||
timer1.Start();
|
||||
}
|
||||
private void FPickerMove_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
if(ManPosL)
|
||||
{
|
||||
Util.MsgE("프린터측 모션이 관리위치에 있습니다\n위치를 복귀 한 후 다시 시도하세요", true);
|
||||
e.Cancel = true;
|
||||
return;
|
||||
}
|
||||
Pub.flag.set(eFlag.MOVE_PICKER, false, "PICKERMOVE");
|
||||
timer1.Stop();
|
||||
}
|
||||
|
||||
Boolean CheckSafty()
|
||||
{
|
||||
if (Util_DO.isSaftyDoorF() == false)
|
||||
{
|
||||
Util.MsgE("전면 도어가 열려 있습니다");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Pub.mot.hasHomeSetOff)
|
||||
{
|
||||
Util.MsgE("모션의 홈 작업이 완료되지 않았습니다");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void button3_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (CheckSafty() == false) return;
|
||||
var p1 = Util_Mot.GetAxPXPos(eAxisPXPos.PICKOFFL);
|
||||
Util_Mot.Move(eAxis.X_PICKER, p1.position, 250, p1.acc, false, false, false);
|
||||
DialogResult = DialogResult.OK;
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (CheckSafty() == false) return;
|
||||
var p1 = Util_Mot.GetAxPXPos(eAxisPXPos.READYL);
|
||||
Util_Mot.Move(eAxis.X_PICKER, p1.position, 250, p1.acc, false, false, false);
|
||||
DialogResult = DialogResult.OK;
|
||||
}
|
||||
|
||||
private void button2_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (CheckSafty() == false) return;
|
||||
var p1 = Util_Mot.GetAxPXPos(eAxisPXPos.PICKON);
|
||||
Util_Mot.Move(eAxis.X_PICKER, p1.position, 250, p1.acc, false, false, false);
|
||||
DialogResult = DialogResult.OK;
|
||||
}
|
||||
|
||||
private void button4_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (CheckSafty() == false) return;
|
||||
var p1 = Util_Mot.GetAxPXPos(eAxisPXPos.READYR);
|
||||
Util_Mot.Move(eAxis.X_PICKER, p1.position, 250, p1.acc, false, false, false);
|
||||
DialogResult = DialogResult.OK;
|
||||
}
|
||||
|
||||
private void button5_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (CheckSafty() == false) return;
|
||||
var p1 = Util_Mot.GetAxPXPos(eAxisPXPos.PICKOFFR);
|
||||
Util_Mot.Move(eAxis.X_PICKER, p1.position, 250, p1.acc, false, false, false);
|
||||
DialogResult = DialogResult.OK;
|
||||
}
|
||||
|
||||
private void button8_Click(object sender, EventArgs e)
|
||||
{
|
||||
Pub.mot.MoveStop("pmove", (int)eAxis.X_PICKER);
|
||||
}
|
||||
|
||||
private void button6_Click(object sender, EventArgs e)
|
||||
{
|
||||
//jog left
|
||||
}
|
||||
|
||||
private void button7_Click(object sender, EventArgs e)
|
||||
{
|
||||
//jog right
|
||||
}
|
||||
|
||||
private void button6_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
//조그시작
|
||||
var bt = sender as Button;
|
||||
if (bt.Text.Contains( "<<")) Pub.mot.JOG((short)eAxis.X_PICKER, arDev.AzinAxt.eMotionDirection.Negative);
|
||||
else Pub.mot.JOG((short)eAxis.X_PICKER, arDev.AzinAxt.eMotionDirection.Positive);
|
||||
}
|
||||
|
||||
private void button6_MouseUp(object sender, MouseEventArgs e)
|
||||
{
|
||||
//마우스 놓으면 멈춤
|
||||
Pub.mot.MoveStop("pmove", (short)eAxis.X_PICKER);
|
||||
}
|
||||
|
||||
private void button9_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
//왼쪽검증취소
|
||||
// if (Pub.flag.get(eFlag.RDY_VISION0) == false) return;
|
||||
var dlg = Util.MsgQ("QR코드 검증을 취소할까요?");
|
||||
if (dlg != DialogResult.Yes) return;
|
||||
|
||||
Pub.flag.set(eFlag.RDY_VISION0, false, "CANCEL");
|
||||
Pub.flag.set(eFlag.PORTL_ITEMON, false, "CANCEL");
|
||||
Pub.ResetRunStepSeq(eRunSequence.VISION0);
|
||||
Pub.UpdaterunStepSeqStartTime(eRunSequence.COM_VS0);
|
||||
Pub.log.Add(string.Format("QR검증({0}) 취소 JGUID={1}", "L", Pub.Result.ItemData[0].guid));
|
||||
UpdateDatabase(0);
|
||||
DialogResult = DialogResult.OK;
|
||||
}
|
||||
|
||||
private void button10_Click(object sender, EventArgs e)
|
||||
{
|
||||
//왼쪽검증취소
|
||||
//if (Pub.flag.get(eFlag.RDY_VISION0) == false) return;
|
||||
var dlg = Util.MsgQ("QR코드 검증을 취소할까요?");
|
||||
if (dlg != DialogResult.Yes) return;
|
||||
|
||||
Pub.flag.set(eFlag.RDY_VISION2, false, "CANCEL");
|
||||
Pub.flag.set(eFlag.PORTR_ITEMON, false, "CANCEL");
|
||||
Pub.ResetRunStepSeq(eRunSequence.VISION2);
|
||||
Pub.UpdaterunStepSeqStartTime(eRunSequence.COM_VS2);
|
||||
Pub.log.Add(string.Format("QR검증({0}) 취소 JGUID={1}", "R", Pub.Result.ItemData[2].guid));
|
||||
|
||||
UpdateDatabase(2);
|
||||
DialogResult = DialogResult.OK;
|
||||
}
|
||||
|
||||
void UpdateDatabase(int vidx)
|
||||
{
|
||||
//취소상태를 DB에도 남긴다.
|
||||
using (var db = new EEEntities())
|
||||
{
|
||||
var itemdata = Pub.Result.ItemData[vidx];
|
||||
var dr = db.Component_Reel_Result.AsNoTracking().Where(t => t.JGUID == itemdata.guid).FirstOrDefault();
|
||||
if (dr == null)
|
||||
{
|
||||
var ermsg = string.Format("다음 guid 를 찾을수 없어 검증취소 를 변경하지 못함 vidx={2},guid={0},sid={1}", itemdata.guid, itemdata.VisionData.SID, vidx);
|
||||
Pub.AddDebugLog(ermsg, true);
|
||||
Pub.log.AddE(ermsg);
|
||||
}
|
||||
else
|
||||
{
|
||||
dr.ANGLE = itemdata.VisionData.ApplyAngle; //210331 - 도중에 사용자 angle 이 있다면 그것이 적용되었음
|
||||
dr.PRNVALID = false;
|
||||
dr.REMARK = "검증취소";
|
||||
db.SaveChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void button11_Click(object sender, EventArgs e)
|
||||
{
|
||||
//관리위치L
|
||||
MoveMangePos(0);
|
||||
}
|
||||
|
||||
private void button13_Click(object sender, EventArgs e)
|
||||
{
|
||||
//관리위치
|
||||
MoveMangePos(2);
|
||||
}
|
||||
|
||||
Boolean ManPosL = false;
|
||||
|
||||
void MoveMangePos(int vidx)
|
||||
{
|
||||
if (Pub.sm.Step != StateMachine.eSMStep.IDLE)
|
||||
{
|
||||
Util.MsgE("대기상태에서만 사용 가능 합니다");
|
||||
return;
|
||||
}
|
||||
var Xpos = Util_Mot.GetPKX_PosName();
|
||||
if (Xpos != ePickYPosition.PICKON)
|
||||
{
|
||||
Util.MsgE("피커위치가 중앙에서만 사용 가능 합니다");
|
||||
return;
|
||||
}
|
||||
|
||||
Task.Run(new Action(() =>
|
||||
{
|
||||
//Z축을 Ready 위치로 이동한다.
|
||||
if (vidx == 0)
|
||||
{
|
||||
var zPos = Util_Mot.GetAxPLZPos(eAxisPLUPDNPos.READY);
|
||||
Util_Mot.Move(eAxis.PL_UPDN, zPos.position, zPos.speed, zPos.acc);
|
||||
while (Util_Mot.GetPLZ_PosName() != ePrintZPosition.READY)
|
||||
System.Threading.Thread.Sleep(10);
|
||||
|
||||
var mPos = Util_Mot.GetAxPLMPos(eAxisPLMovePos.PRINTL07);
|
||||
Util_Mot.Move(eAxis.PL_MOVE, mPos.position, mPos.speed, mPos.acc);
|
||||
while (Util_Mot.GetPLM_PosName() != ePrintYPosition.PRINTL07)
|
||||
System.Threading.Thread.Sleep(10);
|
||||
|
||||
var zPos2 = Util_Mot.GetAxPLZPos(eAxisPLUPDNPos.PICKOFF);
|
||||
var tPos = (zPos2.position / 2f);
|
||||
Util_Mot.Move(eAxis.PL_UPDN, tPos, zPos.speed, zPos.acc);
|
||||
ManPosL = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
var zPos = Util_Mot.GetAxPRZPos(eAxisPRUPDNPos.READY);
|
||||
Util_Mot.Move(eAxis.PR_UPDN, zPos.position, zPos.speed, zPos.acc);
|
||||
while (Util_Mot.GetPRZ_PosName() != ePrintZPosition.READY)
|
||||
System.Threading.Thread.Sleep(10);
|
||||
|
||||
var mPos = Util_Mot.GetAxPRMPos(eAxisPRMovePos.PRINTL07);
|
||||
Util_Mot.Move(eAxis.PR_MOVE, mPos.position, mPos.speed, mPos.acc);
|
||||
while (Util_Mot.GetPRM_PosName() != ePrintYPosition.PRINTL07)
|
||||
System.Threading.Thread.Sleep(10);
|
||||
|
||||
var zPos2 = Util_Mot.GetAxPRZPos(eAxisPRUPDNPos.PICKOFF);
|
||||
var tPos = (zPos2.position / 2f);
|
||||
Util_Mot.Move(eAxis.PR_UPDN, tPos, zPos.speed, zPos.acc);
|
||||
//ManPosR = true;
|
||||
}
|
||||
|
||||
}));
|
||||
}
|
||||
|
||||
private void button12_Click(object sender, EventArgs e)
|
||||
{
|
||||
var Xpos = Util_Mot.GetPKX_PosName();
|
||||
if (Xpos != ePickYPosition.PICKON)
|
||||
{
|
||||
Util.MsgE("피커위치가 중앙에서만 사용 가능 합니다");
|
||||
return;
|
||||
}
|
||||
|
||||
//위치복귀
|
||||
PosRecover(0);
|
||||
PosRecover(2);
|
||||
}
|
||||
|
||||
void PosRecover(int vidx)
|
||||
{
|
||||
Task.Run(new Action(() =>
|
||||
{
|
||||
//Z축을 Ready 위치로 이동한다.
|
||||
if (vidx == 0)
|
||||
{
|
||||
var zPos = Util_Mot.GetAxPLZPos(eAxisPLUPDNPos.READY);
|
||||
Util_Mot.Move(eAxis.PL_UPDN, zPos.position, zPos.speed, zPos.acc);
|
||||
while (Util_Mot.GetPLZ_PosName() != ePrintZPosition.READY)
|
||||
System.Threading.Thread.Sleep(10);
|
||||
|
||||
var mPos = Util_Mot.GetAxPLMPos(eAxisPLMovePos.READY);
|
||||
Util_Mot.Move(eAxis.PL_MOVE, mPos.position, mPos.speed, mPos.acc);
|
||||
while (Util_Mot.GetPLM_PosName() != ePrintYPosition.READY)
|
||||
System.Threading.Thread.Sleep(10);
|
||||
|
||||
|
||||
ManPosL = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
var zPos = Util_Mot.GetAxPRZPos(eAxisPRUPDNPos.READY);
|
||||
Util_Mot.Move(eAxis.PR_UPDN, zPos.position, zPos.speed, zPos.acc);
|
||||
while (Util_Mot.GetPRZ_PosName() != ePrintZPosition.READY)
|
||||
System.Threading.Thread.Sleep(10);
|
||||
|
||||
var mPos = Util_Mot.GetAxPRMPos(eAxisPRMovePos.READY);
|
||||
Util_Mot.Move(eAxis.PR_MOVE, mPos.position, mPos.speed, mPos.acc);
|
||||
while (Util_Mot.GetPRM_PosName() != ePrintYPosition.PRINTL07)
|
||||
System.Threading.Thread.Sleep(10);
|
||||
|
||||
//ManPosR = false;
|
||||
}
|
||||
|
||||
}));
|
||||
}
|
||||
|
||||
private void timer1_Tick(object sender, EventArgs e)
|
||||
{
|
||||
//모션홈이 안잡혀있다면 이동 기능은 OFf한다
|
||||
btl.Enabled = !Pub.mot.hasHomeSetOff;
|
||||
btlw.Enabled = !Pub.mot.hasHomeSetOff;
|
||||
btc.Enabled = !Pub.mot.hasHomeSetOff;
|
||||
btrw.Enabled = !Pub.mot.hasHomeSetOff;
|
||||
btr.Enabled = !Pub.mot.hasHomeSetOff;
|
||||
|
||||
this.button11.Enabled = !Pub.mot.hasHomeSetOff;
|
||||
this.button12.Enabled = !Pub.mot.hasHomeSetOff;
|
||||
this.button13.Enabled = !Pub.mot.hasHomeSetOff;
|
||||
|
||||
this.button8.BackColor = Util_DO.GetIOInput(eDIName.PICKER_SAFE) ? Color.Lime : Color.Tomato;
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void button2_Click_1(object sender, EventArgs e)
|
||||
{
|
||||
Pub.PrinterL.TestPrint( Pub.setting.DrawOutbox,"","",Pub.setting.STDLabelFormat7);
|
||||
Pub.log.Add("임시프린트L:" + Pub.PrinterL.LastPrintZPL);
|
||||
}
|
||||
|
||||
private void button4_Click_1(object sender, EventArgs e)
|
||||
{
|
||||
Pub.PrinterR.TestPrint(Pub.setting.DrawOutbox, "", "", Pub.setting.STDLabelFormat7);
|
||||
Pub.log.Add("임시프린트R:" + Pub.PrinterR.LastPrintZPL);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user