Initial commit

This commit is contained in:
ChiKyun Kim
2025-07-17 16:11:46 +09:00
parent 4865711adc
commit 4a1b1924ba
743 changed files with 230954 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
namespace Project
{
public partial class FMain
{
}
}

View File

@@ -0,0 +1,86 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using UIControl;
using AR;
namespace Project
{
public partial class FMain
{
void _BUTTON_RESET()
{
//RESET 버튼 눌렸을때 공통 처리 사항
DIO.SetBuzzer(false); //buzzer off
if (PUB.popup.Visible)
PUB.popup.needClose = true;
if (
hmi1.Scean == HMI.eScean.xmove)
hmi1.Scean = UIControl.HMI.eScean.Nomal;
PUB.flag.set(eVarBool.FG_KEYENCE_OFFF, false, "USER");
PUB.flag.set(eVarBool.FG_KEYENCE_OFFR, false, "USER");
//팝업메세지가 제거가능한 메세지라면 없앤다.
if (hmi1.HasPopupMenu && hmi1.PopupMenuRequireInput == false)
hmi1.DelMenu();
//알람클리어작업(모션에 오류가 있는 경우에만)
if (PUB.mot.IsInit && PUB.mot.HasServoAlarm)
{
PUB.mot.SetAlarmClearOn();
System.Threading.Thread.Sleep(200);
PUB.mot.SetAlarmClearOff();
}
//자재가 없고, 센서도 반응안하는데. 진공이 되어잇으면 off한다
if (DIO.isVacOKL() == 0 && PUB.flag.get(eVarBool.FG_PK_ITEMON) == false && DIO.GetIOOutput(eDOName.PICK_VAC1) == false)
DIO.SetPickerVac(false, true);
//중단, 오류 모드일때에는 이 리셋이 의미가 있다.
if (PUB.sm.Step == eSMStep.RUN)
{
PUB.log.Add("동작중에는 [RESET] 버튼이 동작하지 않습니다");
}
else if (PUB.sm.Step == eSMStep.PAUSE)
{
//시작대기상태로 전환(대기상태일때 시작키를 누르면 실행 됨)
PUB.sm.SetNewStep(eSMStep.WAITSTART);
PUB.log.AddAT("Reset Clear System Resume & Pause ON");
}
else if (PUB.sm.Step == eSMStep.EMERGENCY)
{
PUB.popup.setMessage("EMERGENCY RESET\n" +
"[비상정지] 상태에는 [시스템초기화] 를 실행 해야 합니다\n" +
"상단메뉴 [초기화] 를 실행하세요");
PUB.log.Add("RESET버튼으로 인해 EMG 상황에서 IDLE전환");
PUB.sm.SetNewStep(eSMStep.IDLE);
}
else if (PUB.sm.Step == eSMStep.ERROR)
{
PUB.log.Add("RESET버튼으로 인해 ERR 상황에서 IDLE전환");
PUB.sm.SetNewStep(eSMStep.IDLE);
}
else if (PUB.sm.Step == eSMStep.WAITSTART)
{
//시작대기중일때에도 아무 처리안함
//Pub.log.Add("시작버튼대기중에는 [RESET] 버튼이 동작하지 않습니다");
}
else if (PUB.sm.Step == eSMStep.IDLE)
{
//Pub.log.Add("대기중에는 [RESET] 버튼이 동작하지 않습니다");
}
else
{
//Pub.log.AddE("정의되지 않은 상태에서의 REST 키 버튼 입력 - 대기상태로 전환합니다");
PUB.sm.SetNewStep(eSMStep.IDLE);
}
}
}
}

View File

@@ -0,0 +1,82 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using AR;
namespace Project
{
public partial class FMain
{
void _BUTTON_START()
{
if (PUB.sm.Step == eSMStep.RUN)
{
//아무것도 하지 않는다
PUB.log.Add("동작중에는 START 버튼이 사용되지 않습니다");
}
else if (PUB.sm.Step == eSMStep.IDLE) //일반대기상태
{
if (DIO.isVacOKL() > 0)
{
DIO.SetBuzzer(true);
PUB.popup.setMessage("PICKER ITEM DETECT\nPICKER 에서 아이템이 감지되었습니다\n[작업취소] 를 눌러서 아이템을 DROP 한 후 제거해주세요.");
return;
}
else if (DIO.getCartSize(1) == eCartSize.None)
{
DIO.SetBuzzer(true);
PUB.popup.setMessage("로더에 카트가 장착되지 않았습니다");
return;
}
else if (DIO.GetIOInput(eDIName.PORTC_LIM_DN) == true && DIO.GetIOInput(eDIName.PORTC_DET_UP) == true)
{
//하단리밋과, 자재감지가 동시에 들어오면 overload 이다
DIO.SetBuzzer(true);
PUB.popup.setMessage("로더에 너무 많은 릴이 적재 되어 있습니다\n" +
"하단 리밋 센서와 상단 릴 감지 센서가 동시에 확인 됩니다");
return;
}
//else if (Util_DO.getCartSize(0) == eCartSize.None && Util_DO.getCartSize(2) == eCartSize.None)
//{
// Util_DO.SetBuzzer(true);
// Pub.popup.setMessage("언로더에 카트가 장착되지 않았습니다");
// return;
//}
Func_start_job_select();
}
else if (PUB.sm.Step == eSMStep.WAITSTART) //시작대기상태
{
DIO.SetRoomLight(true);
//새로시작하면 포트 얼라인을 해제 해준다
PUB.flag.set(eVarBool.FG_RDY_PORT_PL, false, "SW_START");
PUB.flag.set(eVarBool.FG_RDY_PORT_PC, false, "SW_START");
PUB.flag.set(eVarBool.FG_RDY_PORT_PR, false, "SW_START");
//얼라인 상태를 모두 초기화 한다
//loader1.arVar_Port.ToList().ForEach(t => t.AlignOK = 0);
//언로더 체크작업은 항상 다시 시작한다
if (PUB.Result.UnloaderSeq > 1) PUB.Result.UnloaderSeq = 1;
//팝업메세지가 사라지도록 한다
PUB.popup.needClose = true;
PUB.sm.SetNewStep(eSMStep.RUN);
PUB.log.Add("[사용자 일시정지] 해제 => 작업이 계속됩니다");
}
else
{
//string msg = "SYSTEM {0}\n[RESET] 버튼을 누른 후 다시 시도하세요";
//msg = string.Format(msg, PUB.sm.Step);
//PUB.popup.setMessage(msg);
PUB.log.AddE($"[RESET] 버튼을 누른 후 다시 시도하세요");
}
}
}
}

View File

@@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using AR;
namespace Project
{
public partial class FMain
{
void _BUTTON_STOP()
{
//매거진 투입모터 멈춤
if (DIO.GetIOOutput(eDOName.PORTL_MOT_RUN)) DIO.SetPortMotor(0, eMotDir.CW, false, "Button Stop");
if (DIO.GetIOOutput(eDOName.PORTC_MOT_RUN)) DIO.SetPortMotor(1, eMotDir.CW, false, "Button Stop");
if (DIO.GetIOOutput(eDOName.PORTR_MOT_RUN)) DIO.SetPortMotor(2, eMotDir.CW, false, "Button Stop");
//자재가 없고, 센서도 반응안하는데. 진공이 되어잇으면 off한다
if (DIO.isVacOKL() == 0 && PUB.flag.get(eVarBool.FG_PK_ITEMON) == false && DIO.GetIOOutput(eDOName.PICK_VAC1) == true)
DIO.SetPickerVac(false, true);
//조명켜기
if (AR.SETTING.Data.Disable_RoomLight == false)
DIO.SetRoomLight(true);
//컨베이어 멈춘다 230502
DIO.SetOutput(eDOName.LEFT_CONV, false);
DIO.SetOutput(eDOName.RIGHT_CONV, false);
//모든 모터도 멈춘다
if (PUB.mot.HasMoving) PUB.mot.MoveStop("Stop Button");
if (PUB.sm.Step == eSMStep.RUN)
{
//일시중지상태로 전환한다
PUB.Result.SetResultMessage(eResult.OPERATION, eECode.USER_STOP, eNextStep.PAUSE);
PUB.log.Add("[사용자 일시정지]");
}
else if (PUB.sm.Step == eSMStep.HOME_FULL) //홈진행중에는 대기상태로 전환
{
PUB.sm.SetNewStep(eSMStep.IDLE);
}
//로그 기록
PUB.LogFlush();
}
}
}

View File

@@ -0,0 +1,187 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Project
{
public static class AmkorReelID
{
/// <summary>
/// 앰코 ID형태인지 확인합니다.
/// </summary>
/// <param name="rid"></param>
/// <param name="yy"></param>
/// <param name="m"></param>
/// <returns></returns>
public static Boolean IsValidID(string rid, out string yy, out string m)
{
yy = string.Empty;
m = string.Empty;
if (rid.Length != 15) return false;
try
{
var custCost = rid.Substring(2, 4);
var site = "K" + rid.Substring(6, 1);
var mc = rid.Substring(7, 1);
yy = rid.Substring(8, 2);
m = rid.Substring(10, 1);
var sn = rid.Substring(11, 4);
return true;
}
catch
{
return false;
}
}
public static string MakeReelID(string customercode, string ym)
{
if (customercode.Length != 4)
{
return String.Empty;//
//throw new Exception("Customer 코드는 4자리 입니다");
}
if (ym.Length != 3)
{
return string.Empty;//
//throw new Exception("Ym 코드는 3자리 입니다");
}
var rid = "RC{CUST}{DEVLOC}{DEVID}{YM}";
rid = rid.Replace("{DEVLOC}", AR.SETTING.Data.ReelIdDeviceLoc);
rid = rid.Replace("{DEVID}", AR.SETTING.Data.ReelIdDeviceID);
rid = rid.Replace("{CUST}", customercode);
rid = rid.Replace("{YM}", ym);
rid += GetNextSNbyYM(ym);
return rid;
}
/// <summary>
/// 입력된 월 기준으로 시리얼 번호를 생성합니다
/// </summary>
/// <param name="ym">21년 1월의 경우 211, 10월의 경우 21A 식으로 표현</param>
/// <param name="removeR">1,2번 위치에 R기호를 제거 할 것인가?</param>
/// <returns></returns>
public static string GetNextSNbyYM(string ym)
{
//서버에서 자료를 조회해서 처리한다.
var db = new EEEntities();
var dr = db.Component_Reel_Result.Where(t => t.PDATE == ym && t.PDATE.Contains("R") == false).OrderByDescending(t => t.RSN).FirstOrDefault();
if (dr == null) return "0001"; //처음쓰는 자료인다.
var curSN = dr.RSN;
return GetNextSNbySN(curSN);
}
/// <summary>
/// 해당월의 리턴릴의 번호를 생성한다
/// </summary>
/// <param name="ym"></param>
/// <returns></returns>
public static string GetNextSNbyYM_Return(string ym)
{
//서버에서 자료를 조회해서 처리한다.
var db = new EEEntities();
var dr = db.Component_Reel_Result.Where(t => t.PDATE == ym && t.PDATE.StartsWith("R")).OrderByDescending(t => t.RSN).FirstOrDefault();
if (dr == null) return "R001"; //처음쓰는 자료인다.
var curSN = dr.RSN;
return GetNextSNbySN_Return(curSN);
}
/// <summary>
/// 중복릴의 다은번호를 생성한다
/// </summary>
/// <param name="ym"></param>
/// <returns></returns>
public static string GetNextSNbyYM_Dup(string ym)
{
//서버에서 자료를 조회해서 처리한다.
var db = new EEEntities();
var dr = db.Component_Reel_Result.Where(t => t.PDATE == ym && t.PDATE.StartsWith("0R")).OrderByDescending(t => t.RSN).FirstOrDefault();
if (dr == null) return "0R01"; //처음쓰는 자료인다.
var curSN = dr.RSN;
return GetNextSNbySN_Dup(curSN);
}
/// <summary>
/// 입력한 시리얼 번호 이후의 번호를 생성합니다(0000~ZZZZ) 까지의 데이터를 가지며 2번쨰짜리까지는 R을 사용하지 못한다
/// </summary>
/// <param name="sn">기준 시리얼번호 4자리</param>
/// <param name="removeR"></param>
/// <returns></returns>
public static string GetNextSNbySN(string sn)
{
//서버에서 자료를 조회해서 처리한다.
string curSN = sn;
if (sn.Length != 4) throw new Exception("s/n length 4");
var buffer = curSN.ToCharArray();
for (int i = buffer.Length; i > 0; i--)
{
if (i <= 2)
if (buffer[i - 1] == 'Q') buffer[i - 1] = 'R';
if (buffer[i - 1] == '9') { buffer[i - 1] = 'A'; break; }
else if (buffer[i - 1] == 'Z') buffer[i - 1] = '0';
else { buffer[i - 1] = (char)((byte)buffer[i - 1] + 1); break; }
}
return string.Join("", buffer);
}
/// <summary>
/// 리턴릴의 다음 번호 생성 R로시작하며 000~ZZZ 영역을 가진다(제외문자 없음)
/// </summary>
/// <param name="sn"></param>
/// <returns></returns>
public static string GetNextSNbySN_Return(string sn)
{
//서버에서 자료를 조회해서 처리한다.
string curSN = sn;
if (sn.Length != 4) throw new Exception("s/n length 4");
var buffer = curSN.ToCharArray();
for (int i = buffer.Length; i > 1; i--)
{
//if (i <= 2) //1,2번 영역에는 R값이 들어가면 안된다.
//{
// if (buffer[i - 1] == 'Q') buffer[i - 1] = 'R';
//}
if (buffer[i - 1] == '9') { buffer[i - 1] = 'A'; break; }
else if (buffer[i - 1] == 'Z') buffer[i - 1] = '0';
else { buffer[i - 1] = (char)((byte)buffer[i - 1] + 1); break; }
}
buffer[0] = 'R';
return string.Join("", buffer);
}
/// <summary>
/// 중복릴의 다음 번호 생성(0R로 시작하며 00~ZZ의 영역을 가진다)
/// </summary>
/// <param name="sn"></param>
/// <returns></returns>
public static string GetNextSNbySN_Dup(string sn)
{
//서버에서 자료를 조회해서 처리한다.
string curSN = sn;
if (sn.Length != 4) throw new Exception("s/n length 4");
var buffer = curSN.ToCharArray();
for (int i = buffer.Length; i > 2; i--)
{
//if (i <= 2) //1,2번 영역에는 R값이 들어가면 안된다.
//{
// if (buffer[i - 1] == 'Q') buffer[i - 1] = 'R';
//}
if (buffer[i - 1] == '9') { buffer[i - 1] = 'A'; break; }
else if (buffer[i - 1] == 'Z') buffer[i - 1] = '0';
else { buffer[i - 1] = (char)((byte)buffer[i - 1] + 1); break; }
}
buffer[0] = '0';
buffer[1] = 'R';
return string.Join("", buffer);
}
}
}

View File

@@ -0,0 +1,168 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
namespace Project.Class
{
public class CHistoryJOB : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
List<JobData> _items;
public CHistoryJOB()
{
_items = new List<JobData>();
}
public void Clear()
{
lock (_items)
{
_items.Clear();
}
OnPropertyChanged("Clear");
}
public int Count
{
get
{
lock (_items)
{
return _items.Count;
}
}
}
public void SetItems(List<JobData> value)
{
lock (_items)
{
this._items = value;
}
OnPropertyChanged("REFRESH");
}
public List<JobData> Items { get { return _items; } }
public void Add(JobData data)
{
lock (_items)
{
data.No = this._items.Count + 1;
_items.Add(data);
}
OnPropertyChanged("Add:" + data.guid);
}
public void Remove(JobData data)
{
lock (_items)
{
_items.Remove(data);
}
OnPropertyChanged("Remove:" + data.guid);
}
public void Remove(string guid)
{
lock (_items)
{
var data = Get(guid);
_items.Remove(data);
}
OnPropertyChanged("Remove:" + guid);
}
public JobData Get(string guid)
{
lock (_items)
{
return _items.Where(t => t.guid == guid).FirstOrDefault();
}
}
public void Set(JobData data)
{
var item = Get(data.guid);
if (item == null) throw new Exception("No data guid:" + data.guid.ToString());
else
{
//item.No = data.No;
//item.JobStart = data.JobStart;
//item.JobEnd = data.JobEnd;
//item.VisionData = data.VisionData;
//item.error = data.error;
//item.Message = data.Message;
OnPropertyChanged("Set:" + data.guid);
}
}
public void RaiseSetEvent(string guid)
{
OnPropertyChanged("Set:" + guid);
}
protected void OnPropertyChanged([CallerMemberName] string name = null)
{
if (PropertyChanged != null)
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(name));
}
}
//[Serializable]
//public class JobData
//{
// //고유식별자
// public string guid { get; private set; }
// //비젼처리값
// public Class.VisionData VisionData { get; set; }
// //언로더포트(L/R)
// public string PortPos { get; set; }
// //프린트위치(U/LO)
// public string PrintPos { get; set; }
// //작업시작시간
// public DateTime JobStart { get; set; }
// //작업종료시간
// public DateTime JobEnd { get; set; }
// /// <summary>
// /// 이전 출고되는 시점과의 시간차 값
// /// </summary>
// public double TackTime { get { return (JobEnd - JobStart).TotalSeconds; } }
// //작업순서
// public int No { get; set; }
// //오류상태
// public eJobResult error { get; set; }
// //메세지
// public string message { get; set; }
// public TimeSpan JobRun
// {
// get
// {
// if (JobEnd.Year == 1982) return new TimeSpan(0);
// else return this.JobEnd - this.JobStart;
// }
// }
// public JobData()
// {
// this.No = 0;
// PortPos = string.Empty;
// PrintPos = string.Empty;
// guid = Guid.NewGuid().ToString();
// VisionData = new VisionData();
// this.JobStart = new DateTime(1982, 11, 23); // DateTime.Parse("1982-11-23");
// this.JobEnd = new DateTime(1982, 11, 23); // DateTime.Parse("1982-11-23");
// error = eJobResult.None;
// message = string.Empty;
// }
//}
}

View File

@@ -0,0 +1,134 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
namespace Project.Class
{
public class CHistorySIDRef : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public Boolean JobSIDRecvError
{
get
{
//아이템이있어야 정상이다
if (_items == null || _items.Count < 1) return true;
else if (JobSIDRecvTime.Year == 1982) return true;
else return false;
}
}
public DateTime JobSIDRecvTime { get; set; }
public string JobSIDRecvMessage { get; set; }
List<SIDDataRef> _items;
public CHistorySIDRef()
{
Clear();
}
public void SetItems(List<SIDDataRef> value)
{
this._items = value;
OnPropertyChanged("REFRESH");
}
public List<SIDDataRef> Items { get { return _items; } }
public int Count
{
get
{
return _items.Count;
}
}
public SIDDataRef Get(string sid_)
{
return _items.Where(t => t.sid == sid_).FirstOrDefault();
}
public void Set(SIDDataRef data)
{
var item = Get(data.sid);
if (item == null) throw new Exception("No data sid:" + data.sid.ToString());
else
{
item.kpc = data.kpc;
item.unit = data.unit;
OnPropertyChanged("Set:" + data.sid);
}
}
public void Set(string sid, int kpc, string unit)
{
var item = Get(sid);
if (item == null)
{
Add(sid, kpc, unit); //없다면 추가해준다
}
else
{
item.kpc = kpc;
item.unit = unit;
OnPropertyChanged("Set:" + sid);
}
}
public void Add(SIDDataRef data)
{
_items.Add(data);
OnPropertyChanged("Add:" + data.sid);
}
public void Add(string sid, int kpc_, string unit)
{
if (string.IsNullOrEmpty(sid))
{
PUB.log.AddAT("SID 추가 실패 SID 값이 입력되지 않았습니다");
return;
}
//if (JobSidList.ContainsKey(sid) == false)
_items.Add(new SIDDataRef(sid, kpc_, unit));
OnPropertyChanged("Add:" + sid);
//else
//{
//이미 데이터가 있다. 중복이므로 누적한다
//JobSidList.TryGetValue()
//}
}
public void Clear()
{
//JobSIDRecvError = false;
JobSIDRecvMessage = string.Empty;
JobSIDRecvTime = DateTime.Parse("1982-11-23");
if (this._items == null) this._items = new List<SIDDataRef>();
else this._items.Clear();
OnPropertyChanged("Clear");
}
protected void OnPropertyChanged([CallerMemberName] string name = null)
{
if (PropertyChanged != null)
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(name));
}
}
[Serializable]
public class SIDDataRef
{
public string guid { get; set; }
public string sid { get; set; }
public string unit { get; set; }
public int kpc { get; set; }
public SIDDataRef(string sid_, int kpc_, string unit_)
{
guid = Guid.NewGuid().ToString();
sid = sid_;
unit = unit_;
kpc = kpc_;
}
public SIDDataRef() : this(string.Empty, 0, string.Empty) { }
}
}

View File

@@ -0,0 +1,549 @@
using AR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Project
{
public class CResult
{
public enum eInspectResult
{
NG = 0,
OK,
ERROR,
NOTSET = 9,
}
public UInt64 OptionValue = 0;
public UInt64 OptionValueData = 0;
public List<Class.RegexPattern> BCDPattern;
public List<Class.RegexPattern> BCDIgnorePattern;
public List<Class.RegexPattern> BCDPrintPattern;
public DateTime ResetButtonDownTime = DateTime.Now;
public Boolean ClearAllSID = false;
public Class.CHistorySIDRef SIDReference; //SIDLIST받은 내역
public List<UIControl.CItem> OUTHistory; //출고포트 처리내역
public DataSet1.SIDHistoryDataTable SIDHistory; //sID별 rid 전체 목록 차수별로만 저장된다
public DataSet1.Component_Reel_SID_ConvertDataTable DTSidConvert;
public List<string> DTSidConvertEmptyList;
public List<string> DTSidConvertMultiList;
public DSList dsList;
public ModelInfoM mModel; //모션 모델
public ModelInfoV vModel; //작업 모델
/// <summary>
/// 아이템의 정보가 담겨있다 (0:왼쪽,1:비젼,2:오른쪽)
/// </summary>
public Class.JobData ItemDataL = new Class.JobData(0);
public Class.JobData ItemDataC = new Class.JobData(1);
public Class.JobData ItemDataR = new Class.JobData(2);
public Guid guid = new Guid();
public string JobType2 = string.Empty;
public Boolean JobFirst
{
get
{
return VAR.I32[(int)eVarInt32.PickOnCount] == 0;
}
}
public Boolean DryRun
{
get
{
if (string.IsNullOrEmpty(JobType2)) return false;
else return JobType2.ToUpper() == "DRY";
}
}
public int OverLoadCountF { get; set; }
public int OverLoadCountR { get; set; }
public UIControl.CItem UnloaderItem = null;
public DateTime LastExtInputTime = DateTime.Parse("1982-11-23");
public DateTime LastOutTime = DateTime.Parse("1982-11-23");
public Single[] PortAlignWaitSec = new float[] { 0, 0, 0, 0 };
public long[] PortAlignTime = new long[] { 0, 0, 0, 0 };
public byte UnloaderSeq = 0;
public DateTime UnloaderSeqTime;
public DateTime UnloaderSendtime = DateTime.Parse("1982-11-23");
/// <summary>
/// 로딩에 사용하는 포트번호 (자동 판단됨)
/// </summary>
public int LoadPortIndex = -1;
/// <summary>
/// 로딩시에 사용한 포트의 번호(이 값으로 수량기록 위치를 결정)
/// </summary>
public int LoadPickIndex = -1;
/// <summary>
/// 최종 할당된 언로딩 포트번호(1~8)
/// </summary>
public int UnloadPortNo = -1;
public byte LiveViewseq = 0;
public string AcceptBcd = string.Empty;
public DateTime AcceptBcdTime = DateTime.Now;
public string AcceptSid = string.Empty;
//작업정보
public eInspectResult Result; //작업결과가 저장됨
public eResult ResultCode;
public eECode ResultErrorCode;
public string ResultMessage;
public string LastSIDFrom = string.Empty;//101 = string.Empty;
public string LastSIDTo = string.Empty; // 103 = string.Empty;
//public string LastSID103_2 = string.Empty;
public string LastVName = string.Empty;
public int LastSIDCnt = 0;
public Dictionary<string, string> PrintPostionList = null;
//작업정보(시간)
public DateTime JobStartTime = DateTime.Parse("1982-11-23");
public DateTime JobEndTime = DateTime.Parse("1982-11-23");
public TimeSpan JobRunTime()
{
if (JobStartTime.Year == 1982) return new TimeSpan(0);
if (JobEndTime.Year == 1982) return DateTime.Now - JobStartTime;
else return JobEndTime - JobStartTime;
}
/// <summary>
/// RUN -> Pause(Wait Start)모드 전환시 저장할 모터의 위치값
/// 조그모드등으로 좌표를 옴길때의 기준 좌표
/// 이 좌표값에서 현재 모션값에 변화가 있으면 프로그램에서는 오류로 처리하게 됨
/// </summary>
public double[] PreventMotionPosition = new double[8];
#region "SetResultMessage"
public void SetResultMessage(eResult code, eECode err, eNextStep systempause, params object[] args)
{
var rltMsg = PUB.GetResultCodeMessage(code);
var codeMSg = $"[E{(int)err}] ";// + Util.GetResultCodeMessage(code);
if (err == eECode.MESSAGE_ERROR)
{
codeMSg = $"[{rltMsg} ERROR MESSAGE]\n";
}
else if (err == eECode.MESSAGE_INFO)
{
codeMSg = $"[{rltMsg} INFORMATION]\n";
}
var erMsg = PUB.GetErrorMessage(err, args);
var msg = codeMSg + erMsg;
this.ResultCode = code;
this.ResultErrorCode = err;
this.ResultMessage = msg;
if (systempause == eNextStep.PAUSENOMESAGE) this.ResultMessage = string.Empty; //210129
PUB.log.AddE(msg);
if (systempause == eNextStep.PAUSE) PUB.sm.SetNewStep(eSMStep.PAUSE);
else if (systempause == eNextStep.PAUSENOMESAGE) PUB.sm.SetNewStep(eSMStep.PAUSE);
else if (systempause == eNextStep.ERROR) PUB.sm.SetNewStep(eSMStep.ERROR);
}
public void SetResultTimeOutMessage(eDOName pinName, Boolean checkState, eNextStep systemPause)
{
var pindef = DIO.Pin[pinName];
if (checkState) SetResultMessage(eResult.SENSOR, eECode.DOON, systemPause, pindef.terminalno, pindef.name);
else SetResultMessage(eResult.SENSOR, eECode.DOOFF, systemPause, pindef.terminalno, pindef.name);
}
public void SetResultTimeOutMessage(eDIName pinName, Boolean checkState, eNextStep systemPause)
{
var pindef = DIO.Pin[pinName];
if (checkState) SetResultMessage(eResult.SENSOR, eECode.DION, systemPause, pindef.terminalno, pindef.name);
else SetResultMessage(eResult.SENSOR, eECode.DIOFF, systemPause, pindef.terminalno, pindef.name);
}
public void SetResultTimeOutMessage(eAxis motAxis, eECode ecode, eNextStep systemPause, string source, double targetpos, string message)
{
SetResultMessage(eResult.TIMEOUT, ecode, systemPause, motAxis, source, targetpos, message);
}
public void SetResultTimeOutMessage(eECode ecode, eNextStep systemPause, params object[] args)
{
SetResultMessage(eResult.TIMEOUT, ecode, systemPause, args);
}
#endregion
public DateTime[] diCheckTime = new DateTime[256];
public DateTime[] doCheckTime = new DateTime[256];
public Boolean isError { get; set; }
// public Boolean isMarkingMode { get; set; }
public int retry = 0;
public DateTime retryTime;
public DateTime[] WaitForVar = new DateTime[255];
public int JoystickAxisGroup = 0;
public int ABCount = 0;
public CResult()
{
mModel = new ModelInfoM();
vModel = new ModelInfoV();
SIDReference = new Class.CHistorySIDRef();
SIDHistory = new DataSet1.SIDHistoryDataTable();
BCDPattern = new List<Class.RegexPattern>();
BCDPrintPattern = new List<Class.RegexPattern>();
OUTHistory = new List<UIControl.CItem>();
this.Clear("Result ctor");
dsList = new DSList();
LoadListDB();
//230509
if(DTSidConvert != null) DTSidConvert.Dispose();
DTSidConvert = new DataSet1.Component_Reel_SID_ConvertDataTable();
DTSidConvertEmptyList = new List<string>();
DTSidConvertMultiList = new List<string>();
}
public void SaveListDB()
{
var finame = System.IO.Path.Combine(UTIL.CurrentPath, "Data", "SavaedList.xml");
var fi = new System.IO.FileInfo(finame);
if (fi.Directory.Exists == false) fi.Directory.Create();
this.dsList.WriteXml(fi.FullName);
PUB.log.Add("사전목록DB를 저장 했습니다" + fi.FullName);
}
public void LoadListDB()
{
var finame = System.IO.Path.Combine(UTIL.CurrentPath, "Data", "SavaedList.xml");
var fi = new System.IO.FileInfo(finame);
if (fi.Directory.Exists == false) fi.Directory.Create();
if (fi.Exists)
{
this.dsList.ReadXml(fi.FullName);
PUB.log.Add("사전목록DB를 불러왔습니다" + fi.FullName);
}
}
///// <summary>
///// 입력한 sid 가 원본에 존재하지 않으면 -1을 존재하면 입력된 수량을 반환합니다
///// </summary>
///// <param name="sid"></param>
///// <returns></returns>
//public int ExistSIDReferenceCheck(string sid)
//{
// var dr = PUB.Result.SIDReference.Items.Where(t => t.sid.EndsWith(sid)).FirstOrDefault();
// if (dr == null) return -1;
// else return dr.kpc;
//}
//public void ClearHistory()
//{
// //this.JObHistory.Clear();
// this.SIDReference.Clear();
// PUB.log.AddI("Clear History");
//}
public void ClearOutPort()
{
OUTHistory.Clear();
}
public void Clear(string Reason)
{
this.guid = Guid.NewGuid();
//프린트위치를 별도로 저장하고 있는다(나중에 추가 활용한다) 231005
if (PrintPostionList == null)
PrintPostionList = new Dictionary<string, string>();
else
PrintPostionList.Clear();
ItemDataL.Clear(Reason);
ItemDataC.Clear(Reason);
ItemDataR.Clear(Reason);
OverLoadCountF = 0;
OverLoadCountR = 0;
ClearOutPort();
LoadPortIndex = -1;
if (PUB.sm != null)
PUB.sm.seq.ClearTime();
isError = false;
ABCount = 0;
///기다림용 변수모듬
for (int i = 0; i < WaitForVar.Length; i++)
WaitForVar[i] = DateTime.Parse("1982-11-23");
//조그모드시 모션이동 감지용 저장 변수
for (int i = 0; i < 6; i++)
PreventMotionPosition[i] = 0.0;
//JobStartTime = DateTime.Parse("1982-11-23");
//JobEndTime = DateTime.Parse("1982-11-23");
//LastOutTime = DateTime.Parse("1982-11-23");
Result = eInspectResult.NOTSET;
ResultCode = eResult.NOERROR;
ResultMessage = string.Empty;
//시간정보값을 초기화함
for (int i = 0; i < 2; i++)
ClearTime(i);
PUB.log.Add("Result 데이터 초기화");
}
public void ClearTime(int shutIdx)
{
//JobStartTime = DateTime.Parse("1982-11-23");
//JobEndTime = DateTime.Parse("1982-11-23");
Result = eInspectResult.NOTSET;
ResultCode = eResult.NOERROR;
ResultMessage = string.Empty;
PUB.log.Add("Result(Clear Time)");
}
public Boolean isSetmModel
{
get
{
if (PUB.Result.mModel == null || PUB.Result.mModel.idx == -1 || PUB.Result.mModel.Title.isEmpty())
return false;
else return true;
}
}
public Boolean isSetvModel
{
get
{
if (PUB.Result.vModel == null || PUB.Result.vModel.idx == -1 || PUB.Result.vModel.Title.isEmpty())
return false;
else return true;
}
}
//public string getErrorMessage(eResult rlt, eECode err, params object[] args)
//{
// switch (err)
// {
// case eECode.RIDDUPL:
// return string.Format(
// "좌측 언로더에 사용되었던 REEL ID 입니다\n" +
// "바코드 오류 가능성이 있습니다\n" +
// "좌측 릴의 바코드를 확인하시기 바랍니다\n" +
// "작업을 계속할 수 없습니다. 취소 후 다시 시도하세요\n{0}", args);
// case eECode.RIDDUPR:
// return string.Format(
// "우측 언로더에 사용되었던 REEL ID 입니다\n" +
// "바코드 오류 가능성이 있습니다\n" +
// "우측 릴의 바코드를 확인하시기 바랍니다\n" +
// "작업을 계속할 수 없습니다. 취소 후 다시 시도하세요\n{0}", args);
// case eECode.BARCODEVALIDERR:
// return string.Format("바코드 데이터 검증 실패\n" +
// "인쇄전 데이터와 인쇄후 데이터가 일치하지 않습니다\n" +
// "ID(O) : {1}\n" +
// "ID(N) : {2}\n" +
// "SID : {5}->{6}\n" +
// "QTY : {3}->{4}\n" +
// "DATE : {7}->{8}\n" +
// "Index : {0}", args);
// case eECode.MOTX_SAFETY:
// return string.Format("PICKER-X 축이 안전위치에 없습니다\n1. 조그를 이용하여 중앙으로 이동 합니다\n2.홈 작업을 다시 실행합니다", args);
// case eECode.NOERROR:
// return string.Format("오류가 없습니다", args);
// case eECode.PORTOVERLOAD:
// return string.Format("PORT OVERLOAD\n위치 : {0}\n" +
// "너무 많은 양이 적재 되었습니다\n" + "상단 LIMIT 센서에 걸리지 않게 적재하세요", args);
// case eECode.EMERGENCY:
// return string.Format("비상정지 버튼을 확인하세요\n" +
// "버튼 : F{0}\n" +
// "메인전원이 OFF 된 경우에도 이 메세지가 표시 됩니다\n" +
// "메인전원은 모니터 하단 AIR버튼 좌측에 있습니다"
// , DIO.GetIOInput(eDIName.BUT_EMGF));
// case eECode.NOMODELM:
// return "모션모델이 선택되지 않았습니다\n" +
// "상단 메뉴 [모션모델]에서 사용할 모델을 선택하세요";
// case eECode.NOMODELV:
// return "작업모델이 선택되지 않았습니다\n" +
// "상단 메뉴 [작업모델]에서 사용할 모델을 선택하세요";
// case eECode.CARTERROR:
// return string.Format("언로더 카트가 없거나 크기 정보가 일치하지 않습니다\n좌측:{0}, 로더:{1}, 우측:{2}", args);
// case eECode.CARTL:
// return string.Format("왼쪽(UNLOAD) 포트에 카트가 감지되지 않습니다\n카트를 장착하세요\n카트크기 : {0}, 릴크기:{1}", args);
// case eECode.CARTC:
// return string.Format("중앙(LOAD) 포트에 카트가 감지되지 않습니다\n카트를 장착하세요\n카트크기 : {0}, 릴크기:{1}", args);
// case eECode.CARTR:
// return string.Format("오른쪽(UNLOAD) 포트에 카트가 감지되지 않습니다\n카트를 장착하세요\n카트크기 : {0}, 릴크기:{1}", args);
// case eECode.CARTLMATCH:
// return string.Format("왼쪽(UNLOAD) 카트와 피커의 릴 크기가 일치하지 않습니다\n카트크기를 확인 하세요\n카트크기 : {0}, 릴크기:{1}", args);
// case eECode.CARTCMATCH:
// return string.Format("중앙(LOAD) 카트와 피커의 릴 크기가 일치하지 않습니다\n카트크기를 확인 하세요\n카트크기 : {0}, 릴크기:{1}", args);
// case eECode.CARTRMATCH:
// return string.Format("오른쪽(UNLOAD) 카트와 피커의 릴 크기가 일치하지 않습니다\n카트크기를 확인 하세요\n카트크기 : {0}, 릴크기:{1}", args);
// case eECode.NOREELSIZE:
// return string.Format("왼쪽포트에 놓을 릴의 크기정보가 없습니다\n프로그램 오류입니다\n개발자에게 해당 메세지를 전달하세요\n" +
// "장치 초기화를 진행 한 후 다시 시도하세요");
// case eECode.VISION_NOCONN:
// return string.Format("카메라({0}) 연결 안됨", args);
// case eECode.INCOMPLETE_LOADERDATA:
// return string.Format("로더 바코드 필수값을 읽지 못했습니다", args);
// case eECode.CAM_NOBARCODEU:
// return string.Format("언로더({0}) 바코드를 읽지 못했습니다", args);
// case eECode.HOME_TIMEOUT:
// return string.Format("홈 진행이 완료되지 않고 있습니다\n" +
// "오류가 발생했다면 '홈' 작업을 다시 진행하세요\n" +
// "대기시간 : {0}초", args);
// case eECode.DOORSAFTY:
// return string.Format("포트 안전센서가 감지 되었습니다\n" +
// "안전센서를 확인한 후 다시 시도하세요\n", args);
// case eECode.AIRNOOUT:
// return "AIR 공급이 차단 되어 있습니다.\n" +
// "전면의 AIR 버튼을 누르세요\n" +
// "공급이 되지 않으면 메인 전원 을 확인하세요\n" +
// "메인 전원은 AIR 버튼 좌측에 있습니다" +
// "메인 전원 공급 실패시 장비 후면의 차단기를 확인하세요";
// case eECode.DOOFF:
// var pinoOf = (eDOName)args[0];
// return string.Format("출력이 OFF 되지 않았습니다.\n" +
// "포트설명 : {0}\n" +
// "포트번호 : {1} ({2})", DIO.getPinDescription(pinoOf), (int)pinoOf, Enum.GetName(typeof(eDOPin), pinoOf));
// case eECode.DOON:
// var pinoOn = (eDOName)args[0];
// return string.Format("출력이 ON 되지 않았습니다.\n" +
// "포트설명 : {0}\n" +
// "포트번호 : {1} ({2})", DIO.getPinDescription(pinoOn), (int)pinoOn, Enum.GetName(typeof(eDOPin), pinoOn));
// case eECode.DIOFF:
// var piniOf = (eDIName)args[0];
// return string.Format("입력이 OFF 되지 않았습니다.\n" +
// "포트설명 : {0}\n" +
// "포트번호 : {1} ({2})", DIO.getPinDescription(piniOf), (int)piniOf, Enum.GetName(typeof(eDIPin), piniOf));
// case eECode.DION:
// var piniOn = (eDIName)args[0];
// return string.Format("입력이 ON 되지 않았습니다.\n" +
// "포트설명 : {0}\n" +
// "포트번호 : {1} ({2})", DIO.getPinDescription(piniOn), (int)piniOn, Enum.GetName(typeof(eDIPin), piniOn));
// case eECode.AZJINIT:
// return string.Format("DIO 혹은 모션카드가 초기화 되지 않았습니다.\n" +
// "DIO : {0}\n" +
// "MOTION : {1}\n" +
// "해당 카드는 본체 내부 PCI 슬롯에 장착 된 장비 입니다\n" +
// "EzConfig AXT 프로그램으로 카드 상태를 확인하세요",
// PUB.dio.IsInit, PUB.mot.IsInit);
// case eECode.MOT_HSET:
// var msg = "모션의 HOME 검색이 완료되지 않았습니다";
// for (int i = 0; i < 6; i++)
// {
// if (PUB.mot.IsUse(i) == false) continue;
// var axis = (eAxis)i;
// var stat = PUB.mot.IsHomeSet(i);
// if (stat == false) msg += string.Format("\n[{0}] {1} : {2}", i, axis, stat);
// }
// msg += "\n장치 초기화를 실행하세요";
// return msg;
// case eECode.MOT_SVOFF:
// var msgsv = "모션 중 SERVO-OFF 된 축이 있습니다";
// for (int i = 0; i < 6; i++)
// {
// if (PUB.mot.IsUse(i) == false) continue;
// var axis = (eAxis)i;
// var stat = PUB.mot.IsServOn(i);
// if (stat == false) msgsv += string.Format("\n[{0}] {1} : {2}", i, axis, stat);
// }
// msgsv += "\nRESET을 누른 후 '모션설정' 화면에서 확인합니다";
// return msgsv;
// case eECode.MOT_HSEARCH:
// return string.Format("모션의 홈 검색이 실패되었습니다\n" +
// "축 : {0}\n" +
// "메세지 : {1}", args);
// case eECode.MOT_CMD:
// var axisNo = (int)((eAxis)args[0]);
// var axisSrc = args[1].ToString();
// return string.Format("모션축 명령이 실패 되었습니다\n축 : {0}\n" +
// "현재위치 : {2}\n" +
// "명령위치 : {3}\n" +
// "소스 : {1}", axisNo, axisSrc, PUB.mot.GetActPos(axisNo), PUB.mot.GetActPos(axisNo));
// //case eECode.timeout_step:
// // return string.Format("스텝당 최대 실행 시간이 초과 되었습니다.\n" +
// // "스텝 : {0}\n" +
// // "최대동작시간 : " + COMM.SETTING.Data.Timeout_StepMaxTime.ToString(), args);
// case eECode.USER_STOP:
// return "'일시정지' 버튼 눌림\n" +
// "사용자에 의해 작동이 중지 되었습니다\n" +
// "'RESET' -> 'START'로 작업을 계속할 수 있습니다";
// case eECode.CAM_RIGHT:
// return "우측카메라가 사용가능한 상태가 아닙니다.\n" +
// "신규 실행시에는 초기화 완료까지 기다려 주세요";
// case eECode.CAM_LEFT:
// return "좌측카메라가 사용가능한 상태가 아닙니다.\n" +
// "신규 실행시에는 초기화 완료까지 기다려 주세요";
// default:
// return err.ToString();
// }
//}
//public string getResultCodeMessage(eResult rltCode)
//{
// //별도 메세지처리없이 그대로 노출한다
// return rltCode.ToString().ToUpper();
//}
}
}

View File

@@ -0,0 +1,459 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AR;
namespace Project.Commands
{
public class CommandBuffer
{
public int Idx { get; set; }
private int REGISTER_VALUE = 0;
private Boolean REGISTER_TRUE = false;
private Boolean REGISTER_FALSE = false;
private Boolean REGISTER_EQUAL = false;
private Boolean REGISTER_ABOVE = false;
private Boolean REGISTER_BELOW = false;
/// <summary>
/// 순차실행명령
/// </summary>
public List<Command> Commands;
/// <summary>
/// 상시실행명령
/// </summary>
public List<Command> SPS;
public CommandBuffer()
{
Commands = new List<Command>();
SPS = new List<Command>();
}
public void AddSeq(Command cmd)
{
cmd.Idx = this.Commands.Count;
this.Commands.Add(cmd);
}
public void AddSPS(Command cmd)
{
cmd.Idx = this.SPS.Count;
this.SPS.Add(cmd);
}
public void Clear()
{
Commands.Clear();
SPS.Clear();
Idx = 0;
}
public StepResult Run()
{
//sps는 모두 실행한다
StepResult rlt;
foreach (var sps in this.SPS)
{
rlt = RunCode(sps);
if (rlt == StepResult.Wait) return StepResult.Wait; //SPS에서 대기 코드가 있다
else if (rlt == StepResult.Error) return StepResult.Error;
}
//sequece 는 현재 것만 실행한다.
if (Idx < 0) Idx = 0;
var cmd = this.Commands[Idx];
rlt = RunCode(cmd);
if (rlt == StepResult.Complete) //이 명령이 완료되면 다음으로 진행한다
{
Idx += 1;
if (Idx >= this.Commands.Count) return StepResult.Complete;
else return StepResult.Wait;
}
return rlt;
}
private StepResult RunCode(Command cmd)
{
switch (cmd.type)
{
case CType.NOP: return StepResult.Complete;
case CType.Wait:
var data0 = cmd.Data as CDWait;
if (data0.Trigger == false)
{
//아직 시작을 안했으니 시작시키고 대기한다
data0.SetTrigger(true);
return StepResult.Wait;
}
else
{
//아직 시간을 다 쓰지 않았다면 넘어간다
if (data0.TimeOver == false) return StepResult.Wait;
}
break;
case CType.Output:
var data1 = cmd.Data as CDOutput;
if (data1.PinIndex < 0) return StepResult.Error;
if (DIO.SetOutput((eDOName)data1.Pin, data1.Value) == false) return StepResult.Error;
break;
case CType.Move:
var data2 = cmd.Data as CDMove;
MOT.Move((eAxis)data2.Axis, data2.Position, data2.Speed, data2.Acc, data2.Relative);
break;
case CType.MoveForece:
var data3 = cmd.Data as CDMove;
MOT.Move((eAxis)data3.Axis, data3.Position, data3.Speed, data3.Acc, data3.Relative, false, false);
break;
case CType.MoveWait:
var data4 = cmd.Data as CDMove;
var axis = (eAxis)data4.Axis;
var mrlt = MOT.CheckMotionPos(axis, new TimeSpan(1), data4.Position, data4.Speed, data4.Acc, data4.Dcc, cmd.description);
if (mrlt == false) return StepResult.Wait;
break;
case CType.GetFlag:
var data5 = cmd.Data as CDFlag;
data5.Value = PUB.flag.get(data5.Flag);
REGISTER_FALSE = data5.Value == false;
REGISTER_TRUE = data5.Value == true;
break;
case CType.SetFlag:
var data6 = cmd.Data as CDFlag;
PUB.flag.set(data6.Flag, data6.Value, cmd.description);
break;
case CType.True:
var data7 = cmd.Data as CDCommand;
if (REGISTER_TRUE) return RunCode(data7.Command);
break;
case CType.False:
var data8 = cmd.Data as CDCommand;
if (REGISTER_FALSE) return RunCode(data8.Command);
break;
case CType.GetVar: //공용변수의값
var data10 = cmd.Data as CDGetVar;
if (data10.Key == "STEPTIME")
{
data10.Confirm = true;
data10.Value = (int)PUB.sm.StepRunTime.TotalMilliseconds;
}
break;
case CType.GetSetVar: //공용변수(설정)의 값
var data11 = cmd.Data as CDGetVar;
if (data11.Key == "TIMEOUT_HOMEFULL")
{
data11.Confirm = true;
data11.Value = 60;// (int)Pub.sm.StepRunTime.TotalMilliseconds;
}
break;
case CType.Compare:
var data9 = cmd.Data as CDCompare<int>;
if (data9 != null)
{
RunCode(data9.Source); //비교값(좌)
RunCode(data9.Target); //비교값(우)
var valS = data9.Source.Data as ICommandValue;
var valT = data9.Target.Data as ICommandValue;
int ValueS = (int)valS.Value;
int ValueT = (int)valT.Value;
REGISTER_ABOVE = ValueS > ValueT;
REGISTER_BELOW = ValueS < ValueT;
REGISTER_EQUAL = ValueS == ValueT;
REGISTER_TRUE = ValueS == ValueT;
REGISTER_FALSE = ValueS != ValueT;
REGISTER_VALUE = ValueS - ValueT;
}
else return StepResult.Error;
break;
case CType.SetError:
var data12 = cmd.Data as CDError;
PUB.Result.SetResultMessage(data12.ResultCode, data12.ErrorCode, data12.NextStep);
break;
}
return StepResult.Complete;
}
}
public enum CType
{
NOP = 0,
/// <summary>
/// motion move
/// </summary>
Move,
MoveForece,
/// <summary>
/// move and wait
/// </summary>
MoveWait,
/// <summary>
/// set digital output
/// </summary>
Output,
Log,
StepChange,
/// <summary>
/// check digital input
/// </summary>
InputCheck,
/// <summary>
/// check digital output
/// </summary>
OutputCheck,
GetFlag,
SetFlag,
Equal,
NotEqual,
True,
False,
Zero,
NonZero,
SetError,
Compare,
SetVar,
GetVar,
GetSetVar,
Above,
Below,
Wait,
Run,
}
public class Command
{
public CType type { get; set; } = CType.NOP;
public int Idx { get; set; }
public string description { get; set; }
public ICommandData Data { get; set; }
public Command(CType type, string desc = "")
{
this.type = type;
this.description = desc;
}
}
public interface ICommandData
{
// string Description { get; set; }
}
public interface ICommandValue
{
object Value { get; set; }
}
public class CDGetVar : ICommandData, ICommandValue
{
public string Key { get; set; }
public object Value { get; set; }
public Boolean Confirm { get; set; }
public CDGetVar(string key)
{
this.Key = key;
}
}
public class CDGetSetVar : ICommandData, ICommandValue
{
public string Key { get; set; }
public object Value { get; set; }
public Boolean Confirm { get; set; }
public CDGetSetVar(string key)
{
this.Key = key;
}
}
public class CDSetVar : ICommandData
{
public string Key { get; set; }
public int Value { get; set; }
public CDSetVar(string key, int value)
{
this.Key = key;
this.Value = Value;
}
}
public class CDFlag : ICommandData
{
public eVarBool Flag { get; set; }
public Boolean Value { get; set; }
public CDFlag(eVarBool flag)
{
this.Flag = flag;
Value = false;
}
}
public class CDSetValI : ICommandData
{
public int Value { get; set; }
public CDSetValI(int idx, int value)
{
this.Value = value;
}
}
public class CDSetValB : ICommandData
{
public bool Value { get; set; }
public CDSetValB(int idx, bool value)
{
this.Value = value;
}
}
public class CDCommand : ICommandData
{
public Command Command { get; set; }
public CDCommand(Command command)
{
this.Command = command;
}
}
public class CDError : ICommandData
{
public eResult ResultCode { get; set; }
public eECode ErrorCode { get; set; }
public eNextStep NextStep { get; set; }
public CDError(eResult resultCode, eECode errorCode, eNextStep nextStep)
{
ResultCode = resultCode;
ErrorCode = errorCode;
NextStep = nextStep;
}
}
//public class CDCompare<T> : ICommandData
//{
// public T Value { get; set; }
// public CDCompare(T value)
// {
// Value = value;
// }
// public CDCompare(Command source, Command target)
// {
// Value = value;
// }
//}
public class CDCompare<T> : ICommandData
{
public Command Source { get; set; }
public Command Target { get; set; }
public CDCompare(Command source, Command target)
{
Source = source;
Target = target;
}
}
public class CDWait : ICommandData
{
public int WaitMS { get; set; }
public DateTime StartTime { get; set; }
public Boolean Trigger { get; set; }
private TimeSpan GetTime { get { return DateTime.Now - StartTime; } }
public Boolean TimeOver { get { return GetTime.TotalMilliseconds > WaitMS; } }
public void SetTrigger(Boolean value)
{
Trigger = value;
StartTime = DateTime.Now;
}
public CDWait() : this(100) { }
public CDWait(int ms)
{
this.WaitMS = ms;
}
}
public class CDMove : ICommandData
{
public int Axis { get; set; }
public double Position { get; set; }
public double Speed { get; set; }
public double Acc { get; set; }
public double Dcc { get; set; }
public Boolean Relative { get; set; }
// public string Description { get; set; }
public CDMove(eAxis axis, double pos, double speed) : this((int)axis, pos, speed, 0) { }
public CDMove(int axis, double pos, double speed, double acc, double dcc = 0, Boolean relatvie = false)
{
Axis = axis;
Position = pos;
Speed = speed;
Acc = acc;
Dcc = dcc == 0 ? acc : dcc;
Relative = relatvie;
}
}
public class CDOutput : ICommandData
{
public eDOName Pin { get; set; }
public int PinIndex { get; set; }
public Boolean Value { get; set; }
// public string Description { get; set; }
//public CDOutput(eDOName pin) : this(pin, false) { }
public CDOutput(eDOName pin, Boolean value)
{
Pin = pin;
PinIndex = (int)pin;
Value = value;
}
public CDOutput(int point, Boolean value)
{
Pin = (eDOName)point;
PinIndex = point;
Value = value;
}
}
public class CDRun : ICommandData
{
public Action Target { get; set; }
public CDRun(Action target)
{
Target = target;
}
}
public class CDRunRet<T> : ICommandData
{
public Func<T> Target { get; set; }
public CDRunRet(Func<T> target)
{
Target = target;
}
}
public class CDLog : ICommandData
{
public string Message { get; set; }
public Boolean IsError { get; set; }
public CDLog(string message, Boolean err = false)
{
Message = message;
IsError = err;
}
}
public class CDStep : ICommandData
{
public eSMStep Step { get; set; }
public Boolean Force { get; set; }
public CDStep(eSMStep step, Boolean force = false)
{
Step = step;
Force = force;
}
}
}

View File

@@ -0,0 +1,390 @@
using Project;
using Project.Device;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Management;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading.Tasks;
/// <summary>
/// ============================================================================
/// 장비기술 상태 모니터링 관련 클래스
/// 이 클래스는 SQLfiletoDB 프로그램과 같이 사용하는 것을 권장합니다.
/// 현재 실행 중인 프로그램의 하위 폴더 Status 에 입력된 상태값을 SQL 파일로 기록합니다.
/// SQLfiletoDB는 SQL파일을 실제 DB에 기록하는 프로그램입니다.
/// ============================================================================
/// 작성자 : chi
/// 작성일 : 202-06-15
/// GIT : (none)
/// </summary>
public static partial class EEMStatus
{
static System.Threading.ManualResetEvent mre = new System.Threading.ManualResetEvent(true);
static string ip = string.Empty;
static string mac = string.Empty;
static DateTime StatusChecktime = DateTime.Now;
static DateTime MonitorChecktime = DateTime.Now.AddYears(-1);
static DateTime FileCheckTime = DateTime.Now;
static string monitorfile = string.Empty;
/// <summary>
/// UpdateStatusSQL 명령이 동작하는 간격이며 기본 180초(=3분)로 되어 있습니다.
/// </summary>
public static int UpdateStatusInterval { get; set; } = 180;
public static int UpdateFileInterval { get; set; } = 3;
static bool queryok = false;
static bool UpdateRun = false;
public static string IP
{
get
{
if (queryok == false) GetNetworkInfo();
return ip;
}
set { ip = value; }
}
public static string MAC
{
get
{
if (queryok == false) GetNetworkInfo();
return mac;
}
set
{
mac = value;
}
}
/// <summary>
/// 현재 시스템의 IP/MAC정보를 취득합니다.
/// </summary>
static void GetNetworkInfo()
{
ip = "";
mac = "";
// string prgmName = Application.ProductName;
var nif = NetworkInterface.GetAllNetworkInterfaces();
var host = Dns.GetHostEntry(Dns.GetHostName());
string fullname = System.Net.Dns.GetHostEntry("").HostName;
foreach (IPAddress r in host.AddressList)
{
string str = r.ToString();
if (str != "" && str.Substring(0, 3) == "10.")
{
ip = str;
break;
}
}
string rtn = string.Empty;
ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled='TRUE'");
ManagementObjectSearcher query1 = new ManagementObjectSearcher(oq);
foreach (ManagementObject mo in query1.Get())
{
string[] address = (string[])mo["IPAddress"];
if (address[0] == ip && mo["MACAddress"] != null)
{
mac = mo["MACAddress"].ToString();
break;
}
}
queryok = true;
}
public static void UpdateStatusSQL(eSMStep status, bool _extrun = false, string remark = "")
{
var tsrun = DateTime.Now - StatusChecktime;
if (tsrun.TotalSeconds >= UpdateStatusInterval)
{
AddStatusSQL(status, "UPDATE", extrun: _extrun);
StatusChecktime = DateTime.Now;
}
//내부실행모드일때에만 파일을 처리한다
if (_extrun == false)
{
var tsfile = DateTime.Now - FileCheckTime;
if (tsfile.TotalSeconds >= UpdateFileInterval)
{
if (UpdateRun == false)
{
UpdateRun = true;
Task.Run(() =>
{
UpdateFileToDB();
UpdateRun = false;
});
}
FileCheckTime = DateTime.Now;
}
}
}
/// <summary>
/// 상태모니터링 프로그램의 실행파일 명
/// </summary>
static string StatusMonitorFile
{
get
{
if (string.IsNullOrEmpty(monitorfile))
monitorfile = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Status", "SQLFileToDB.exe");
return monitorfile;
}
}
static System.Diagnostics.Process CheckMonitor()
{
if (System.IO.File.Exists(StatusMonitorFile) == false) return null;
var prcs = System.Diagnostics.Process.GetProcesses();
return prcs.Where(t => t.ProcessName.ToLower().StartsWith("sqlfiletodb")).FirstOrDefault();
}
public static bool RunStatusMonitor()
{
//파일이 없으면 실행 불가
if (System.IO.File.Exists(StatusMonitorFile) == false) return false;
//실행프로세스 검사
var prc = CheckMonitor();
if (prc == null)
{
try
{
prc = new System.Diagnostics.Process();
prc.StartInfo = new System.Diagnostics.ProcessStartInfo
{
Arguments = string.Empty,
FileName = StatusMonitorFile,
};
prc.Start();
}
catch
{
return false;
}
}
return true;
}
/// <summary>
/// 작업수량을 입력합니다
/// </summary>
/// <param name="cnt"></param>
/// <returns></returns>
public static string AddStatusCount(int cnt, string remark = "")
{
if (remark.isEmpty()) remark = $"Count Set : {cnt}";
return AddStatusSQL(PUB.sm.Step, remark, count: cnt);
}
/// <summary>
/// 상태메세지를 status 폴더에 기록합니다.
/// </summary>
/// <param name="status">상태머신의 상태값</param>
/// <param name="remark">비고</param>
/// <param name="wdate">기록일시</param>
/// <returns>오류발생시 오류메세지가 반환 됩니다</returns>
public static string AddStatusSQL(eSMStep status, string remark = "", DateTime? wdate = null, bool extrun = false, int? count = null)
{
if (queryok == false || MAC.isEmpty()) GetNetworkInfo();
if (status == eSMStep.CLOSEWAIT || status == eSMStep.CLOSED) return string.Empty;
if (extrun)
{
//상태모니터링 프로그램을 실행합니다.
var tsMon = DateTime.Now - MonitorChecktime;
if (tsMon.TotalMinutes > 5) RunStatusMonitor();
}
try
{
var state = 0;
string cntstr = "null";
if (count != null) cntstr = count.ToString();
var alarmid = string.Empty;
var alarmmsg = string.Empty;
if (string.IsNullOrEmpty(remark)) remark = $"STS:{status}";
if (status == eSMStep.RUN) state = 1;
else if (status == eSMStep.ERROR || status == eSMStep.EMERGENCY)
{
state = 2;
alarmid = PUB.Result.ResultErrorCode.ToString();
alarmmsg = PUB.Result.ResultMessage;
}
else if (status == eSMStep.PAUSE) //일시중지도 오류코드가 포함된다,
{
if (PUB.Result.ResultErrorCode == eECode.USER_STEP || PUB.Result.ResultErrorCode == eECode.USER_STOP || PUB.Result.ResultErrorCode.ToString().StartsWith("MESSAGE"))
{
//사용자에의해 멈추는 것은 오류코드를 넣지 않는다.
}
else
{
alarmid = PUB.Result.ResultErrorCode.ToString();
alarmmsg = PUB.Result.ResultMessage;
}
}
else if (status == eSMStep.INIT) state = 3; //시작
else if (status == eSMStep.CLOSING) state = 4; //종료
//length check
if (alarmid.Length > 10) alarmid = alarmid.Substring(0, 10);
if (remark.Length > 99) remark = remark.Substring(0, 99);
if (alarmmsg.Length > 250) alarmmsg = alarmmsg.Substring(0, 50);
var mcid = AR.SETTING.Data.MCID;// Project.PUB.setting.MCID;//.Data.MCID;
//var mcid = Project.PUB.setting.MCID;//.Data.MCID;
var path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Status");
var file = System.IO.Path.Combine(path, $"{DateTime.Now.ToString("HHmmssfff")}_{status}.sql");
var sql = "insert into MCMonitor_Rawdata(Model,status,remark,ip,mac,time,alarmid,alarmmsg,count,version) " +
" values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}',{8},'{9}')";
var timestr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
if (wdate != null) timestr = ((DateTime)wdate).ToString("yyyy-MM-dd HH:mm:ss");
var VersionNumber = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
sql = string.Format(sql, mcid, state, remark.Replace("'", "''"), IP, MAC, timestr, alarmid, alarmmsg, cntstr, VersionNumber);
System.IO.File.WriteAllText(file, sql, System.Text.Encoding.Default);
////만들어진지 3분이 지난 파일은 삭제한다.
//var di = new System.IO.DirectoryInfo(path);
//var fi = di.GetFiles("*.sql", System.IO.SearchOption.TopDirectoryOnly).Where(t => t.LastWriteTime < DateTime.Now.AddMinutes(-3)).FirstOrDefault();
//if (fi != null) fi.Delete();
if (state == 4) UpdateFileToDB();
return string.Empty;
}
catch (Exception ex)
{
return ex.Message;
}
}
static void UpdateFileToDB()
{
if (mre.WaitOne(1000) == false) return;
mre.Reset();
var cs = "Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=Amkor123!";
var path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Status");
var di = new System.IO.DirectoryInfo(path);
if (di.Exists == false) return;
var file = di.GetFiles("*.sql", System.IO.SearchOption.TopDirectoryOnly)
.Where(t => t.LastWriteTime < DateTime.Now.AddSeconds(-3))
.OrderByDescending(t => t.LastWriteTime).FirstOrDefault();
if (file == null)
{
mre.Set();
return;
}
//파일을 찾아야한다
// PUB.log.Add($">> {file.FullName}");
try
{
var sql = System.IO.File.ReadAllText(file.FullName, System.Text.Encoding.Default);
if (string.IsNullOrEmpty(sql))
{
//비어잇다면
var errpath = System.IO.Path.Combine(di.FullName, "Error");
var errfile = System.IO.Path.Combine(errpath, file.Name);
if (System.IO.Directory.Exists(errpath) == false) System.IO.Directory.CreateDirectory(errpath);
System.IO.File.Move(file.FullName, errfile);// file.MoveTo(errfile);
// ecnt += 1;
}
else
{
// var csstr = PUB.setting.ConnectionString;
// if (string.IsNullOrEmpty(csstr)) csstr = "Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=Amkor123!";
var cn = new System.Data.SqlClient.SqlConnection(cs);
var cmd = new System.Data.SqlClient.SqlCommand(sql, cn);
cn.Open();
var cnt = cmd.ExecuteNonQuery();
//if (cnt == 0) PUB.log.Add($"Result Empty : {sql}");
cn.Close();
cnt += 1;
var errpath = System.IO.Path.Combine(di.FullName, "Complete");
var errfile = System.IO.Path.Combine(errpath, file.Name);
if (System.IO.Directory.Exists(errpath) == false) System.IO.Directory.CreateDirectory(errpath);
//file.MoveTo(errfile);
System.IO.File.Move(file.FullName, errfile);
}
}
catch (Exception ex)
{
if(ex.Message.Contains("deadlocked") == false)
{
var errpath = System.IO.Path.Combine(di.FullName, "Error");
var errfile = System.IO.Path.Combine(errpath, file.Name);
if (System.IO.Directory.Exists(errpath) == false) System.IO.Directory.CreateDirectory(errpath);
try
{
//file.MoveTo(errfile);
System.IO.File.Move(file.FullName, errfile);
//오류내용도 저장한다..
var errfilename = errfile + "_error.txt";
System.IO.File.WriteAllText(errfilename, ex.Message, System.Text.Encoding.Default);
}
catch (Exception ex2)
{
}
}
else
{
Console.WriteLine("dead lock 오류는 무시한다");
}
//ecnt += 1;
}
//try
//{
// //생성된지 10일이 넘은 자료는 삭제한다.
// //시간소비를 피해서 1개의 파일만 작업한다
// //var sqlfiles = di.GetFiles("*.sql", System.IO.SearchOption.AllDirectories);
// //총3번의 데이터를 처리한다
// //var files = sqlfiles.Where(t => t.LastWriteTime < DateTime.Now.AddDays(-10)).Select(t => t.FullName);
// //int i = 0;
// //var dellist = files.TakeWhile(t => i++ < 3);
// //foreach (var delfile in dellist)
// //System.IO.File.Delete(delfile);
//}
//catch
//{
//}
mre.Set();
}
}
/*
=================================================
변경내역
=================================================
230619 chi UpdateFileToDB 에서 폴더가 없다면 return 하도록 함
230615 chi UpdateFiletoDB의 ManualResetEvent적용
Version 항목 추가
230612 chi 프로그램 시작/종료 alarmid항목 추가
완료된 파일 10일간 보존하도록 함
230522 chi extrun 모드 추가(agv용 - SQL파일을 외부 프로그램에서 처리하도록 함)
230617 chi 파일쓰기함수를 Task 로 처리
3분지난데이터 삭제기능 제거
230516 chi initial commit
*/

View File

@@ -0,0 +1,692 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.ComponentModel;
namespace Project
{
public enum StepResult
{
Wait = 0,
Complete,
Error,
}
public enum eWorkPort
{
Left = 0,
Right
}
public enum eNormalResult
{
True = 0,
False,
Error,
}
public enum eSMStep : byte
{
NOTSET = 0,
INIT = 1,
IDLE = 10,
RUN = 50,
RUN_ROOT_SEQUENCE_L,
RUN_ROOT_SEQUENCE_R,
RUN_KEYENCE_READ_L,
RUN_KEYENCE_READ_R,
RUN_PICKER_ON_L,
RUN_PICKER_ON_R,
RUN_PICKER_OFF_L,
RUN_PICKER_OFF_R,
RUN_PRINTER_F,
RUN_PRINTER_R,
RUN_PRINTER_ON_F,
RUN_PRINTER_ON_R,
RUN_PRINTER_OFF_F,
RUN_PRINTER_OFF_R,
RUN_QRVALID_F,
RUN_QRVALID_R,
RUN_COM_PT0,
RUN_COM_PT1,
RUN_COM_PT2,
RUN_PICK_RETRY,
//이후에 사용자 런 코드용 스텝을 추가한다.
EMERGENCY = 200,
HOME_FULL = 201,
HOME_DELAY,
HOME_CONFIRM,
HOME_QUICK,
CLOSING = 250,
CLOSEWAIT = 251,
CLOSED = 252,
//사용자영역
FINISH = 100,
PAUSE,
WAITSTART,
ERROR,
SAFTY,
CLEAR,
}
public enum eWaitMessage
{
PX = 0,
PZ,
LMOVE,
LUPDN,
RMOVE,
RUPDN,
LPRINT,
RPRINT,
VIS0,
VIS1,
VIS2,
}
//public enum eJobResult
//{
// None = 0,
// Error,
// ErrorOut,
// MaxCount,
// NotExistSID,
// DisableUnloader,
// MatchFail,
// NoBarcode
//}
public enum eCartSize
{
None = 0,
Inch7 = 7,
Inch13 = 13
}
public enum ePrintPutPos
{
None = 0,
Top,
Middle,
Bottom,
}
public enum ePrintVac
{
inhalation = 0,
exhaust,
off,
}
public enum eJobType : byte
{
Sorter = 0,
Dryrun,
}
public enum eHeaderHandler
{
Ping = 0,
RequestData,
RequstSeqNo,
RequstInputReel,
JobEnd,
JobDelete,
}
public struct sVisionDMResult
{
public Boolean iSystemErr { get; set; }
public Boolean isError { get; set; }
public string DM { get; set; }
public System.Drawing.Rectangle ROS { get; set; }
public System.Drawing.PointF DMCenter { get; set; }
public List<System.Drawing.PointF> DMCorner { get; set; }
public string DMMessage { get; set; }
}
public struct sObjectDetectResult
{
public string Message { get; set; }
public List<System.Drawing.Rectangle> Rect { get; set; }
public List<uint> Areas { get; set; }
public Boolean OK
{
get
{
if (Areas == null || Areas.Count < 1) return false;
else return true;
}
}
}
public enum eGridValue
{
/// <summary>
/// 아직 처리 전(기본 초기화된 상태)
/// </summary>
NotSet = 0,
/// <summary>
/// 원점검사에서 오류 발생
/// </summary>
OrientError,
/// <summary>
/// 아이템검출에서 실패됨
/// </summary>
NoItem,
/// <summary>
/// 아이템검출성공, 데이터매트릭스 검출 실패
/// </summary>
NewItem,
/// <summary>
/// 데이터매트릭스 읽기 실패
/// </summary>
DMReadError,
/// <summary>
/// 데이터매트릭스 관리 횟수가 기준횟수(10) 미만 (아직 정상)
/// </summary>
DMNotmalCount,
/// <summary>
/// 데이터매트릭스 관리 횟수가 기준횟수(10)를 초과한 경우
/// </summary>
DMOverCount,
}
public enum eRoiSeq
{
Area = 0,
DataMatrix,
Orient,
DetectUnit,
DetectDM
}
public enum eWaitType : byte
{
TryLock = 0,
TryUnLock,
AirBlowOn,
AirBlowOff,
AirBlowDustOn,
AirBlowDustOff,
PrintPickLOff,
PrintPickLOn,
PrintPickROff,
PrintPickROn,
PickOff,
PickOn,
AirBlowCoverDn,
AirBlowCoverUp,
UnloaderUp,
UnloaderDn,
LiftUp,
LiftDn,
}
public enum eSensorState : byte
{
Off = 0,
On = 1,
InComplete = 2,
}
public enum eIOCheckResult
{
Wait = 0,
Complete,
Timeout
}
public enum ePort
{
Left = 0,
Right,
}
enum eResultStringType
{
Nomal = 0,
Attention,
Error,
}
public enum eMotDir
{
Stop = 0,
CW = 1,
CCW = 2
}
/// <summary>
/// RUN중일 때 사용되는 세부 시퀀스
/// </summary>
public enum eRunStep : byte
{
NOTSET = 0,
/// <summary>
/// 프로그램 체크
/// </summary>
STARTCHKSW,
/// <summary>
/// 하드웨어 체크
/// </summary>
STARTCHKHW,
/// <summary>
/// 기계장치를 작업 시작 전 상태로 이동합니다
/// </summary>
INITIALHW,
/// <summary>
/// 안전지대(비활성화된경우 발생)
/// </summary>
SAFTYZONE_GO,
SAFTYZONE_RDY,
BEGINLOAD,
/// <summary>
/// 트레이를 로딩하기 위한 로더 이동 및 트레이 추출
/// </summary>
PORTLOAD,
/// <summary>
/// 비젼촬영을위한 위치로 이동
/// </summary>
BEGINPICK,
ENDPICK,
OVERLOAD,
SAVEDATA,
/// <summary>
/// 모션 원위치
/// </summary>
BARCODE,
/// <summary>
/// AIR/BLOW 위치 이동 및 작업
/// </summary>
AIRBLOW,
REELOUT,
TRAYOUT,
/// <summary>
/// 언로드위치로 셔틀을 이동
/// </summary>
BEGINUNLOADER,
/// <summary>
/// 트레이 언로드 작업
/// </summary>
TRAYUNLOAD,
/// <summary>
/// 언로딩하고 다시 로딩존으로 이동하는 시퀀스
/// </summary>
MOVE_TO_LOAD,
}
public enum ePLCIPin : byte
{
X00, X01, X02, X03, X04, X05, X06, X07, X08, X09, X0A,
X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X1A
}
public enum ePLCOPin : byte
{
Y00, Y01, Y02, Y03, Y04, Y05, Y06, Y07, Y08, Y09, Y0A,
Y10, Y11, Y12, Y13, Y14, Y15, Y16, Y17, Y18, Y19, Y1A
}
public enum ePLCITitle : byte
{
Run, Cart_Status_01, Cart_Status_02, Cart_Status_03, Cart_Status_04,
Machine_Confirm = 19
}
public enum ePLCOTitle : byte
{
Cart_No_Setting = 0,
Handler_Confirm = 19,
}
public enum eResult : byte
{
NOERROR,
EMERGENCY,
SAFTY,
DEVELOP,
SETUP,
HARDWARE,
SENSOR,
MOTION,
OPERATION,
COMMUNICATION,
TIMEOUT,
UNLOADER,
}
public enum eECode : byte
{
NOTSET = 0,
EMERGENCY = 1,
NOMODELV = 2,//작업모델
NOMODELM = 3,//모션모델
DOORSAFTY = 6,
AREASAFTY = 7,
VIS_LICENSE = 8,
HOME_TIMEOUT = 9,
AIRNOOUT = 10,
NOFUNCTION = 11,
AIRNOTDETECT = 12,
DOOFF = 27,//출력 off
DOON = 28,//출력 on
DIOFF = 29,//입력off
DION = 30,//입력 on
MESSAGE_INFO = 32,
MESSAGE_ERROR = 33,
VISION_NOTREADY = 34,
VISION_NOCONN = 35,
VISION_TRIGERROR = 36,
VISION_COMMERROR = 37,
VISION_NORECV = 38,
AZJINIT = 39, //DIO 혹은 모션카드 초기화 X
MOT_HSET = 41,
MOT_SVOFF = 42,
MOT_HSEARCH = 43,
MOT_CMD = 71,
USER_STOP = 72,
USER_STEP = 73,
POSITION_ERROR = 86,
MOTIONMODEL_MISSMATCH = 96,
//여기서부터는 전용코드로한다(소켓은 조금 섞여 있음)
VISCONF = 100,
NEED_AIROFF_L,
NEED_AIROFF_R,
PORTOVERLOAD,
NOPRINTLDATA,
NOPRINTRDATA,
PRINTL,
PRINTR,
CAM_LEFT,
CAM_RIGHT,
INCOMPLETE_LOADERDATA,
NOPUTPOSITION,
NOREELSIZE,
PRINTER,
QRDATAMISSMATCHL,
QRDATAMISSMATCHR,
MOTX_SAFETY,
NO_PAPER_DETECT_L,
NO_PAPER_DETECT_R,
CART_SIZE_ERROR_L,
CART_SIZE_ERROR_R,
PRE_USE_REELID_L,
PRE_USE_REELID_R,
NEED_JOBCANCEL,
LCONVER_REEL_DECTECT_ALL =150,
RCONVER_REEL_DECTECT_ALL,
LCONVER_REEL_DECTECT_IN,
RCONVER_REEL_DECTECT_IN,
LCONVER_MOVING,
RCONVER_MOVING,
NOREADY_KEYENCE,
PRINTER_LPICKER_NOBW,
PRINTER_RPICKER_NOBW,
NOBYPASSSID,
CONFIG_KEYENCE,
PRINTER_LPRINTER_NOUP,
PRINTER_RPRINTER_NOUP,
NOECSDATA,
PICKER_LCYL_NODOWN,
PICKER_RCYL_NODOWN,
PICKER_LCYL_NOUP,
PICKER_RCYL_NOUP,
NOSIDINFOFROMDB,
INBOUNDWEBAPIERROR,
SIDINFORDUP,
NOECSDATAACTIVE,
}
public enum eNextStep : byte
{
NOTHING = 0,
PAUSE,
PAUSENOMESAGE,
ERROR
}
public enum eILock
{
EMG = 0,
PAUSE,
HOMESET,
DOOR,
SAFTYAREA,
DISABLE,
XMOVE,
YMOVE,
ZMOVE,
X_POS,
Y_POS,
Z_POS,
PY_POS,
PZ_POS,
CYL_FORWARD,
MPrint,
}
//public enum eILockPKX
//{
// EMG = 0,
// PAUSE,
// HOMESET,
// DOOR,
// Disable,
// ZL_POS,
// ZR_POS,
// ZMOVE,
// PKZPOS,
//}
//public enum eILockPKZ
//{
// EMG = 0,
// PAUSE,
// HOMESET,
// DOOR,
// Disable,
// Y_POS,
// YMOVE,
// PORTRUN0,
// PORTRUN1,
// PORTRUN2
//}
//public enum eILockPKT
//{
// EMG = 0,
// PAUSE,
// HOMESET,
// DOOR,
// Disable,
// Y_POS,
// Y_MOVE,
// PortRun
//}
///// <summary>
///// PRINT MOVE AXIS (L+R)
///// </summary>
//public enum eILockPRM
//{
// Emergency = 0,
// Pause,
// HomeSet,
// Safty,
// Disable,
// ZMOVE,
// FORWARD,
// ITEMON,
// PKXPOS,
// PRNZPOS,
//}
//public enum eILockPRZ
//{
// EMG = 0,
// PAUSE,
// HOMESET,
// DOOR,
// Disable,
// YMOVE,
// ITEMON,
// PRNYPOS,
//}
public enum eILockPRL
{
EMG = 0,
PAUSE,
HOMESET,
DOOR,
SAFTYAREA,
DISABLE,
PRNYPOS,
PRNZPOS,
}
public enum eILockPRR
{
EMG = 0,
PAUSE,
HOMESET,
DOOR,
SAFTYAREA,
DISABLE,
PRNYPOS,
PRNZPOS,
}
public enum eILockVS0
{
EMG = 0,
PAUSE,
HOMESET,
DOOR,
SAFTYAREA,
DISABLE,
PORTRDY,
PKXPOS, //피커의 위치
PRNYPOS, //프린터Y축 위치
}
public enum eILockVS1
{
EMG = 0,
PAUSE,
HOMESET,
DOOR,
SAFTYAREA,
DISABLE,
PORTRDY,
PKXPOS,
}
public enum eILockVS2
{
EMG = 0,
PAUSE,
HOMESET,
DOOR,
SAFTYAREA,
DISABLE,
PORTRDY,
PKXPOS, //피커의 위치
PRNYPOS, //프린터Y축 위치
}
public enum eILockCV
{
EMG = 0,
PAUSE,
HOMESET,
DOOR,
SAFTYAREA,
/// <summary>
/// 포트를 사용하지 않는경우
/// </summary>
DISABLE,
/// <summary>
/// 카트모드
/// </summary>
CARTMODE,
/// <summary>
/// 업체컨이어의 ready 신호
/// </summary>
EXTBUSY,
/// <summary>
/// 나의 작업 신호
/// </summary>
BUSY,
VISION,
}
}

View File

@@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Project
{
/// <summary>
/// 모션 축 정보
/// </summary>
public enum eAxis : byte
{
PX_PICK = 0,
PZ_PICK,
PL_MOVE,
PL_UPDN,
PR_MOVE,
PR_UPDN,
Z_THETA,
}
public enum eAxisName : byte
{
Picker_X = 0,
Picker_Z ,
PrinterL_Move,
PrinterL_UpDn,
PrinterR_Move,
PrinterR_UpDn,
Spare_00,
}
}

View File

@@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.ComponentModel;
namespace Project
{
public enum ePXLoc : byte
{
READYL = 0,
READYR,
PICKON,
PICKOFFL,
PICKOFFR,
}
public enum ePZLoc : byte
{
READY = 0,
PICKON,
PICKOFFL,
PICKOFFR,
}
public enum ePTLoc : byte
{
READY = 0,
}
public enum eLMLoc : byte
{
READY = 0,
PRINTH07,
PRINTL07,
PRINTM07,
PRINTH13,
PRINTL13,
PRINTM13,
}
public enum eLZLoc : byte
{
READY = 0,
PICKON,
PICKOFF,
}
public enum eRMLoc : byte
{
READY = 0,
PRINTH07,
PRINTL07,
PRINTM07,
PRINTH13,
PRINTL13,
PRINTM13,
}
public enum eRZLoc : byte
{
READY = 0,
PICKON,
PICKOFF,
}
}

View File

@@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AR.FTPClient
{
public class MessageEventArgs : EventArgs
{
protected Boolean _isError = false;
public Boolean IsError { get { return _isError; } }
protected string _message = string.Empty;
public string Message { get { return _message; } }
public MessageEventArgs(Boolean isError, string Message)
{
_isError = isError;
_message = Message;
}
}
public class ListProgressEventArgs : EventArgs
{
//public long Max { get; set; }
//public long Value { get; set; }
public long TotalRecv { get; set; }
public ListProgressEventArgs(long TotalRecv_)
{
this.TotalRecv = TotalRecv_;
}
}
}

View File

@@ -0,0 +1,574 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
namespace AR.FTPClient
{
public partial class FTPClient : IFTPClient
{
public string errorMessage { get; set; }
private int bufferSize = 2048;
private int timeout = 20000;
#region "Contstruct"
public FTPClient() : this("127.0.0.1", "Anonymous", "") { }
public FTPClient(string Host, string UserID, string UserPass) :
this(Host, UserID, UserPass, 21)
{ }
public FTPClient(string Host, string UserID, string UserPass, bool passive) :
this(Host, UserID, UserPass, 21, passive)
{ }
public FTPClient(string Host, string UserID, string UserPass, int port) :
this(Host, UserID, UserPass, port, false)
{ }
public FTPClient(string host, string userid, string userpass, int port, bool passive)
{
Host = host;
UserID = userid;
UserPassword = userpass;
Port = port;
PassiveMode = passive;
this.TextEncoding = System.Text.Encoding.UTF8;
}
#endregion
public event EventHandler<MessageEventArgs> Message;
public event EventHandler<ListProgressEventArgs> ListPrgress;
#region "Properties"
/// <summary>
/// 접속하려는 FTP서버의 IP혹은 도메인 주소를 입력하세요
/// 기본값 : 127.0.0.1
/// </summary>
public string Host { get; set; }
/// <summary>
/// FTP의 사용자 ID
/// 기본값 : Anonymous
/// </summary>
public string UserID { get; set; }
/// <summary>
/// FTP 사용자 ID의 암호
/// 기본값 : 없음
/// </summary>
public string UserPassword { get; set; }
/// <summary>
/// FTP 접속 포트
/// 기본값 : 21
/// </summary>
public int Port { get; set; }
/// <summary>
/// FTP 접속 방식 (능동형/수동형)
/// </summary>
public bool PassiveMode { get; set; }
/// <summary>
/// 문자수신시 사용할 인코딩 방식
/// </summary>
public System.Text.Encoding TextEncoding { get; set; }
#endregion
public void Dispose()
{
}
/// <summary>
/// 파일을 다운로드 합니다.
/// </summary>
/// <param name="remoteFile">원격위치의 전체 경로</param>
/// <param name="localFile">로컬위치의 전체 경로</param>
public Boolean Download(string remoteFile, string localFile, bool overwrite = false)
{
FtpWebRequest ftpRequest = null;
FtpWebResponse ftpResponse = null;
Stream ftpStream = null;
//overwrite funcion - 190622 - chi
errorMessage = string.Empty;
if (overwrite == false && System.IO.File.Exists(localFile))
{
errorMessage = "Target file alreay exists";
return false;
}
else if (overwrite == true && System.IO.File.Exists(localFile))
{
try
{
System.IO.File.Delete(localFile);
}
catch (Exception ex)
{
errorMessage = ex.Message;
return false;
}
}
bool retval = true;
try
{
long Receive = 0;
var url = CombineUrl(remoteFile);
ftpRequest = (FtpWebRequest)FtpWebRequest.Create(url);
ftpRequest.Credentials = new NetworkCredential(this.UserID, this.UserPassword);
ftpRequest.UseBinary = true;
ftpRequest.UsePassive = this.PassiveMode;
ftpRequest.KeepAlive = true;
ftpRequest.ReadWriteTimeout = this.timeout;
ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
ftpStream = ftpResponse.GetResponseStream();
FileStream localFileStream = new FileStream(localFile, FileMode.Create);
byte[] byteBuffer = new byte[bufferSize];
int bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize);
Receive += bytesRead;
if (ListPrgress != null)
ListPrgress(this, new ListProgressEventArgs(Receive));
try
{
while (bytesRead > 0)
{
localFileStream.Write(byteBuffer, 0, bytesRead);
bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize);
Receive += bytesRead;
if (ListPrgress != null)
ListPrgress(this, new ListProgressEventArgs(Receive));
}
}
catch (Exception ex) { retval = false; Console.WriteLine(ex.ToString()); }
localFileStream.Close();
ftpStream.Close();
ftpResponse.Close();
ftpRequest = null;
}
catch (Exception ex) { retval = false; this.errorMessage = ex.Message; Console.WriteLine(ex.ToString()); }
return retval;
}
/// <summary>
/// 파일을 업로드 합니다.
/// </summary>
/// <param name="remoteFile">원격위치의 전체 경로</param>
/// <param name="localFile">로컬위치의 전체 경로</param>
/// <returns></returns>
public Boolean Upload(string remoteFile, string localFile)
{
FtpWebRequest ftpRequest = null;
FtpWebResponse ftpResponse = null;
Stream ftpStream = null;
try
{
var url = CombineUrl(remoteFile);
ftpRequest = (FtpWebRequest)FtpWebRequest.Create(url);
ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword);
ftpRequest.UseBinary = true;
ftpRequest.UsePassive = PassiveMode;
ftpRequest.KeepAlive = true;
ftpRequest.ReadWriteTimeout = this.timeout;
ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;
ftpStream = ftpRequest.GetRequestStream();
FileStream localFileStream = new FileStream(localFile, FileMode.Open);
byte[] byteBuffer = new byte[bufferSize];
int bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize);
Boolean bError = false;
try
{
System.Diagnostics.Stopwatch wat = new System.Diagnostics.Stopwatch();
wat.Restart();
while (bytesSent != 0)
{
ftpStream.Write(byteBuffer, 0, bytesSent);
bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize);
}
}
catch (Exception ex)
{
bError = true;
}
localFileStream.Close();
ftpStream.Close();
ftpRequest = null;
if (bError) return false;
else return true;
}
catch (Exception ex)
{
this.errorMessage = ex.Message;
return false;
}
}
/// <summary>
/// 원격파일을 삭제 합니다.
/// </summary>
/// <param name="remotefile"></param>
public Boolean Delete(string remotefile)
{
FtpWebRequest ftpRequest = null;
FtpWebResponse ftpResponse = null;
Stream ftpStream = null;
try
{
var url = CombineUrl(remotefile);
ftpRequest = (FtpWebRequest)WebRequest.Create(url);
ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword);
ftpRequest.UseBinary = true;
ftpRequest.UsePassive = this.PassiveMode;
ftpRequest.KeepAlive = true;
ftpRequest.ReadWriteTimeout = this.timeout;
ftpRequest.Method = WebRequestMethods.Ftp.DeleteFile;
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
ftpResponse.Close();
ftpRequest = null;
return true;
}
catch (Exception ex) { this.errorMessage = ex.Message; return false; }
}
/// <summary>
/// 원격파일의 이름을 변경 합니다.
/// </summary>
/// <param name="currentFileNameAndPath"></param>
/// <param name="newFileName"></param>
public Boolean rename(string currentFileNameAndPath, string newFileName)
{
FtpWebRequest ftpRequest = null;
FtpWebResponse ftpResponse = null;
Stream ftpStream = null;
try
{
var url = CombineUrl(currentFileNameAndPath);
ftpRequest = (FtpWebRequest)WebRequest.Create(url);
ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword);
ftpRequest.UsePassive = this.PassiveMode;
ftpRequest.ReadWriteTimeout = this.timeout;
ftpRequest.UseBinary = true;
ftpRequest.KeepAlive = true;
ftpRequest.Method = WebRequestMethods.Ftp.Rename;
ftpRequest.RenameTo = newFileName;
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
ftpResponse.Close();
ftpRequest = null;
return true;
}
catch (Exception ex) { this.errorMessage = ex.Message; return false; }
}
/// <summary>
/// 원격위치에 폴더를 생성 합니다.
/// 트리구조로 폴더를 생성하지 않습니다. 여러개의 폴더를 생성하려면 각각 호출 해야 합니다.
/// </summary>
/// <param name="newDirectory"></param>
/// <returns></returns>
public bool createDirectory(string newDirectory)
{
FtpWebRequest ftpRequest = null;
FtpWebResponse ftpResponse = null;
Stream ftpStream = null;
try
{
var url = CombineUrl(newDirectory, false);
ftpRequest = (FtpWebRequest)WebRequest.Create(url);
ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword);
ftpRequest.UsePassive = this.PassiveMode;
ftpRequest.UseBinary = true;
ftpRequest.KeepAlive = true;
ftpRequest.ReadWriteTimeout = this.timeout;
ftpRequest.Method = WebRequestMethods.Ftp.MakeDirectory;
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
ftpResponse.Close();
ftpRequest = null;
return true;
}
catch (Exception ex) { this.errorMessage = ex.Message; return false; }
}
/// <summary>
/// 원격위치의 폴더를 삭제합니다. 폴더 삭제 전 대상 폴더는 비어있어야 합니다.
/// </summary>
/// <param name="Directory"></param>
/// <returns></returns>
public bool RemoveDirectory(string Directory)
{
FtpWebRequest ftpRequest = null;
FtpWebResponse ftpResponse = null;
Stream ftpStream = null;
try
{
var url = CombineUrl(Directory, false);
ftpRequest = (FtpWebRequest)WebRequest.Create(url);
ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword);
ftpRequest.UsePassive = this.PassiveMode;
ftpRequest.UseBinary = true;
ftpRequest.KeepAlive = true;
ftpRequest.ReadWriteTimeout = this.timeout;
ftpRequest.Method = WebRequestMethods.Ftp.RemoveDirectory;
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
ftpResponse.Close();
ftpRequest = null;
return true;
}
catch (Exception ex) { this.errorMessage = ex.Message; return false; }
}
/// <summary>
/// 파일의 생성일자 반환
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public string getFileCreatedDateTime(string fileName)
{
FtpWebRequest ftpRequest = null;
FtpWebResponse ftpResponse = null;
Stream ftpStream = null;
try
{
var url = CombineUrl(fileName);
ftpRequest = (FtpWebRequest)WebRequest.Create(url);
ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword);
ftpRequest.UsePassive = this.PassiveMode;
ftpRequest.UseBinary = true;
ftpRequest.KeepAlive = true;
ftpRequest.ReadWriteTimeout = this.timeout;
ftpRequest.Method = WebRequestMethods.Ftp.GetDateTimestamp;
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
ftpStream = ftpResponse.GetResponseStream();
StreamReader ftpReader = new StreamReader(ftpStream, this.TextEncoding);
string fileInfo = null;
try { fileInfo = ftpReader.ReadToEnd(); }
catch (Exception ex) { Console.WriteLine(ex.ToString()); }
ftpReader.Close();
ftpStream.Close();
ftpResponse.Close();
ftpRequest = null;
return fileInfo;
}
catch (Exception ex) { this.errorMessage = ex.Message; Console.WriteLine(ex.ToString()); }
return "";
}
/// <summary>
/// 파일의 크기를 반환
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public string getFileSize(string fileName)
{
FtpWebRequest ftpRequest = null;
FtpWebResponse ftpResponse = null;
Stream ftpStream = null;
try
{
var url = CombineUrl(fileName);
ftpRequest = (FtpWebRequest)WebRequest.Create(url);
ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword);
ftpRequest.UseBinary = true;
ftpRequest.UsePassive = this.PassiveMode;
ftpRequest.KeepAlive = true;
ftpRequest.ReadWriteTimeout = this.timeout;
ftpRequest.Method = WebRequestMethods.Ftp.GetFileSize;
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
ftpStream = ftpResponse.GetResponseStream();
StreamReader ftpReader = new StreamReader(ftpStream, this.TextEncoding);
string fileInfo = null;
try { while (ftpReader.Peek() != -1) { fileInfo = ftpReader.ReadToEnd(); } }
catch (Exception ex) { Console.WriteLine(ex.ToString()); }
ftpReader.Close();
ftpStream.Close();
ftpResponse.Close();
ftpRequest = null;
return fileInfo;
}
catch (Exception ex) { errorMessage = ex.Message; Console.WriteLine(ex.ToString()); }
return "";
}
/// <summary>
/// 폴더와 파일의 이름만 반환 합니다.
/// </summary>
/// <param name="directory"></param>
/// <returns></returns>
public string[] directoryListSimple(string directory)
{
FtpWebRequest ftpRequest = null;
FtpWebResponse ftpResponse = null;
Stream ftpStream = null;
errorMessage = string.Empty;
try
{
var url = CombineUrl(directory, false);
if (url.EndsWith("/") == false) url += "/";
ftpRequest = (FtpWebRequest)WebRequest.Create(url);
ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword);
ftpRequest.UseBinary = true;
ftpRequest.UsePassive = PassiveMode;
ftpRequest.KeepAlive = true;
ftpRequest.ReadWriteTimeout = this.timeout;
ftpRequest.ReadWriteTimeout = 30000;
ftpRequest.Timeout = 30000;
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
ftpStream = ftpResponse.GetResponseStream();
StreamReader ftpReader = new StreamReader(ftpStream, this.TextEncoding);
string directoryRaw = null;
try
{
while (ftpReader.Peek() != -1)
{
var dataLIne = ftpReader.ReadLine();
if (dataLIne.Trim() != "")
{
if (directoryRaw != null && directoryRaw != "") directoryRaw += "|";
directoryRaw += dataLIne;
}
}
}
catch (Exception ex) { errorMessage += "\n" + ex.Message; }
ftpReader.Close();
ftpStream.Close();
ftpResponse.Close();
ftpRequest = null;
try { string[] directoryList = directoryRaw.Split("|".ToCharArray()); return directoryList; }
catch (Exception ex) { errorMessage += "\n" + ex.Message; }
}
catch (Exception ex) { errorMessage = ex.Message; Console.WriteLine(ex.ToString()); }
return new string[] { "" };
}
/// <summary>
/// 폴더 및 파일의 정보를 상세하게 표시합니다.
/// </summary>
/// <param name="directory"></param>
/// <returns></returns>
public FTPdirectory ListDirectoryDetail(string directory)
{
FtpWebRequest ftpRequest = null;
FtpWebResponse ftpResponse = null;
Stream ftpStream = null;
errorMessage = string.Empty;
try
{
var url = CombineUrl(directory, false);
if (url.EndsWith("/") == false) url += "/";
ftpRequest = (FtpWebRequest)WebRequest.Create(url);
ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword);
ftpRequest.UsePassive = true;
ftpRequest.UseBinary = true;
ftpRequest.KeepAlive = false;
ftpRequest.ReadWriteTimeout = this.timeout;
ftpRequest.ReadWriteTimeout = 30000;
ftpRequest.Timeout = 30000;
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
ftpStream = ftpResponse.GetResponseStream();
StreamReader ftpReader = new StreamReader(ftpStream, this.TextEncoding);
string directoryRaw = null;
try { while (ftpReader.Peek() != -1) { directoryRaw += ftpReader.ReadLine() + "\r"; } }
catch (Exception ex) { errorMessage += "\n" + ex.Message; }
ftpReader.Close();
ftpStream.Close();
ftpResponse.Close();
ftpRequest = null;
directoryRaw = directoryRaw.Replace("\r\n", "\r").TrimEnd((char)0x0D);
return new FTPdirectory(directoryRaw, directory);
}
catch (Exception ex) { errorMessage += "\n" + ex.Message; }
return null;
}
#region "utillity"
/// <summary>
/// Url을 Host와 결합하여 생성
/// </summary>
/// <param name="file">경로명</param>
/// <param name="isfile">파일인지 여부</param>
/// <returns></returns>
string CombineUrl(string file, bool isfile = true)
{
file = file.Replace("\\", "/");
string url = this.Host;
if (this.Host.ToLower().StartsWith("ftp://") == false) url = "ftp://" + url;
if (url.Substring(5).LastIndexOf(':') == -1)
url += ":" + this.Port.ToString();
if (this.Host.EndsWith("/")) url = this.Host.Substring(0, Host.Length - 1);
if (file.StartsWith("/"))
url = url + System.Web.HttpUtility.UrlPathEncode(file);
else
url = url + "/" + System.Web.HttpUtility.UrlPathEncode(file);
url = url.Replace("#", "%23");
if (isfile)
return url;
else
return url + "/";
}
public string PathCombine(string path, string add)
{
var newpath = string.Empty;
if (path.EndsWith("/")) newpath = path + add;
else newpath = path + "/" + add;
if (!newpath.EndsWith("/")) newpath += '/';
return newpath;
}
public string PathFileCombine(string path, string add)
{
var newpath = string.Empty;
if (path.EndsWith("/")) newpath = path + add;
else newpath = path + "/" + add;
if (newpath.EndsWith("/")) newpath = newpath.Substring(0, newpath.Length - 1);
return newpath;
}
public string getParent(string path)
{
if (path == "/") return path;
else if (path == "") return "/";
else
{
//서브폴더를 찾아서 처리해준다.
if (path.IndexOf('/') == -1) return "/";
else
{
if (path.EndsWith("/")) path = path.Substring(0, path.Length - 1);
var slashindex = path.LastIndexOf('/');
var parent = path.Substring(0, slashindex);
if (!parent.EndsWith("/")) parent += '/';
return parent;
}
}
}
public void RaiseMessage(Boolean isError, string message)
{
if (isError) errorMessage = message; //170920
if (Message != null) Message(this, new MessageEventArgs(isError, message));
}
#endregion
}
}

View File

@@ -0,0 +1,95 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AR.FTPClient
{
/// <summary>
/// ''' Stores a list of files and directories from an FTP result
/// ''' </summary>
/// ''' <remarks></remarks>
public class FTPdirectory : List<FTPfileInfo>
{
public FTPdirectory()
{
}
/// <summary>
/// ''' Constructor: create list from a (detailed) directory string
/// ''' </summary>
/// ''' <param name="dir">directory listing string</param>
/// ''' <param name="path"></param>
/// ''' <remarks></remarks>
public FTPdirectory(string dir, string path)
{
var lines = dir.Replace("\n","").Split('\r');
foreach (var line in lines)
{
if (line != "")
this.Add(new FTPfileInfo(line, path));
}
}
/// <summary>
/// ''' Filter out only files from directory listing
/// ''' </summary>
/// ''' <param name="ext">optional file extension filter</param>
/// ''' <returns>FTPdirectory listing</returns>
public FTPdirectory GetFiles(string ext = "")
{
return this.GetFileOrDir(FTPfileInfo.DirectoryEntryTypes.File, ext);
}
/// <summary>
/// ''' Returns a list of only subdirectories
/// ''' </summary>
/// ''' <returns>FTPDirectory list</returns>
/// ''' <remarks></remarks>
public FTPdirectory GetDirectories()
{
return this.GetFileOrDir(FTPfileInfo.DirectoryEntryTypes.Directory);
}
// internal: share use function for GetDirectories/Files
private FTPdirectory GetFileOrDir(FTPfileInfo.DirectoryEntryTypes type, string ext = "")
{
FTPdirectory result = new FTPdirectory();
foreach (FTPfileInfo fi in this)
{
if (fi.FileType == type)
{
if (ext == "")
result.Add(fi);
else if (ext == fi.Extension)
result.Add(fi);
}
}
return result;
}
public bool FileExists(string filename)
{
foreach (FTPfileInfo ftpfile in this)
{
if (ftpfile.Filename == filename)
return true;
}
return false;
}
private const char slash = '/';
public static string GetParentDirectory(string dir)
{
string tmp = dir.TrimEnd(slash);
int i = tmp.LastIndexOf(slash);
if (i > 0)
return tmp.Substring(0, i - 1);
else
throw new ApplicationException("No parent for root");
}
}
}

View File

@@ -0,0 +1,216 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace AR.FTPClient
{
/// <summary>
/// ''' Represents a file or directory entry from an FTP listing
/// ''' </summary>
/// ''' <remarks>
/// ''' This class is used to parse the results from a detailed
/// ''' directory list from FTP. It supports most formats of
/// ''' </remarks>
public class FTPfileInfo
{
// Stores extended info about FTP file
public string FullName
{
get
{
var retval = Path + "/" + Filename;
return retval.Replace("//", "/");
}
}
public string Filename
{
get
{
return _filename;
}
}
public string Path
{
get
{
return _path;
}
}
public DirectoryEntryTypes FileType
{
get
{
return _fileType;
}
}
public long Size
{
get
{
return _size;
}
}
public DateTime FileDateTime
{
get
{
return _fileDateTime;
}
}
public string Permission
{
get
{
return _permission;
}
}
public string Extension
{
get
{
int i = this.Filename.LastIndexOf(".");
if (i >= 0 & i < (this.Filename.Length - 1))
return this.Filename.Substring(i + 1);
else
return "";
}
}
public string NameOnly
{
get
{
int i = this.Filename.LastIndexOf(".");
if (i > 0)
return this.Filename.Substring(0, i);
else
return this.Filename;
}
}
private string _filename;
private string _path;
private DirectoryEntryTypes _fileType;
private long _size;
private DateTime _fileDateTime;
private string _permission;
/// <summary>
/// ''' Identifies entry as either File or Directory
/// ''' </summary>
public enum DirectoryEntryTypes
{
File,
Directory,
Link
}
/// <summary>
/// ''' Constructor taking a directory listing line and path
/// ''' </summary>
/// ''' <param name="line">The line returned from the detailed directory list</param>
/// ''' <param name="path">Path of the directory</param>
/// ''' <remarks></remarks>
public FTPfileInfo(string line, string path)
{
// parse line
Match m = GetMatchingRegex(line);
if (m == null)
// failed
throw new ApplicationException("Unable to parse line: " + line);
else
{
_filename = m.Groups["name"].Value;
_path = path;
_permission = m.Groups["permission"].Value;
string _dir = m.Groups["dir"].Value;
if ((_dir != "" & (_dir == "d" || _dir == "D")))
{
_fileType = DirectoryEntryTypes.Directory;
_size = 0; // CLng(m.Groups("size").Value)
}
else if ((_dir != "" & (_dir == "l" || _dir == "L")))
{
_fileType = DirectoryEntryTypes.Link;
_size = 0; // CLng(m.Groups("size").Value)
}
else
{
_fileType = DirectoryEntryTypes.File;
_size = System.Convert.ToInt64(m.Groups["size"].Value);
}
try
{
var timestamp = m.Groups["timestamp"].Value;
if (timestamp.IndexOf(':') == -1)
{
_fileDateTime = DateTime.Parse(timestamp);
}
else
{
_fileDateTime = DateTime.Parse(DateTime.Now.Year + " " + timestamp);
}
}
catch
{
// MsgBox("datetime err=" & Now.Year & Space(1) & "value=" & m.Groups("timestamp").Value & vbCrLf & ex.Message.ToString)
_fileDateTime = DateTime.Parse("1982-11-23");
}
}
}
public FTPfileInfo(string filename, string permission, string dir, int size, DateTime filetime, Boolean isdir, string path)
{
_filename = filename;// m.Groups["name"].Value;
_path = path;
_permission = permission; // m.Groups["permission"].Value;
string _dir = dir;// m.Groups["dir"].Value;
if (isdir == true)
{
_fileType = DirectoryEntryTypes.Directory;
_size = 0; // CLng(m.Groups("size").Value)
}
else
{
_fileType = DirectoryEntryTypes.File;
_size = size;//
}
_fileDateTime = filetime;
}
private Match GetMatchingRegex(string line)
{
Regex rx;
Match m;
for (int i = 0; i <= _ParseFormats.Length - 1; i++)
{
rx = new Regex(_ParseFormats[i]);
m = rx.Match(line);
if (m.Success)
return m;
}
return null;
}
/// <summary>
/// ''' List of REGEX formats for different FTP server listing formats
/// ''' </summary>
/// ''' <remarks>
/// ''' The first three are various UNIX/LINUX formats, fourth is for MS FTP
/// ''' in detailed mode and the last for MS FTP in 'DOS' mode.
/// ''' I wish VB.NET had support for Const arrays like C# but there you go
/// ''' </remarks>
private static string[] _ParseFormats = new[] { @"(?<dir>[\-dl])(?<permission>([\-r][\-w][\-xs]){3})\s+\d+\s+\w+\s+\w+\s+(?<size>\d+)\s+(?<timestamp>\w+\s+\d+\s+\d{4})\s+(?<name>.+)", @"(?<dir>[\-dl])(?<permission>([\-r][\-w][\-xs]){3})\s+\d+\s+\d+\s+(?<size>\d+)\s+(?<timestamp>\w+\s+\d+\s+\d{4})\s+(?<name>.+)", @"(?<dir>[\-dl])(?<permission>([\-r][\-w][\-xs]){3})\s+\d+\s+\d+\s+(?<size>\d+)\s+(?<timestamp>\w+\s+\d+\s+\d{1,2}:\d{2})\s+(?<name>.+)", @"(?<dir>[\-dl])(?<permission>([\-r][\-w][\-xs]){3})\s+\d+\s+\w+\s+\w+\s+(?<size>\d+)\s+(?<timestamp>\w+\s+\d+\s+\d{1,2}:\d{2})\s+(?<name>.+)", @"(?<dir>[\-dl])(?<permission>([\-r][\-w][\-xs]){3})(\s+)(?<size>(\d+))(\s+)(?<ctbit>(\w+\s\w+))(\s+)(?<size2>(\d+))\s+(?<timestamp>\w+\s+\d+\s+\d{2}:\d{2})\s+(?<name>.+)", @"(?<timestamp>\d{2}\-\d{2}\-\d{2}\s+\d{2}:\d{2}[Aa|Pp][mM])\s+(?<dir>\<\w+\>){0,1}(?<size>\d+){0,1}\s+(?<name>.+)" };
}
}

View File

@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AR.FTPClient
{
public interface IFTPClient
{
void Dispose();
string errorMessage { get; set; }
//string Host { get; set; }
//string UserID { get; set; }
//string UserPassword { get; set; }
//int Port { get; set; }
System.Text.Encoding TextEncoding { get; set; }
Boolean Download(string remoteFile, string localFile,bool overwrite=false);
Boolean Upload(string remoteFile, string localFile);
Boolean Delete(string remotefile);
Boolean rename(string currentFileNameAndPath, string newFileName);
bool createDirectory(string newDirectory);
bool RemoveDirectory(string Directory);
string getFileCreatedDateTime(string fileName);
string getFileSize(string fileName);
string[] directoryListSimple(string directory);
FTPdirectory ListDirectoryDetail(string directory);
event EventHandler<MessageEventArgs> Message;
event EventHandler<ListProgressEventArgs> ListPrgress;
void RaiseMessage(Boolean isError, string message);
string PathCombine(string path, string add);
string PathFileCombine(string path, string add);
string getParent(string path);
}
}

View File

@@ -0,0 +1,117 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Project.Class
{
public class JobData
{
public enum ErrorCode
{
None = 0,
BarcodeRead,
Print,
Camera,
}
public ErrorCode error = ErrorCode.None;
public int No { get; set; }
public VisionData VisionData;
public DateTime JobStart
{
get
{
if (this.VisionData == null) return new DateTime(1982, 11, 23);
else return VisionData.STime;
}
}
public DateTime JobEnd;
public TimeSpan JobRun
{
get
{
if (JobEnd.Year == 1982) return new TimeSpan(0);
else if (JobStart.Year == 1982) return new TimeSpan(0);
else return JobEnd - JobStart;
}
}
/// <summary>
/// 프린터에 명령을 전송한 시간
/// </summary>
public DateTime PrintTime { get; set; }
/// <summary>
/// 라벨을 추가한 시간
/// </summary>
public DateTime Attachtime { get; set; }
//작업데이터의 GUID(자료식별)
public string guid { get; private set; }
//언로더포트위치(L/R)
public string PortPos;
//동작관련 메세지
public string Message;
int idx;
public JobData(int idx_)
{
this.idx = idx_;
Clear("INIT");
}
public bool PrintAttach { get; set; }
public bool PrintQRValid { get; set; }
public string PrintQRValidResult { get; set; }
public void Clear(string source)
{
No = 0;
//JobStart = new DateTime(1982, 11, 23);
JobEnd = new DateTime(1982, 11, 23);
Attachtime = new DateTime(1982, 11, 23);
PortPos = string.Empty;
guid = Guid.NewGuid().ToString();
Message = string.Empty;
if (VisionData == null)
VisionData = new VisionData(source);
else
VisionData.Clear(source, false);
PrintAttach = false;
PrintQRValid = false;
PrintQRValidResult = string.Empty;
PrintTime = new DateTime(1982, 11, 23);
PUB.AddDebugLog($"item data {idx} clear by {source} guid={guid}");
}
public void CopyTo(ref JobData obj)
{
if (obj == null) return;
obj.No = this.No;
obj.error = this.error;
obj.JobEnd = this.JobEnd;
obj.guid = this.guid;
obj.PortPos = this.PortPos;
obj.Message = this.Message;
obj.PrintAttach = this.PrintAttach;
obj.PrintQRValid = this.PrintQRValid;
obj.PrintQRValidResult = this.PrintQRValidResult;
obj.Attachtime = this.Attachtime;
obj.PrintTime = this.PrintTime;
PUB.AddDebugLog("아이템 복사 전 rid:" + this.VisionData.RID);
this.VisionData.CopyTo(ref obj.VisionData);
PUB.AddDebugLog($"아이템 복사 후 대상 rid : {obj.VisionData.RID}, guid={obj.guid}");
}
}
}

View File

@@ -0,0 +1,275 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using HidSharp;
using HidSharp.Reports;
using HidSharp.Reports.Encodings;
namespace arDev.Joystick
{
public class JoystickRaw : IDisposable
{
HidDevice _dev;
HidStream _hidStream;
public Boolean IsOpen { get; private set; }
public event EventHandler Disconnected;
public event EventHandler Connected;
public event EventHandler Changed;
public delegate void MessageHandler(string msg);
public event MessageHandler Message;
public int InputLength { get; private set; }
public int OutputLength { get; private set; }
public int FeatureLength { get; private set; }
public int vid { get; set; }
public int pid { get; set; }
public Boolean[] Buttons = new bool[64]; //버튼정보를 기록한다
Boolean bListUpdate = false;
public JoystickRaw()
{
vid = -1;
pid = -1;
this.InputLength = 0;
this.OutputLength = 0;
this.FeatureLength = 0;
this.IsOpen = false;
this._dev = null;
this._hidStream = null;
DeviceList.Local.Changed += Local_Changed;
Job = new Task(JobMain, ct);
Job.Start();
for (int i = 0; i < Buttons.Length; i++)
Buttons[i] = false;
}
CancellationToken ct ;
public IEnumerable<HidDevice> GetHidDevices()
{
return DeviceList.Local.GetHidDevices();
}
public void Connect(int vid, int pid)
{
this.vid = vid;
this.pid = pid;
}
public void Connect(HidDevice device)
{
this.vid = device.VendorID;
this.pid = device.ProductID;
}
Task Job = null;
private bool disposed = false;
DateTime LastConnTime = DateTime.Now;
void JobMain()
{
//개체가 소멸하기전까지 진행한다
while (this.disposed == false)
{
if (IsOpen == false)
{
if (this.vid == -1 || this.pid == -1)
{
//아직설정되지 않았으니 대기를한다
System.Threading.Thread.Sleep(3000);
}
else
{
//연결작업을 시작해야한다
if (bListUpdate || (DateTime.Now - LastConnTime).TotalMilliseconds >= 3000)
{
LastConnTime = DateTime.Now;
//연결작업
var list = this.GetHidDevices();
this._dev = list.Where(t => t.VendorID == this.vid && t.ProductID == this.pid).FirstOrDefault();
if (_dev != null)
{
try
{
IsOpen = _dev.TryOpen(out _hidStream);
if (IsOpen)
{
this.InputLength = _dev.GetMaxInputReportLength();
this.OutputLength = _dev.GetMaxOutputReportLength();
this.FeatureLength = _dev.GetMaxFeatureReportLength();
this._hidStream.ReadTimeout = Timeout.Infinite;
Connected?.Invoke(this, null);
var rawReportDescriptor = _dev.GetRawReportDescriptor();
var msg = ("Report Descriptor:");
msg += string.Format(" {0} ({1} bytes)", string.Join(" ", rawReportDescriptor.Select(d => d.ToString("X2"))), rawReportDescriptor.Length);
Message?.Invoke(msg);
}
else
{
if (this._hidStream != null) this._hidStream.Dispose();
}
}
catch { System.Threading.Thread.Sleep(1500); }
}
else System.Threading.Thread.Sleep(1500);
}
else System.Threading.Thread.Sleep(1500);
}
}
else
{
//데이터를 가지고 온다
using (_hidStream)
{
try
{
reportDescriptor = _dev.GetReportDescriptor();
deviceItem = reportDescriptor.DeviceItems[0];
var inputReportBuffer = new byte[_dev.GetMaxInputReportLength()];
var inputReceiver = reportDescriptor.CreateHidDeviceInputReceiver();
var inputParser = deviceItem.CreateDeviceItemInputParser();
inputReceiver.Start(_hidStream);
while (true)
{
if (!inputReceiver.IsRunning) { break; } // Disconnected?
Report report; //
while (inputReceiver.TryRead(inputReportBuffer, 0, out report))
{
if (inputParser.TryParseReport(inputReportBuffer, 0, report))
{
WriteDeviceItemInputParserResult(inputParser);
}
}
System.Threading.Thread.Sleep(20);
}
inputReceiver = null;
IsOpen = false;
}
catch (Exception ex)
{
Message?.Invoke(ex.Message);
}
finally
{
Disconnected?.Invoke(this, null);
IsOpen = false;
}
}
}
}
}
void WriteDeviceItemInputParserResult(HidSharp.Reports.Input.DeviceItemInputParser parser)
{
while (parser.HasChanged)
{
int changedIndex = parser.GetNextChangedIndex();
var previousDataValue = parser.GetPreviousValue(changedIndex);
var dataValue = parser.GetValue(changedIndex);
var oVal = previousDataValue.GetPhysicalValue();
var nVal = dataValue.GetPhysicalValue();
if (double.IsNaN(oVal)) oVal = 0.0;
if (double.IsNaN(nVal)) nVal = 0.0;
var InputMethod = (Usage)dataValue.Usages.FirstOrDefault();
if (InputMethod.ToString().StartsWith("Button"))
{
var butNo = int.Parse(InputMethod.ToString().Substring(6));
this.Buttons[butNo - 1] = nVal > 0; //버튼값은 기록 210107
}
//이벤트발생
InputChanged?.Invoke(this, new InputChangedEventHandler(
InputMethod, oVal, nVal));
//메세지도 발생함
//var msg = (string.Format(" {0}: {1} -> {2}",
// (Usage)dataValue.Usages.FirstOrDefault(),
// previousDataValue.GetPhysicalValue(),
// dataValue.GetPhysicalValue()));
//Message?.Invoke(msg);
}
}
public event EventHandler<InputChangedEventHandler> InputChanged;
public class InputChangedEventHandler : EventArgs
{
public Usage input { get; set; }
public double oldValue { get; set; }
public double newValue { get; set; }
public InputChangedEventHandler(Usage input_, double oValue_, double nValue_)
{
this.input = input_;
this.oldValue = oValue_;
this.newValue = nValue_;
}
}
ReportDescriptor reportDescriptor;
DeviceItem deviceItem;
~JoystickRaw()
{
Dispose(false);
}
public void Dispose()
{
Dispose(true);
// This object will be cleaned up by the Dispose method.
// Therefore, you should call GC.SupressFinalize to
// take this object off the finalization queue
// and prevent finalization code for this object
// from executing a second time.
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
// Check to see if Dispose has already been called.
if (!this.disposed)
{
// If disposing equals true, dispose all managed
// and unmanaged resources.
if (disposing)
{
// Dispose managed resources.
this._dev = null;
}
Job.Wait();
Job.Dispose();
// Call the appropriate methods to clean up
// unmanaged resources here.
// If disposing is false,
// only the following code is executed.
//CloseHandle(handle);
//handle = IntPtr.Zero;
// Note disposing has been done.
DeviceList.Local.Changed -= Local_Changed;
disposed = true;
}
}
private void Local_Changed(object sender, DeviceListChangedEventArgs e)
{
Changed?.Invoke(sender, e);
bListUpdate = true;
}
}
}

View File

@@ -0,0 +1,105 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
namespace Project.Class
{
public class KeyenceBarcodeData
{
public double Angle { get; set; }
public StdLabelPrint.CAmkorSTDBarcode AmkorData { get; set; }
public Point[] vertex { get; set; }
public string Data { get; set; }
public Point CenterPX { get; set; }
public bool Ignore { get; set; }
/// <summary>
/// 1:QR, 11:Code 128(like 1D)
/// </summary>
public string barcodeSymbol { get; set; }
public string barcodeSource { get; set; } //230503
public Boolean UserActive { get; set; }
public Boolean isSTDBarcode
{
get
{
if (AmkorData != null && barcodeSymbol == "1" && AmkorData.isValid) return true;
return false;
}
}
public Boolean isNewLen15
{
get
{
if (AmkorData != null && barcodeSymbol == "1" && AmkorData.isValid && AmkorData.NewLen15Barcode) return true;
return false;
}
}
/// <summary>
/// 라벨의 위치를 표시한다. 8방향이며 키패드 유사하게 설정한다 789/4-6/123
/// </summary>
public byte LabelPosition { get; set; }
/// <summary>
/// regex check ok
/// </summary>
public Boolean RegExConfirm { get; set; }
public Boolean RefExApply { get; set; }
public KeyenceBarcodeData()
{
LabelPosition = 0;
Angle = 0.0;
Data = string.Empty;
CenterPX = Point.Empty;
AmkorData = null;
vertex = null;
barcodeSymbol = string.Empty;
UserActive = false;
RegExConfirm = false;
Ignore = false;
barcodeSource = string.Empty;
}
public override string ToString()
{
return string.Format("{0},Deg={1},Center={2}x{3}", Data, Angle, CenterPX.X, CenterPX.Y);
}
/// <summary>
/// 해당 중심점이 겹치는지 확인합니다.
/// </summary>
/// <param name="Center"></param>
/// <returns></returns>
public Boolean CheckIntersect(Point Center, string data)
{
if (data == null) return false;
if (data.Equals(this.Data) == false) return false; //자료가 다르면 다른 자료로 처리한다
return getInside(Center, vertex);
}
bool getInside(Point pt, Point[] ptArr)
{
int crosses = 0;
for (int i = 0; i < ptArr.Length; i++)
{
int j = (i + 1) % ptArr.Length;
if ((ptArr[i].Y > pt.Y) != (ptArr[j].Y > pt.Y))
{
//atX는 점 B를 지나는 수평선과 선분 (p[i], p[j])의 교점
double atX = (ptArr[j].X - ptArr[i].X) * (pt.Y - ptArr[i].Y) / (ptArr[j].Y - ptArr[i].Y) + ptArr[i].X;
//atX가 오른쪽 반직선과의 교점이 맞으면 교점의 개수를 증가시킨다.
if (pt.X < atX)
crosses++;
}
}
return crosses % 2 > 0;
}
}
}

View File

@@ -0,0 +1,131 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.ComponentModel;
using System.Web.Services.Protocols;
namespace Project
{
public class ModelInfoM
{
//스피드 값과, 위치값을 저장하면 된다.
public int idx { get; set; }
public string Title { get; set; }
public Dictionary<int, PositionData[]> Position { get; set; }
public ModelInfoM()
{
idx = -1;
Title = string.Empty;
ClearDataPosition();
}
void ClearDataPosition()
{
Position = new Dictionary<int, PositionData[]>();
var motCount = Enum.GetNames(typeof(eAxis)).Length;
for (int i = 0; i < motCount; i++)
{
var datas = new PositionData[64];
for (int j = 0; j < datas.Length; j++)
datas[j] = new PositionData(-1, string.Empty, 0.0);
Position.Add(i, datas);
}
}
public Boolean isSet
{
get
{
if (idx == -1) return false;
else return !Title.isEmpty();
}
}
public void ReadValue(DataSet1.MCModelRow dr)
{
idx = dr.idx;
Title = dr.Title;
ReadValuePosition(idx);
}
public void ReadValue(int index)
{
var dr = PUB.mdm.dataSet.MCModel.Where(t => t.idx == index).FirstOrDefault();
if (dr == null)
{
idx = -1;
Title = string.Empty;
ClearDataPosition();
}
else
{
idx = dr.idx;
Title = dr.Title;
ReadValuePosition(idx);
}
}
public Boolean ReadValue(string title)
{
return ReadValue(title, PUB.mdm.dataSet.MCModel);
}
public Boolean ReadValue(string title, DataSet1.MCModelDataTable dt)
{
var dr = dt.Where(t => t.Title == title).FirstOrDefault();
if (dr == null)
{
idx = -1;
this.Title= string.Empty;
ClearDataPosition();
return false;
}
else
{
idx = dr.idx;
this.Title = dr.Title;
ReadValuePosition(idx);
return true;
}
}
public void ReadValuePosition(int modelidx)
{
ReadValuePosition(modelidx, PUB.mdm.dataSet.MCModel);
}
public void ReadValuePosition(int modelidx, DataSet1.MCModelDataTable dt)
{
ClearDataPosition();
//각 모터별로 데이터를 가져온다
int cnt = 0;
foreach (var data in Position)
{
//해당 모터의 속도값을 가져온다
var drows = dt.Where(t => t.pidx == modelidx && t.PosIndex >= 0 && t.MotIndex == data.Key);
foreach (DataSet1.MCModelRow dr in drows)
{
var item = data.Value[dr.PosIndex];
item.index = dr.PosIndex;
item.title = dr.PosTitle;
item.value = dr.Position;
item.speed = dr.Speed;
item.acc = dr.SpeedAcc;
item.dcc = dr.SpeedDcc;
data.Value[dr.PosIndex] = item;
cnt += 1;
}
}
PUB.log.Add(String.Format("Motion({0}) Data Load : {1}", modelidx, cnt));
}
}
}

View File

@@ -0,0 +1,229 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.ComponentModel;
namespace Project
{
public class ModelInfoV
{
[Browsable(false)]
public string SPN { get; set; }
//[Browsable(false)]
//public Boolean SplitSPN { get; set; }
[Browsable(false)]
public string Title { get; set; }
[Browsable(false)]
public string Code { get; set; }
[Browsable(false)]
public int idx { get; set; }
public string Motion { get; set; }
public Boolean BCD_1D { get; set; }
public Boolean BCD_QR { get; set; }
public Boolean BCD_DM { get; set; }
public UInt16 vOption { get; set; }
public UInt16 vSIDInfo { get; set; }
public UInt16 vJobInfo { get; set; }
public UInt16 vSIDConv1 { get; set; }
public string Def_Vname { get; set; }
public string Def_MFG { get; set; }
public Boolean IgnoreOtherBarcode { get; set; }
public bool DisableCamera { get; set; }
public bool DisablePrinter { get; set; }
public bool CheckSIDExsit { get; set; }
//public string ByPassSID { get; set; }
public ModelInfoV()
{
vOption = vSIDInfo = vJobInfo = vSIDConv1 = 0;
}
public void ReadValue(DataSet1.OPModelRow dr)
{
this.Title = dr.Title;
this.Code = dr.Code;
this.idx = dr.idx;
this.Motion = dr.Motion;
this.BCD_1D = dr.BCD_1D;
this.BCD_QR = dr.BCD_QR;
this.BCD_DM = dr.BCD_DM;
this.vOption = dr.vOption;
this.vJobInfo = dr.vJobInfo;
this.vSIDInfo = dr.vSIDInfo;
this.vSIDConv1 = dr.vSIDConv;
this.Def_MFG = dr.Def_MFG;
this.Def_Vname = dr.Def_VName;
this.IgnoreOtherBarcode = dr.IgnoreOtherBarcode;
this.DisableCamera = dr.DisableCamera;
this.DisablePrinter = dr.DisablePrinter;
this.CheckSIDExsit = dr.CheckSIDExsit;
//this.ByPassSID = dr.ByPassSID;
}
public bool WriteValue()
{
var model = PUB.mdm.GetDataV(this.Title);
return WriteValue(ref model);
}
public bool WriteValue(ref DataSet1.OPModelRow dr)
{
try
{
dr.Title = this.Title;
dr.Code = this.Code;
dr.Motion = this.Motion;
dr.BCD_1D = this.BCD_1D;
dr.BCD_QR = this.BCD_QR;
dr.BCD_DM = this.BCD_DM;
dr.vOption = this.vOption;
dr.vSIDInfo = this.vSIDInfo;
dr.vJobInfo = this.vJobInfo;
dr.vSIDConv = this.vSIDConv1;
dr.Def_MFG = this.Def_MFG;
dr.Def_VName = this.Def_Vname;
dr.IgnoreOtherBarcode = this.IgnoreOtherBarcode;
dr.DisableCamera = this.DisableCamera;
dr.DisablePrinter = this.DisablePrinter;
dr.CheckSIDExsit = this.CheckSIDExsit;
dr.EndEdit();
PUB.mdm.SaveModelV();
return true;
}
catch (Exception ex)
{
PUB.log.AddE("write model error" + ex.Message);
return false;
}
}
}
[TypeConverterAttribute(typeof(ExpandableObjectConverter))]
public class RoiOffset
{
[DisplayName("Horizon"), Description("수직(Y축) 변화 값(+는 아래쪽,-는 위쪽)")]
public double Y { get; set; }
[DisplayName("Vertical"), Description("수평(X축) 변화 값(+는 오른쪽,-는 왼쪽)")]
public double X { get; set; }
[Browsable(false)]
public bool IsEmpty { get { if (Y == 0 && X == 0) return true; else return false; } }
public RoiOffset(double start = 0.0, double end = 0.0)
{
this.Y = start;
this.X = end;
}
public override string ToString()
{
return string.Format("{0},{1}", Y, X);
}
public string toPointStr()
{
return string.Format("{0};{1}", Y, X);
}
}
[TypeConverterAttribute(typeof(ExpandableObjectConverter))]
public class Range
{
[DisplayName("시작값")]
public uint Start { get; set; }
[DisplayName("종료값")]
public uint End { get; set; }
[Browsable(false)]
public bool IsEmpty { get { if (Start == 0 && End == 0) return true; else return false; } }
public Range(UInt16 start, UInt16 end) : this((uint)start, (uint)end) { }
public Range(uint start = 0, uint end = 0)
{
this.Start = start;
this.End = end;
}
public static implicit operator RangeF(Range p)
{
return new RangeF((float)p.Start, (float)p.End);
}
public override string ToString()
{
return string.Format("{0}~{1}", Start, End);
}
}
[TypeConverterAttribute(typeof(ExpandableObjectConverter))]
public class RangeF
{
[DisplayName("시작값")]
public float Start { get; set; }
[DisplayName("종료값")]
public float End { get; set; }
[Browsable(false)]
public bool IsEmpty { get { if (Start == 0f && End == 0f) return true; else return false; } }
public RangeF(float start = 0f, float end = 0f)
{
this.Start = start;
this.End = end;
}
public static implicit operator Range(RangeF p)
{
return new Range((uint)p.Start, (uint)p.End);
}
public override string ToString()
{
return string.Format("{0}~{1}", Start, End);
}
}
[TypeConverterAttribute(typeof(ExpandableObjectConverter))]
public class CVisionProcess
{
[Category("특수설정(개발자용)"), Description("미사용(DOT 인식시에 사용했음)")]
public UInt16 halfKernel { get; set; }
[Category("특수설정(개발자용)"), Description("미사용(DOT 인식시에 사용했음)")]
public UInt16 Constant { get; set; }
[Category("특수설정(개발자용)"), DisplayName("MP_Dilate"), Description("미사용(DOT 인식시에 사용했음)")]
public UInt16 dilate { get; set; }
[Category("특수설정(개발자용)"), DisplayName("MP_Erode"), Description("미사용(DOT 인식시에 사용했음)")]
public UInt16 erode { get; set; }
[Category("특수설정(개발자용)"), DisplayName("MP_Open"), Description("미사용(DOT 인식시에 사용했음)")]
public UInt16 open { get; set; }
[Category("특수설정(개발자용)"), DisplayName("MP_Open"), Description("미사용(DOT 인식시에 사용했음)")]
public UInt32 segment_threshold { get; set; }
[Category("특수설정(개발자용)"), DisplayName("MP_Open"), Description("미사용(DOT 인식시에 사용했음)")]
public Boolean isBlack { get; set; }
[Category("특수설정(개발자용)"), DisplayName("MP_Open"), Description("미사용(DOT 인식시에 사용했음)")]
public UInt32 judg_runcount { get; set; }
[Category("유닛 감지"), DisplayName("밝기 기준값"), Description("입력된 값 이상의 데이터를 취합니다. 이 값이 낮을 수록 검출값이 높아지게 됩니다. 이 기준값으로 검출된 값으로 판정을 합니다. 유닛은 밝은 데이터를 보고 판정 하므로 이 기준값 이상의 데이터가 검출이 됩니다")]
public byte detect_threhosld { get; set; }
[Category("유닛 감지"), DisplayName("판정 기준값"), Description("판정을 하는 기준 값입니다. 밝기기준값으로 인해 검출된 값이 5000이라면. 이 판정 기준에 입력된 값이 5000보다 크면 유닛이 존재하는 것으로 판정하며, 그 보다 낮을 때에는 유닛이 없는 'Empty' 유닛으로 감지 됩니다")]
public UInt16 detect_count { get; set; }
[Category("유닛 감지"), DisplayName("*예외영역 판정기준"), Description("빈 유닛(=Empty) 일때 셔틀 프레임의 빛 반사가 심할 경우 해당 반사값에 의해 유닛이 감지됩니다. 그러한 데이터를 제거하기위해 이 값이 사용되며, 유닛검출에 사용하는 흰색영역의 값외에 추가로 검은색 덩어리를 검사합니다. 설정한 값사이의 검은색 덩어리가 검출되면 'Empty' 유닛으로 감지 됩니다")]
public Point detect_blobrange { get; set; }
[Category("2D 감지"), DisplayName("밝기 기준값"), Description("입력된 값 이하의 데이터를 취합니다. 이 값이 낮을 수록 검출값도 낮아지게 됩니다. 이 기준값으로 검출된 값으로 판정을 합니다. 2D는 어두운 데이터를 보고 판정 하므로 이 기준값 이하의 데이터가 검출이 됩니다")]
public byte detectDM_threhosld { get; set; }
[Category("2D 감지"), DisplayName("판정 기준값"), Description("판정을 하는 기준 값입니다. 밝기기준값으로 인해 검출된 값이 5000이라면. 이 판정 기준에 입력된 값이 5000보다 크면 ID가 존재하는 것으로 판정하며, 그 보다 낮을 때에는 ID가 없는 'New' 유닛으로 감지 됩니다")]
public UInt16 detectDM_count { get; set; }
public CVisionProcess()
{
}
public override string ToString()
{
return "비젼 설정 값";
}
}
}

View File

@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Project
{
public class PositionData
{
public int index { get; set; }
public string title { get; set; }
public double value { get; set; }
public double speed { get; set; }
public double acc { get; set; }
public double dcc { get; set; }
public PositionData()
{
index = -1;
title = string.Empty;
value = 0.0;
this.speed = 0.0;
this.acc = 100.0;
this.dcc = 0.0;
}
public PositionData(int idx_, string title_, double value_)
{
this.index = idx_;
this.title = title_;
this.value = value_;
}
}
}

View File

@@ -0,0 +1,74 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Project.Class
{
public class Reel
{
public string sid { get; set; }
public string lot { get; set; }
public string mfg { get; set; }
public int qty { get; set; }
public string id { get; set; }
//public string date { get; set; }
public string partnum { get; set; }
public string manu { get; set; }
public Reel()
{
Clear();
}
public void Clear()
{
sid = string.Empty;
lot = string.Empty;
mfg = string.Empty;
lot = string.Empty;
id = string.Empty;
//date = string.Empty;
partnum = string.Empty;
manu = string.Empty;
qty = 0;
}
public Reel(string _sid, string _lot, string _manu, int _qty, string _id, string _mfgdate, string _partnum)
{
int sidNum = 0;
if (int.TryParse(_sid, out sidNum) && sidNum.ToString().Length == 9)
sid = sidNum.ToString();
else
throw new Exception("SID가 숫자가 아니거나 9자리 숫자가 아닙니다.");
lot = _lot;
mfg = _mfgdate;
qty = _qty;
id = _id;
partnum = _partnum;
manu = _manu;
}
public Reel(string qrbarcodestr)
{
var spData = qrbarcodestr.Split(';');
if (spData.Length < 6)
throw new Exception("Barcode Length가 적습니다.");
sid = spData[0];
lot = spData[1];
manu = spData[2];
int _qty = 0;
if (int.TryParse(spData[3], out _qty))
qty = _qty;
else
throw new Exception("수량란에 숫자 정보가 아닙니다.");
id = spData[4];
mfg = spData[5];
if (spData.Length > 6) partnum = spData[6];
else partnum = string.Empty;
}
}
}

View File

@@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Project.Class
{
public class RegexPattern
{
public string Customer { get; set; }
public string Pattern { get; set; }
public string Description { get; set; }
public bool IsTrust { get; set; }
public bool IsAmkStd { get; set; }
public Boolean IsEnable { get; set; }
public RegexGroupMatch[] Groups { get; set; }
public string Symbol { get; set; }
public int Seq { get; set; }
public RegexPattern()
{
Seq = 0;
Groups = null;
Pattern = string.Empty;
Description = string.Empty;
Customer = string.Empty;
IsTrust = false;
IsAmkStd = false;
Symbol = string.Empty;
}
}
public class RegexGroupMatch
{
/// <summary>
/// 1~
/// </summary>
public int GroupNo { get; set; }
/// <summary>
/// RID,SID,VLOT,MFG,PART,QTY,CUST,CUSTCODE,VNAME,
/// </summary>
public string TargetPos { get; set; }
public RegexGroupMatch()
{
GroupNo = 0;
TargetPos = string.Empty;
}
}
}

View File

@@ -0,0 +1,184 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Project.Class
{
public enum eStatusMesage : byte
{
Front = 0,
Rear,
TopJig,
Main,
}
public class StatusMessage
{
Dictionary<eStatusMesage, StatusMessageFormat> message;
public StatusMessage()
{
this.message = new Dictionary<eStatusMesage, StatusMessageFormat>();
}
public StatusMessageFormat get(eStatusMesage msg)
{
lock (this.message)
{
if (this.message.ContainsKey(msg) == false)
{
var nemsg = new StatusMessageFormat
{
Message = string.Empty
};
this.message.Add(msg, nemsg);
return nemsg;
}
else
return this.message[msg];
}
}
public void Clear()
{
}
public void set(eStatusMesage msg, StatusMessageFormat data)
{
lock (this.message)
{
if (this.message.ContainsKey(msg) == false)
this.message.Add(msg, data);
else
this.message[msg] = data;
}
}
public void set(eStatusMesage msg, string data, int progval = 0, int progmax = 0)
{
if (data.StartsWith("[") && data.Contains("]"))
{
var buf = data.Split(']');
var cate = buf[0].Substring(1);
var body = string.Join("]", buf, 1, buf.Length - 1);
set(msg, cate, body, Color.Black, progval, progmax);
}
else set(msg, string.Empty, data, Color.Black, progval, progmax);
}
//public void set(eStatusMesage msg, string cate, string data, int progval = 0, int progmax = 0)
//{
// set(msg, cate, data, Color.Black, progval, progmax);
//}
public void set(eStatusMesage msg, string cate, string data, Color fColor, int progval = 0, int progmax = 0)
{
lock (this.message)
{
if (this.message.ContainsKey(msg) == false)
{
var nemsg = new StatusMessageFormat
{
Category = cate,
Message = data,
fColor = fColor,
ProgressMax = progmax,
ProgressValue = progval
};
this.message.Add(msg, nemsg);
}
else
{
var m = this.message[msg];
m.Category = cate;
m.Message = data;
m.fColor = fColor;
if (progval != 0 || progmax != 0)
{
m.ProgressValue = progval;
m.ProgressMax = progmax;
}
}
}
}
public void set(eStatusMesage msg, string data, Color fColor, Color bColor1, Color bColor2)
{
lock (this.message)
{
if (this.message.ContainsKey(msg) == false)
{
var nemsg = new StatusMessageFormat
{
Message = data,
fColor = fColor,
bColor1 = bColor1,
bColor2 = bColor2
};
this.message.Add(msg, nemsg);
}
else
{
var m = this.message[msg];
m.Message = data;
m.fColor = fColor;
m.bColor2 = bColor2;
m.bColor1 = bColor1;
}
}
}
}
public class StatusMessageFormat
{
public string Category { get; set; }
public string Message { get; set; }
public Color fColor { get; set; }
public Color bColor1 { get; set; }
public Color bColor2 { get; set; }
public int ProgressValue { get; set; }
public int ProgressMax { get; set; }
public int ProgressPerc
{
get
{
if (ProgressMax == 0 || ProgressValue == 0) return 0;
return (int)(ProgressValue / (ProgressMax * 1.0));
}
}
public StatusMessageFormat()
{
Clear();
}
void setMessage(string t, string m, Color c)
{
this.Category = t;
this.Message = m;
this.fColor = c;
}
void setMessage(string m, Color c)
{
this.Category = string.Empty;
this.Message = m;
this.fColor = c;
}
public void Clear()
{
ProgressValue = 0;
ProgressMax = 0;
Category = string.Empty;
Message = string.Empty;
fColor = Color.Black;
bColor1 = Color.White;
bColor2 = Color.White;
}
}
}

View File

@@ -0,0 +1,935 @@
using Emgu.CV.Structure;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Collections.Concurrent;
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace Project.Class
{
public class VisionData : INotifyPropertyChanged
{
public int RetryLoader { get; set; }
public List<string> bcdMessage { get; set; }
public Boolean LightOn { get; set; }
public DateTime STime; //비젼시작시간
public DateTime ETime; //비젼종료시간
public TimeSpan RunTime { get { return ETime - STime; } } //비젼동작시간
public DateTime GTime; //이미지수집시간
public string FileNameL; //로딩존 촬영
public string FileNameU; //언로딩존 촬영
public Boolean Complete;
//public Boolean AngleQR { get; set; }
//public Boolean AngleSTD { get; set; }
//public double Angle { get; set; }
//public Boolean IsAngleSet
//{
// get
// {
// if (AngleQR == false && AngleSTD == false && Angle == 0.0) return true;
// else return false;
// }
//}
/// <summary>
/// 부착위치에따른 추가회전
/// </summary>
public double PositionAngle { get; set; }
public double ApplyAngle { get; set; } //적용된 회전 각도
public Boolean NeedCylinderForward { get; set; } //부착시 실린더를 올려야하는가
public Boolean ApplyOffset { get; set; }
public Boolean BaseAngle(out string msg, out KeyenceBarcodeData bcd)
{
msg = string.Empty;
bcd = null;
//데이터없다면 회전하지 못한다.
if (this.barcodelist == null || this.barcodelist.Count < 1)
{
msg = "No barcode data";
return false;
}
//사용자가 확정한 코드를 우선으로 한다
KeyValuePair<string, Class.KeyenceBarcodeData> bcddata;
var bcdCanList = barcodelist.Where(t => t.Value.Ignore == false).ToList();
bcddata = bcdCanList.Where(t => t.Value.UserActive).FirstOrDefault();
if (bcddata.Value != null)
{
bcd = bcddata.Value;
msg = "User Active";
return true;
}
//표준바코드를 최우선 으로 사용
//15자리 기존 바코드는 angle 로 사용하지 않는다.
//이것은 각도가 일정치 않게 붙어지기 때문이다
bcddata = bcdCanList.Where(t => t.Value.isSTDBarcode && t.Value.isNewLen15 == false).FirstOrDefault();
if (bcddata.Value != null)
{
bcd = bcddata.Value;
msg = "STD Barcode";
return true;
}
//QR코드를 우선으로 사용 - return 릴은 적용하지 안게한다.
//RQ코드가 적용되지 않게한다 210824
bcddata = bcdCanList.Where(t => t.Value.barcodeSymbol == "1" && t.Value.isNewLen15 == false && t.Value.Data.EndsWith(";;;") == false && t.Value.Data.StartsWith("RQ") == false).FirstOrDefault();
if (bcddata.Value != null)
{
bcd = bcddata.Value;
msg = "QR Code";
return true;
}
//datamatrix, pdf417
bcddata = bcdCanList.Where(t => t.Value.barcodeSymbol != "11" && t.Value.barcodeSymbol != "6" && t.Value.Data.StartsWith("RQ") == false).FirstOrDefault();
if (bcddata.Value != null)
{
bcd = bcddata.Value;
return true;
}
//첫번쨰 아이템을 우선으로 사용
if (bcdCanList.Count == 1)
{
bcd = bcdCanList.First().Value;
msg = "Only One Barcode = " + bcd.Data;
return true;
}
else if (bcdCanList.Count > 1)
{
//여러개가 있음
bcddata = bcdCanList.Where(t => t.Value.barcodeSymbol == "0").FirstOrDefault();
if (bcd != null)
{
bcd = bcddata.Value;
msg = "1D Data";
return true;
}
else
{
bcd = bcdCanList.First().Value;//[0];
msg = $"first({bcd.barcodeSymbol}:{bcd.Data})";
return true;
}
}
else
{
bcd = null;
msg = "no data";
return false;
}
// angle = bcd.Angle;
//return true;
} //모션회전각도
public Boolean Ready { get; set; }
public Boolean ServerUpdate { get; set; }
public Boolean Confirm
{
get
{
return ConfirmAuto || ConfirmUser || ConfirmBypass;
}
}
public Boolean ConfirmUser { get; set; }
public Boolean ConfirmAuto { get; set; }
public bool ConfirmBypass { get; set; }
public Boolean ValidSkipbyUser { get; set; }
private string _rid = string.Empty;
private string _qty = string.Empty;
private string _qty0 = string.Empty;
private string _sid0 = string.Empty;
private string _sid = string.Empty;
private string _rid0 = string.Empty;
private string _vlot = string.Empty;
private string _vname = string.Empty;
private string _mfgdate = string.Empty;
private string _partno = string.Empty;
private string _custcode = string.Empty;
private string _custname = string.Empty;
private string _batch = string.Empty;
private string _qtymax = string.Empty;
private string _mcn = string.Empty;
public bool SID_Trust { get; set; }
public bool RID_Trust { get; set; }
public bool VLOT_Trust { get; set; }
public bool MFGDATE_Trust { get; set; }
public bool QTY_Trust { get; set; }
public bool PARTNO_Trust { get; set; }
public bool VNAME_Trust { get; set; }
public string Target { get; set; }
public string MCN
{
get { return _mcn; }
set { _mcn = value; OnPropertyChanged(); }
}
/// <summary>
/// Original QTY
/// </summary>
public string QTY0
{
get { return _qty0; }
set { _qty0 = value; OnPropertyChanged(); }
}
/// <summary>
/// Qty
/// </summary>
public string QTY
{
get { return _qty; }
set { _qty = value; OnPropertyChanged(); }
}
/// <summary>
/// QTY값이 RQ에서 입력된 데이터인가?
/// </summary>
public Boolean QTYRQ { get; set; }
public string RID0
{
get { return _rid0; }
set { _rid0 = value; OnPropertyChanged(); }
}
public string VLOT
{
get { return _vlot; }
set { _vlot = value; OnPropertyChanged(); }
}
public string VNAME
{
get { return _vname; }
set { _vname = value; OnPropertyChanged(); }
}
public string MFGDATE
{
get { return _mfgdate; }
set { _mfgdate = value; OnPropertyChanged(); }
}
public string PARTNO
{
get { return _partno; }
set { _partno = value; OnPropertyChanged(); }
}
/// <summary>
/// Original SID
/// </summary>
public string SID0
{
get { return _sid0; }
set { _sid0 = value; OnPropertyChanged(); }
}
public string BATCH
{
get
{
return _batch;
}
set
{
_batch = value; OnPropertyChanged();
}
}
public string QTYMAX
{
get
{
return _qtymax;
}
set
{
_qtymax = value; OnPropertyChanged();
}
}
public string SID
{
get { return _sid; }
set { _sid = value; OnPropertyChanged(); }
}
private void OnPropertyChanged([CallerMemberName] string caller = "")
{
PropertyChanged?.Invoke(this,
new PropertyChangedEventArgs(caller));
}
/// <summary>
/// Reel ID
/// </summary>
public string RID
{
get { return _rid; }
private set { _rid = value; OnPropertyChanged(); }
}
/// <summary>
/// 릴 ID를 설정합니다.trust 상태를 자동으로 true 값으로 전환합니다
/// </summary>
/// <param name="value"></param>
/// <param name="reason"></param>
public void SetRID(string value, string reason)
{
//값이 변경될때 로그에 변경
if (_rid.Equals(value) == false)
{
PUB.AddDebugLog(string.Format("RID 변경 {0} -> {1} by {2}", _rid, value, reason));
}
RID = value;
RID_Trust = true;
}
public Boolean RIDNew { get; set; }
public Boolean HASHEADER { get; set; }
public string CUSTCODE
{
get { return _custcode; }
set { _custcode = value; OnPropertyChanged(); }
}
public string CUSTNAME
{
get { return _custname; }
set { _custname = value; OnPropertyChanged(); }
}
/// <summary>
/// 데이터가 모두존재하는지 확인
/// </summary>
public Boolean DataValid
{
get
{
if (Confirm == false) return false;
return QTY.isEmpty() == false &&
SID.isEmpty() == false &&
RID.isEmpty() == false &&
VLOT.isEmpty() == false &&
VNAME.isEmpty() == false &&
MFGDATE.isEmpty() == false &&
PARTNO.isEmpty();
}
}
public Boolean PrintPositionCheck { get; set; }
public string PrintPositionData { get; set; }
//상단위치에 프린트를 할것인가?
//프린트위치에 따른다
public ePrintPutPos GetPrintPutPosition()
{
//하단에 찍는경우이다
if (PrintPositionData == "1" ||
PrintPositionData == "2" ||
PrintPositionData == "3")
{
return ePrintPutPos.Bottom;
}
else if (PrintPositionData == "7" ||
PrintPositionData == "8" ||
PrintPositionData == "9")
{
return ePrintPutPos.Top;
}
else if (PrintPositionData == "4") //왼쪽
{
if (ReelSize == eCartSize.Inch7)
return ePrintPutPos.Top;
else
return ePrintPutPos.Middle;
}
else if (PrintPositionData == "6") //오른쪽
{
if (ReelSize == eCartSize.Inch7)
return ePrintPutPos.Top;
else
return ePrintPutPos.Middle;
}
else return ePrintPutPos.None;
}
//public string LabelPos { get; set; }
//public Boolean PrintForce { get; set; }
public eCartSize ReelSize { get; set; }
public string QTY2 { get; set; } //바코드수량
public string SID2 { get; set; } //바코드
public string RID2 { get; set; } //바코드
public string VLOT2 { get; set; }
public string VNAME2 { get; set; }
public string MFGDATE2 { get; set; }
public string PARTNO2 { get; set; }
public Emgu.CV.Mat imageF { get; private set; } //최종수집된 이미지
public Emgu.CV.Mat imageR { get; private set; } //최종수집된 이미지
public void SetImage(Emgu.CV.Mat imgF_, Emgu.CV.Mat imgR_)
{
if (this.imageF != null)
{
this.imageF.Dispose();
this.imageF = null;
}
//이미지를 신규로 해석하고 데이터를 복사한다 210121
this.imageF = new Emgu.CV.Mat(imgF_.Size, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
imgF_.CopyTo(this.imageF);
if (this.imageR != null)
{
this.imageR.Dispose();
this.imageR = null;
}
//이미지를 신규로 해석하고 데이터를 복사한다 210121
this.imageR = new Emgu.CV.Mat(imgF_.Size, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
imgR_.CopyTo(this.imageR);
}
public void SetImage(Emgu.CV.Mat img_)
{
if (this.imageF != null)
{
this.imageF.Dispose();
this.imageF = null;
}
if (this.imageR != null)
{
this.imageR.Dispose();
this.imageR = null;
}
//이미지를 신규로 해석하고 데이터를 복사한다 210121
this.imageF = new Emgu.CV.Mat(img_.Size, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
img_.CopyTo(this.imageF);
}
public System.Drawing.Color GetColorByBarcodeCount(int idx)
{
if (QRPositionData[idx] > 0) return Color.Gold; //QR데이터가있다면 금색으로 한다
var Cnt = LabelPositionData[idx];
if (Cnt == MaxBarcodePosData) return Color.Purple;
else if (Cnt == 0) return Color.FromArgb(32, 32, 32);
{
//나머진 숫자별로 데이터를 표시한다 (
var GValue = Cnt * 10;
if (GValue > 255) GValue = 255;
return Color.FromArgb(32, 32, GValue);
}
}
public Boolean isMaxBarcodePosition(int idx)
{
return LabelPositionData[idx] == MaxBarcodePosData;
}
public byte[] QRPositionData { get; private set; }
public byte[] LabelPositionData { get; private set; }
public ConcurrentDictionary<String, Class.KeyenceBarcodeData> barcodelist;
public Boolean BarcodeTouched = false;
public event PropertyChangedEventHandler PropertyChanged;
//리더기로부터 읽은 자료 모두가 들어잇다
//public List<Class.KeyenceBarcodeData> barcodelist
//{
// get { return _barcodelist; }
// set
// {
// this._barcodelist = value;
// UpdateBarcodePositionData();
// }
//}
public byte MaxBarcodePosData { get; private set; }
/// <summary>
/// 바코드목록을 이용해서 라벨위치 분포값을 변경합낟.
/// 해당 위치값은 labelposdata로 접근가능함
/// </summary>
public void UpdateBarcodePositionData()
{
LabelPositionData[0] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 1).Count();
LabelPositionData[1] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 2).Count();
LabelPositionData[2] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 3).Count();
LabelPositionData[3] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 4).Count();
LabelPositionData[4] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 6).Count();
LabelPositionData[5] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 7).Count();
LabelPositionData[6] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 8).Count();
LabelPositionData[7] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 9).Count();
QRPositionData[0] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 1 && t.Value.AmkorData.isValid).Count();
QRPositionData[1] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 2 && t.Value.AmkorData.isValid).Count();
QRPositionData[2] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 3 && t.Value.AmkorData.isValid).Count();
QRPositionData[3] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 4 && t.Value.AmkorData.isValid).Count();
QRPositionData[4] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 6 && t.Value.AmkorData.isValid).Count();
QRPositionData[5] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 7 && t.Value.AmkorData.isValid).Count();
QRPositionData[6] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 8 && t.Value.AmkorData.isValid).Count();
QRPositionData[7] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 9 && t.Value.AmkorData.isValid).Count();
MaxBarcodePosData = LabelPositionData.Max(t => t);
}
/// <summary>
/// Data1(인쇄전 인식데이터) 과 Data2(QR)가 동일한지 비교합니다.
/// </summary>
public Boolean MatchValidation
{
get
{
if (PARTNO == null) this.PARTNO = string.Empty;
if (PARTNO2 == null) this.PARTNO2 = string.Empty;
if (QTY == null) QTY = string.Empty;
if (QTY2 == null) QTY2 = string.Empty;
if (SID == null) SID = string.Empty;
if (SID2 == null) SID2 = string.Empty;
if (VLOT == null) VLOT = string.Empty;
if (VLOT2 == null) VLOT2 = string.Empty;
if (PARTNO == null) PARTNO = string.Empty;
if (PARTNO2 == null) PARTNO2 = string.Empty;
if (QTY.Equals(QTY2) == false)
{
PUB.log.AddE(string.Format("QR검증실패 수량:{0} != {1}", QTY, QTY2));
return false;
}
if (RID.Equals(RID2) == false)
{
PUB.log.AddE(string.Format("QR검증실패 RID:{0} != {1}", RID, RID2));
return false;
}
if (VLOT.Equals(VLOT2) == false)
{
PUB.log.AddE(string.Format("QR검증실패 VLOT:{0} != {1}", VLOT, VLOT2));
return false;
}
if (PARTNO.Equals(PARTNO2) == false)
{
PUB.log.AddE(string.Format("QR검증실패 PARTNO:{0} != {1}", PARTNO, PARTNO2));
return false;
}
if (SID.Equals(SID2) == false)
{
PUB.log.AddE(string.Format("QR검증실패 SID:{0} != {1}", SID, SID2));
return false;
}
return true;
}
}
public string QRInputRaw { get; set; } //입력에 사용한 RAW
public string QROutRaw { get; set; } //부착된 QR코드의 값
public string ZPL { get; set; } //출력시 사용한 ZPL
public string PrintQRData { get; set; } //출력시 사용한 ZPL에 포함된 QR데이터
public string LastQueryString = string.Empty;
public VisionData(string reason)
{
Clear(reason, false);
}
public Boolean isEmpty()
{
return RID.isEmpty();
}
public void Clear(string reason, Boolean timeBackup)
{
LastQueryString = string.Empty;
RetryLoader = 0;
ApplyOffset = false;
var baktime = new DateTime(1982, 11, 23);
if (timeBackup) baktime = this.STime;
bcdMessage = new List<string>();
PositionAngle = 0;
HASHEADER = false;
CUSTCODE = string.Empty;
CUSTNAME = string.Empty;
RID0 = string.Empty;
RIDNew = false;
LightOn = false;
//SCODE = string.Empty;
ValidSkipbyUser = false;
NeedCylinderForward = false;
ApplyAngle = 0;
MaxBarcodePosData = 0;
PrintPositionCheck = false;
LabelPositionData = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 };
QRPositionData = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 };
ReelSize = eCartSize.None;
// PrintForce = false;
ConfirmAuto = false;
ConfirmUser = false;
ConfirmBypass = false;
if (imageF != null)
{
imageF.Dispose();
imageF = null;
}
if (imageR != null)
{
imageR.Dispose();
imageR = null;
}
ServerUpdate = false;
PrintPositionData = "";
//LabelPos = "";
if (barcodelist != null) barcodelist.Clear();
else barcodelist = new ConcurrentDictionary<string, KeyenceBarcodeData>();
QRInputRaw = string.Empty;
QROutRaw = string.Empty;
ZPL = string.Empty;
PrintQRData = string.Empty;
STime = baktime;// DateTime.Parse("1982-11-23");
ETime = DateTime.Parse("1982-11-23");
GTime = DateTime.Parse("1982-11-23");
Complete = false;
//Angle = 0.0;
//AngleQR = false;
//AngleSTD = false;
MCN = string.Empty;
Target = string.Empty;
Ready = false;
QTY0 = string.Empty;
QTY = string.Empty;// string.Empty;
QTYRQ = false;
//PUB.log.AddI($"비젼개체 CLEAR 로 RQ 상태 초기화(false)");
BATCH = string.Empty;
QTYMAX = string.Empty;
SID0 = string.Empty;
SID = string.Empty;
//RID = string.Empty;
SetRID(string.Empty, reason);
VLOT = string.Empty;
MFGDATE = string.Empty;
VNAME = string.Empty;
PARTNO = string.Empty;
QTY2 = "0";// string.Empty;
SID2 = string.Empty;
RID2 = string.Empty;
VLOT2 = string.Empty;
MFGDATE2 = string.Empty;
VNAME2 = string.Empty;
PARTNO2 = string.Empty;
FileNameL = string.Empty;
FileNameU = string.Empty;
MFGDATE_Trust = false;
PARTNO_Trust = false;
QTY_Trust = false;
SID_Trust = false;
RID_Trust = false;
VLOT_Trust = false;
VNAME_Trust = false;
BarcodeTouched = false;
MCN = string.Empty;
Target = string.Empty;
PUB.log.Add($"비젼데이터삭제({reason})");
}
public void CopyTo(ref VisionData obj)
{
//바코드메세지 복사
obj.bcdMessage = new List<string>();
foreach (var item in this.bcdMessage)
obj.bcdMessage.Add(item);
obj.ApplyOffset = this.ApplyOffset;
obj.ConfirmAuto = this.ConfirmAuto;
obj.ConfirmUser = this.ConfirmUser;
obj.CUSTCODE = this.CUSTCODE;
obj.CUSTNAME = this.CUSTNAME;
obj.LightOn = this.LightOn;
//obj.SCODE = this.SCODE;
obj.ValidSkipbyUser = this.ValidSkipbyUser;
obj.NeedCylinderForward = this.NeedCylinderForward; //210207
obj.ApplyAngle = this.ApplyAngle; //210207
obj.STime = this.STime;
obj.ETime = this.ETime;
obj.GTime = this.GTime;
obj.FileNameL = this.FileNameL;
obj.FileNameU = this.FileNameU;
obj.Complete = this.Complete;
//obj.Angle = this.Angle;
//obj.AngleQR = this.AngleQR;
//obj.AngleSTD = this.AngleSTD;
obj.BATCH = this.BATCH;
obj.QTYMAX = this.QTYMAX;
obj.Ready = this.Ready;
obj.QTY = this.QTY;
obj.QTYRQ = this.QTYRQ;
obj.SID = this.SID;
obj.SID0 = this.SID0; //210331
obj.SetRID(this.RID, "copy");// obj.RID = this.RID;
obj.RID0 = this.RID0;
obj.RIDNew = this.RIDNew;
obj.VLOT = this.VLOT;
obj.VNAME = this.VNAME;
obj.MFGDATE = this.MFGDATE;
obj.PARTNO = this.PARTNO;
obj.MCN = this.MCN;
obj.Target = this.Target;
obj.QTY2 = this.QTY2;
obj.SID2 = this.SID2;
obj.RID2 = this.RID2;
obj.VLOT2 = this.VLOT2;
obj.VNAME2 = this.VNAME2;
obj.MFGDATE2 = this.MFGDATE;
obj.PARTNO2 = this.PARTNO2;
obj.QRInputRaw = this.QRInputRaw;
obj.QROutRaw = this.QROutRaw;
obj.ZPL = this.ZPL;
obj.PrintQRData = this.PrintQRData;
obj.PrintPositionData = this.PrintPositionData;
//obj.PrintForce = this.PrintForce;
obj.ReelSize = this.ReelSize;
obj.PrintPositionCheck = this.PrintPositionCheck;
obj.BarcodeTouched = this.BarcodeTouched;
//라벨위치값 복사
for (int i = 0; i < obj.LabelPositionData.Length; i++)
obj.LabelPositionData[i] = this.LabelPositionData[i];
for (int i = 0; i < obj.QRPositionData.Length; i++)
obj.QRPositionData[i] = this.QRPositionData[i];
if (obj.imageF != null)
{
obj.imageF.Dispose();
obj.imageF = null;
}
if (obj.imageR != null)
{
obj.imageR.Dispose();
obj.imageR = null;
}
//이미지를 복사해준다. 210121
if (this.imageF != null)
{
obj.imageF = new Emgu.CV.Mat(this.imageF.Size, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
this.imageF.CopyTo(obj.imageF);
}
if (this.imageR != null)
{
obj.imageR = new Emgu.CV.Mat(this.imageR.Size, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
this.imageR.CopyTo(obj.imageR);
}
//바코드 데이터를 복사해준다.
if (obj.barcodelist == null)
obj.barcodelist = new ConcurrentDictionary<string, KeyenceBarcodeData>();// List<KeyenceBarcodeData>();
else
obj.barcodelist.Clear();
foreach (var item in this.barcodelist)
{
var bcd = item.Value;
var newitema = new KeyenceBarcodeData
{
Angle = bcd.Angle,
CenterPX = new Point(bcd.CenterPX.X, bcd.CenterPX.Y),
Data = bcd.Data,
LabelPosition = bcd.LabelPosition,
UserActive = bcd.UserActive,
barcodeSymbol = bcd.barcodeSymbol,
};
newitema.vertex = new Point[bcd.vertex.Length];
bcd.vertex.CopyTo(newitema.vertex, 0);
if (bcd.AmkorData != null) //231006 null error fix
bcd.AmkorData.CopyTo(newitema.AmkorData);
obj.barcodelist.AddOrUpdate(item.Key, newitema,
(key, data) =>
{
data.Angle = newitema.Angle;
data.CenterPX = newitema.CenterPX;
data.Data = newitema.Data;
data.LabelPosition = newitema.LabelPosition;
data.UserActive = newitema.UserActive;
data.barcodeSymbol = newitema.barcodeSymbol;
data.RegExConfirm = newitema.RegExConfirm;
return data;
});
}
}
public void UpdateTo(ref VisionData obj)
{
//바코드메세지 복사
obj.bcdMessage = new List<string>();
foreach (var item in this.bcdMessage)
obj.bcdMessage.Add(item);
obj.ApplyOffset = this.ApplyOffset;
obj.ConfirmAuto = this.ConfirmAuto;
obj.ConfirmUser = this.ConfirmUser;
obj.CUSTCODE = this.CUSTCODE;
obj.CUSTNAME = this.CUSTNAME;
obj.LightOn = this.LightOn;
//obj.SCODE = this.SCODE;
obj.ValidSkipbyUser = this.ValidSkipbyUser;
obj.NeedCylinderForward = this.NeedCylinderForward; //210207
obj.ApplyAngle = this.ApplyAngle; //210207
obj.STime = this.STime;
obj.ETime = this.ETime;
obj.GTime = this.GTime;
obj.FileNameL = this.FileNameL;
obj.FileNameU = this.FileNameU;
obj.Complete = this.Complete;
//obj.Angle = this.Angle;
//obj.AngleQR = this.AngleQR;
//obj.AngleSTD = this.AngleSTD;
obj.Ready = this.Ready;
obj.QTY = this.QTY;
obj.QTYRQ = this.QTYRQ;
obj.SID = this.SID;
obj.SID0 = this.SID0; //210331
obj.SetRID(this.RID, "copy");// obj.RID = this.RID;
obj.RID0 = this.RID0;
obj.RIDNew = this.RIDNew;
obj.VLOT = this.VLOT;
obj.VNAME = this.VNAME;
obj.MFGDATE = this.MFGDATE;
obj.PARTNO = this.PARTNO;
obj.MCN = this.MCN;
obj.Target = this.Target;
obj.BATCH = this.BATCH;
obj.QTYMAX = this.QTYMAX;
obj.QTY2 = this.QTY2;
obj.SID2 = this.SID2;
obj.RID2 = this.RID2;
obj.VLOT2 = this.VLOT2;
obj.VNAME2 = this.VNAME2;
obj.MFGDATE2 = this.MFGDATE;
obj.PARTNO2 = this.PARTNO2;
obj.QRInputRaw = this.QRInputRaw;
obj.QROutRaw = this.QROutRaw;
obj.ZPL = this.ZPL;
obj.PrintQRData = this.PrintQRData;
obj.PrintPositionData = this.PrintPositionData;
//obj.PrintForce = this.PrintForce;
obj.ReelSize = this.ReelSize;
obj.PrintPositionCheck = this.PrintPositionCheck;
obj.BarcodeTouched = this.BarcodeTouched;
//라벨위치값 복사
for (int i = 0; i < obj.LabelPositionData.Length; i++)
obj.LabelPositionData[i] = this.LabelPositionData[i];
for (int i = 0; i < obj.QRPositionData.Length; i++)
obj.QRPositionData[i] = this.QRPositionData[i];
if (obj.imageF != null)
{
obj.imageF.Dispose();
obj.imageF = null;
}
if (obj.imageR != null)
{
obj.imageR.Dispose();
obj.imageR = null;
}
//이미지를 복사해준다. 210121
if (this.imageF != null)
{
obj.imageF = new Emgu.CV.Mat(this.imageF.Size, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
this.imageF.CopyTo(obj.imageF);
}
if (this.imageR != null)
{
obj.imageR = new Emgu.CV.Mat(this.imageR.Size, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
this.imageR.CopyTo(obj.imageR);
}
//바코드 데이터를 복사해준다.
if (obj.barcodelist == null)
obj.barcodelist = new ConcurrentDictionary<string, KeyenceBarcodeData>();// List<KeyenceBarcodeData>();
else
obj.barcodelist.Clear();
foreach (var item in this.barcodelist)
{
var bcd = item.Value;
var newitema = new KeyenceBarcodeData
{
Angle = bcd.Angle,
CenterPX = new Point(bcd.CenterPX.X, bcd.CenterPX.Y),
Data = bcd.Data,
LabelPosition = bcd.LabelPosition,
UserActive = bcd.UserActive,
barcodeSymbol = bcd.barcodeSymbol,
};
newitema.vertex = new Point[bcd.vertex.Length];
bcd.vertex.CopyTo(newitema.vertex, 0);
bcd.AmkorData.CopyTo(newitema.AmkorData);
obj.barcodelist.AddOrUpdate(item.Key, newitema,
(key, data) =>
{
data.Angle = newitema.Angle;
data.CenterPX = newitema.CenterPX;
data.Data = newitema.Data;
data.LabelPosition = newitema.LabelPosition;
data.UserActive = newitema.UserActive;
data.barcodeSymbol = newitema.barcodeSymbol;
data.RegExConfirm = newitema.RegExConfirm;
return data;
});
}
}
}
}

View File

@@ -0,0 +1,86 @@
using System;
namespace Project
{
[Serializable]
public class sPositionData
{
public float inpositionrange { get; set; }
public int Axis;
public double Position { get; set; }
public double Acc;
public double _dcc;
public double Dcc
{
get
{
if (_dcc == 0) return Acc;
else return _dcc;
}
set
{
_dcc = value;
}
}
public double Speed;
public Boolean isError { get { return Speed == 0; } }
public string Message;
public sPositionData(sPositionData baseData)
{
this.Clear();
this.Position = baseData.Position;
this.Acc = baseData.Acc;
this.Dcc = baseData.Dcc;
this._dcc = baseData._dcc;
this.Speed = baseData.Speed;
this.Axis = baseData.Axis;
this.Message = baseData.Message;
this.inpositionrange = baseData.inpositionrange;
}
public sPositionData Clone()
{
return new sPositionData
{
Position = this.Position,
Acc = this.Acc,
Dcc = this.Dcc,
//isError = this.isError,
Message = this.Message,
Speed = this.Speed,
_dcc = this.Dcc,
Axis = this.Axis,
inpositionrange = this.inpositionrange,
};
}
public sPositionData()
{
Clear();
}
public sPositionData(double pos)
{
Clear();
this.Position = pos;
}
//public void SetPosition(double pos) { this.Position = pos; }
public void Clear()
{
Axis = -1;
inpositionrange = 0f;
Position = 0;
Acc = 500;
_dcc = 0;
Speed = 0;
Message = "Not Set";
}
public override string ToString()
{
return $"Pos:{Position},Spd:{Speed}";
}
}
}

View File

@@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 이 코드는 템플릿에서 생성되었습니다.
//
// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다.
// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Project
{
using System;
using System.Collections.Generic;
public partial class Component_Reel_Info
{
public int idx { get; set; }
public string CUST { get; set; }
public string AMKSID { get; set; }
public string CUST_PARTNO { get; set; }
public string MFG_PARTNO { get; set; }
}
}

View File

@@ -0,0 +1,53 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 이 코드는 템플릿에서 생성되었습니다.
//
// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다.
// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Project
{
using System;
using System.Collections.Generic;
public partial class Component_Reel_Result
{
public int idx { get; set; }
public System.DateTime STIME { get; set; }
public Nullable<System.DateTime> ETIME { get; set; }
public Nullable<System.DateTime> PTIME { get; set; }
public string PDATE { get; set; }
public string JTYPE { get; set; }
public string JGUID { get; set; }
public string SID { get; set; }
public string SID0 { get; set; }
public string RID { get; set; }
public string RID0 { get; set; }
public string RSN { get; set; }
public string QR { get; set; }
public string ZPL { get; set; }
public string POS { get; set; }
public string LOC { get; set; }
public Nullable<double> ANGLE { get; set; }
public Nullable<int> QTY { get; set; }
public Nullable<int> QTY0 { get; set; }
public string VLOT { get; set; }
public string VNAME { get; set; }
public string MFGDATE { get; set; }
public Nullable<bool> PRNATTACH { get; set; }
public Nullable<bool> PRNVALID { get; set; }
public string REMARK { get; set; }
public System.DateTime wdate { get; set; }
public string MC { get; set; }
public Nullable<System.Guid> GUID { get; set; }
public Nullable<System.DateTime> ATIME { get; set; }
public Nullable<int> OPT { get; set; }
public Nullable<int> OPT_DATA { get; set; }
public string PARTNO { get; set; }
public string CUSTCODE { get; set; }
public string BATCH { get; set; }
public Nullable<int> qtymax { get; set; }
}
}

View File

@@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 이 코드는 템플릿에서 생성되었습니다.
//
// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다.
// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Project
{
using System;
using System.Collections.Generic;
public partial class Component_Reel_SID_Convert
{
public int idx { get; set; }
public Nullable<bool> Chk { get; set; }
public string SIDFrom { get; set; }
public string SIDTo { get; set; }
public string Remark { get; set; }
public Nullable<System.DateTime> wdate { get; set; }
public string MC { get; set; }
}
}

View File

@@ -0,0 +1,109 @@
using AR;
using Microsoft.SqlServer.Server;
using Newtonsoft.Json.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace Project.Controller
{
public class ModelController : ApiController
{
//private static List<Item> _values = new List<Item> {
// new Item { Id = 1, Name = "USB2.0 연장선" },
// new Item { Id = 2, Name = "USB3.0 연장선" },
// new Item { Id =3, Name = "USB3.1 연장선" }
//};
// GET api/values
public IHttpActionResult Get()
{
HttpResponseMessage responsem = new HttpResponseMessage(HttpStatusCode.OK);
var data = new
{
model = PUB.Result.vModel.Title,
};
return Ok(data);
}
// GET api/values/5
public IHttpActionResult Get(int id)
{
//var value = DataManager.Items?.Find(v => v.Id == id) ?? null;
//if (value == null)
//{
// return NotFound();
//}
return Ok();
}
// POST api/values
[HttpGet]
public IHttpActionResult Set(string id)
{
//지정된 모델로 변경한다.
var msg = "";
if (id.isEmpty()) msg = "NO MODELNAME";
if (msg.isEmpty())
{
if (PUB.sm.Step == eSMStep.IDLE || PUB.sm.Step == eSMStep.FINISH)
{
var buf = id.Split(new char[] { '|' }, System.StringSplitOptions.RemoveEmptyEntries);
var modelname = buf[0];
var conv = true;
if (buf.Length == 2) conv = buf[1] == "1";
var modelVision = PUB.mdm.GetDataV(modelname);
if (modelVision == null)
{
msg = "NO MODELDATA";
}
else
{
VAR.BOOL[eVarBool.Use_Conveyor] = conv;
var rlt = PUB.SelectModelV(modelname, false);
if (rlt == false)
{
msg = "[OP]LOAD FAIL";
}
else
{
var motion = conv ? "Conveyor" : "Default";
rlt = PUB.SelectModelM("Conveyor");
if(rlt ==false)
{
msg = "[MT]LOAD FAIL";
}
}
}
}
else
{
msg = "NOT IDLE";
}
}
var data = new
{
Message = msg,
Result = (msg.isEmpty() ? true : false),
};
return Ok(data);
}
// PUT api/values/5
public IHttpActionResult Put(int id, [FromBody] JObject value)
{
return Ok();
}
// DELETE api/values/5
public IHttpActionResult Delete(int id)
{
return Ok();
}
}
}

View File

@@ -0,0 +1,88 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Runtime.Remoting.Contexts;
using System.Security.Principal;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http;
using System.Web.Http.Results;
namespace Project.Controller
{
public class StateController : ApiController
{
//private static List<Item> _values = new List<Item> {
// new Item { Id = 1, Name = "USB2.0 연장선" },
// new Item { Id = 2, Name = "USB3.0 연장선" },
// new Item { Id =3, Name = "USB3.1 연장선" }
//};
// GET api/values
public IHttpActionResult Get()
{
HttpResponseMessage responsem = new HttpResponseMessage(HttpStatusCode.OK);
//responsem.Headers.Add("Content-Type", "application/json");
//ResponseMessageResult response = new ResponseMessageResult(responsem);
//return response;
//return this.Content(HttpStatusCode.OK, _values, mediaType)
return Ok();
//string json = JsonConvert.SerializeObject(_values, Formatting.Indented);
//return Ok(json);
}
// GET api/values/5
public IHttpActionResult Get(int id)
{
//var value = DataManager.Items?.Find(v => v.Id == id) ?? null;
//if (value == null)
//{
// return NotFound();
//}
return Ok();
}
// POST api/values
public IHttpActionResult Post([FromBody] JObject value)
{
//value.Id = DataManager.Items?.Count ?? 0;
//DataManager.Items.Add(value);
//DataManager.Save();
return CreatedAtRoute("DefaultApi", new { id = value }, value);
}
// PUT api/values/5
public IHttpActionResult Put(int id, [FromBody] JObject value)
{
//var index = DataManager.Items.FindIndex(v => v.Id == id);
//if (index == -1)
//{
// return NotFound();
//}
//DataManager.Items[index] = value;
//DataManager.Save();
return Ok();
}
// DELETE api/values/5
public IHttpActionResult Delete(int id)
{
//var index = DataManager.Items.FindIndex(v => v.Id == id);
//if (index == -1)
//{
// return NotFound();
//}
//DataManager.Items.RemoveAt(index);
//DataManager.Save();
return Ok();
}
}
}

5133
Handler/Project/DSList.Designer.cs generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
namespace Project
{
partial class DSList
{
}
}

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DataSetUISetting Version="1.00" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TableUISettings />
</DataSetUISetting>

496
Handler/Project/DSList.xsd Normal file
View File

@@ -0,0 +1,496 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="DSList" targetNamespace="http://tempuri.org/DSList.xsd" xmlns:mstns="http://tempuri.org/DSList.xsd" xmlns="http://tempuri.org/DSList.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:annotation>
<xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">
<DataSource DefaultConnectionIndex="0" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<Connections>
<Connection AppSettingsObjectName="Settings" AppSettingsPropertyName="CS" ConnectionStringObject="" IsAppSettingsProperty="true" Modifier="Assembly" Name="CS (Settings)" ParameterPrefix="@" PropertyReference="ApplicationSettings.Project.Properties.Settings.GlobalReference.Default.CS" Provider="System.Data.SqlClient" />
</Connections>
<Tables>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="Component_Reel_CustRuleTableAdapter" GeneratorDataComponentClassName="Component_Reel_CustRuleTableAdapter" Name="Component_Reel_CustRule" UserDataComponentName="Component_Reel_CustRuleTableAdapter">
<MainSource>
<DbSource ConnectionRef="CS (Settings)" DbObjectName="EE.dbo.Component_Reel_CustRule" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="true" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetData" UserSourceName="Fill">
<DeleteCommand>
<DbCommand CommandType="Text" ModifiedByUser="false">
<CommandText>DELETE FROM [Component_Reel_CustRule] WHERE (([code] = @Original_code) AND ((@IsNull_pre = 1 AND [pre] IS NULL) OR ([pre] = @Original_pre)) AND ((@IsNull_pos = 1 AND [pos] IS NULL) OR ([pos] = @Original_pos)) AND ((@IsNull_len = 1 AND [len] IS NULL) OR ([len] = @Original_len)) AND ((@IsNull_exp = 1 AND [exp] IS NULL) OR ([exp] = @Original_exp)))</CommandText>
<Parameters>
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_code" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="code" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_pre" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="pre" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_pre" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="pre" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_pos" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="pos" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_pos" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="pos" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_len" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="len" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@Original_len" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="len" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_exp" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="exp" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_exp" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="exp" SourceColumnNullMapping="false" SourceVersion="Original" />
</Parameters>
</DbCommand>
</DeleteCommand>
<InsertCommand>
<DbCommand CommandType="Text" ModifiedByUser="false">
<CommandText>INSERT INTO [Component_Reel_CustRule] ([code], [pre], [pos], [len], [exp]) VALUES (@code, @pre, @pos, @len, @exp);
SELECT code, pre, pos, len, exp FROM Component_Reel_CustRule WHERE (code = @code)</CommandText>
<Parameters>
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@code" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="code" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@pre" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="pre" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@pos" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="pos" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@len" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="len" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@exp" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="exp" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</InsertCommand>
<SelectCommand>
<DbCommand CommandType="Text" ModifiedByUser="true">
<CommandText>SELECT Component_Reel_CustRule.*
FROM Component_Reel_CustRule</CommandText>
<Parameters />
</DbCommand>
</SelectCommand>
<UpdateCommand>
<DbCommand CommandType="Text" ModifiedByUser="false">
<CommandText>UPDATE [Component_Reel_CustRule] SET [code] = @code, [pre] = @pre, [pos] = @pos, [len] = @len, [exp] = @exp WHERE (([code] = @Original_code) AND ((@IsNull_pre = 1 AND [pre] IS NULL) OR ([pre] = @Original_pre)) AND ((@IsNull_pos = 1 AND [pos] IS NULL) OR ([pos] = @Original_pos)) AND ((@IsNull_len = 1 AND [len] IS NULL) OR ([len] = @Original_len)) AND ((@IsNull_exp = 1 AND [exp] IS NULL) OR ([exp] = @Original_exp)));
SELECT code, pre, pos, len, exp FROM Component_Reel_CustRule WHERE (code = @code)</CommandText>
<Parameters>
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@code" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="code" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@pre" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="pre" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@pos" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="pos" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@len" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="len" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@exp" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="exp" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_code" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="code" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_pre" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="pre" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_pre" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="pre" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_pos" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="pos" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_pos" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="pos" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_len" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="len" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@Original_len" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="len" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_exp" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="exp" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_exp" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="exp" SourceColumnNullMapping="false" SourceVersion="Original" />
</Parameters>
</DbCommand>
</UpdateCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="code" DataSetColumn="code" />
<Mapping SourceColumn="pre" DataSetColumn="pre" />
<Mapping SourceColumn="pos" DataSetColumn="pos" />
<Mapping SourceColumn="len" DataSetColumn="len" />
<Mapping SourceColumn="exp" DataSetColumn="exp" />
</Mappings>
<Sources />
</TableAdapter>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="Component_Reel_SIDInfoTableAdapter" GeneratorDataComponentClassName="Component_Reel_SIDInfoTableAdapter" Name="Component_Reel_SIDInfo" UserDataComponentName="Component_Reel_SIDInfoTableAdapter">
<MainSource>
<DbSource ConnectionRef="CS (Settings)" DbObjectName="EE.dbo.Component_Reel_SIDInfo" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="true" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetData" UserSourceName="Fill">
<DeleteCommand>
<DbCommand CommandType="Text" ModifiedByUser="false">
<CommandText>DELETE FROM [Component_Reel_SIDInfo] WHERE (([SID] = @Original_SID) AND ([CustCode] = @Original_CustCode) AND ((@IsNull_CustName = 1 AND [CustName] IS NULL) OR ([CustName] = @Original_CustName)) AND ((@IsNull_VenderName = 1 AND [VenderName] IS NULL) OR ([VenderName] = @Original_VenderName)) AND ([PartNo] = @Original_PartNo) AND ((@IsNull_PrintPosition = 1 AND [PrintPosition] IS NULL) OR ([PrintPosition] = @Original_PrintPosition)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)))</CommandText>
<Parameters>
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_SID" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="SID" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_CustCode" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="CustCode" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_CustName" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="CustName" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_CustName" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="CustName" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_VenderName" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="VenderName" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_VenderName" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="VenderName" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_PartNo" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="PartNo" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_PrintPosition" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="PrintPosition" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_PrintPosition" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="PrintPosition" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_Remark" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="Remark" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_Remark" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Remark" SourceColumnNullMapping="false" SourceVersion="Original" />
</Parameters>
</DbCommand>
</DeleteCommand>
<InsertCommand>
<DbCommand CommandType="Text" ModifiedByUser="false">
<CommandText>INSERT INTO [Component_Reel_SIDInfo] ([SID], [CustCode], [CustName], [VenderName], [PartNo], [PrintPosition], [Remark]) VALUES (@SID, @CustCode, @CustName, @VenderName, @PartNo, @PrintPosition, @Remark);
SELECT SID, CustCode, CustName, VenderName, PartNo, PrintPosition, Remark FROM Component_Reel_SIDInfo WHERE (CustCode = @CustCode) AND (PartNo = @PartNo) AND (SID = @SID)</CommandText>
<Parameters>
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@SID" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="SID" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@CustCode" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="CustCode" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@CustName" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="CustName" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@VenderName" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="VenderName" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@PartNo" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="PartNo" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@PrintPosition" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="PrintPosition" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Remark" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Remark" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</InsertCommand>
<SelectCommand>
<DbCommand CommandType="Text" ModifiedByUser="false">
<CommandText>SELECT SID, CustCode, CustName, VenderName, PartNo, PrintPosition, Remark
FROM Component_Reel_SIDInfo
WHERE (SID = @sid) AND (CustCode = @custcode) AND (PartNo = @partno)</CommandText>
<Parameters>
<Parameter AllowDbNull="false" AutogeneratedName="sid" ColumnName="SID" DataSourceName="EE.dbo.Component_Reel_SIDInfo" DataTypeServer="varchar(50)" DbType="AnsiString" Direction="Input" ParameterName="@sid" Precision="0" ProviderType="VarChar" Scale="0" Size="50" SourceColumn="SID" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="false" AutogeneratedName="custcode" ColumnName="CustCode" DataSourceName="EE.dbo.Component_Reel_SIDInfo" DataTypeServer="varchar(10)" DbType="AnsiString" Direction="Input" ParameterName="@custcode" Precision="0" ProviderType="VarChar" Scale="0" Size="10" SourceColumn="CustCode" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="false" AutogeneratedName="partno" ColumnName="PartNo" DataSourceName="EE.dbo.Component_Reel_SIDInfo" DataTypeServer="varchar(100)" DbType="AnsiString" Direction="Input" ParameterName="@partno" Precision="0" ProviderType="VarChar" Scale="0" Size="100" SourceColumn="PartNo" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</SelectCommand>
<UpdateCommand>
<DbCommand CommandType="Text" ModifiedByUser="false">
<CommandText>UPDATE [Component_Reel_SIDInfo] SET [SID] = @SID, [CustCode] = @CustCode, [CustName] = @CustName, [VenderName] = @VenderName, [PartNo] = @PartNo, [PrintPosition] = @PrintPosition, [Remark] = @Remark WHERE (([SID] = @Original_SID) AND ([CustCode] = @Original_CustCode) AND ((@IsNull_CustName = 1 AND [CustName] IS NULL) OR ([CustName] = @Original_CustName)) AND ((@IsNull_VenderName = 1 AND [VenderName] IS NULL) OR ([VenderName] = @Original_VenderName)) AND ([PartNo] = @Original_PartNo) AND ((@IsNull_PrintPosition = 1 AND [PrintPosition] IS NULL) OR ([PrintPosition] = @Original_PrintPosition)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)));
SELECT SID, CustCode, CustName, VenderName, PartNo, PrintPosition, Remark FROM Component_Reel_SIDInfo WHERE (CustCode = @CustCode) AND (PartNo = @PartNo) AND (SID = @SID)</CommandText>
<Parameters>
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@SID" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="SID" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@CustCode" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="CustCode" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@CustName" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="CustName" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@VenderName" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="VenderName" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@PartNo" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="PartNo" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@PrintPosition" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="PrintPosition" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Remark" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Remark" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_SID" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="SID" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_CustCode" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="CustCode" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_CustName" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="CustName" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_CustName" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="CustName" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_VenderName" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="VenderName" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_VenderName" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="VenderName" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_PartNo" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="PartNo" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_PrintPosition" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="PrintPosition" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_PrintPosition" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="PrintPosition" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_Remark" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="Remark" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_Remark" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Remark" SourceColumnNullMapping="false" SourceVersion="Original" />
</Parameters>
</DbCommand>
</UpdateCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="SID" DataSetColumn="SID" />
<Mapping SourceColumn="CustCode" DataSetColumn="CustCode" />
<Mapping SourceColumn="CustName" DataSetColumn="CustName" />
<Mapping SourceColumn="VenderName" DataSetColumn="VenderName" />
<Mapping SourceColumn="PartNo" DataSetColumn="PartNo" />
<Mapping SourceColumn="PrintPosition" DataSetColumn="PrintPosition" />
<Mapping SourceColumn="Remark" DataSetColumn="Remark" />
</Mappings>
<Sources />
</TableAdapter>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="Component_Reel_SIDConvTableAdapter" GeneratorDataComponentClassName="Component_Reel_SIDConvTableAdapter" Name="Component_Reel_SIDConv" UserDataComponentName="Component_Reel_SIDConvTableAdapter">
<MainSource>
<DbSource ConnectionRef="CS (Settings)" DbObjectName="EE.dbo.Component_Reel_SIDConv" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="true" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetData" UserSourceName="Fill">
<DeleteCommand>
<DbCommand CommandType="Text" ModifiedByUser="false">
<CommandText>DELETE FROM [Component_Reel_SIDConv] WHERE (([idx] = @Original_idx) AND ((@IsNull_M101 = 1 AND [M101] IS NULL) OR ([M101] = @Original_M101)) AND ((@IsNull_M103 = 1 AND [M103] IS NULL) OR ([M103] = @Original_M103)) AND ((@IsNull_M106 = 1 AND [M106] IS NULL) OR ([M106] = @Original_M106)) AND ((@IsNull_M108 = 1 AND [M108] IS NULL) OR ([M108] = @Original_M108)) AND ((@IsNull_M103_2 = 1 AND [M103_2] IS NULL) OR ([M103_2] = @Original_M103_2)) AND ((@IsNull_M101_2 = 1 AND [M101_2] IS NULL) OR ([M101_2] = @Original_M101_2)) AND ((@IsNull_Chk = 1 AND [Chk] IS NULL) OR ([Chk] = @Original_Chk)) AND ((@IsNull_SIDFrom = 1 AND [SIDFrom] IS NULL) OR ([SIDFrom] = @Original_SIDFrom)) AND ((@IsNull_SIDTo = 1 AND [SIDTo] IS NULL) OR ([SIDTo] = @Original_SIDTo)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)))</CommandText>
<Parameters>
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@Original_idx" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="idx" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_M101" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="M101" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_M101" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M101" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_M103" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="M103" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_M103" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M103" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_M106" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="M106" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_M106" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M106" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_M108" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="M108" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_M108" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M108" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_M103_2" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="M103_2" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_M103_2" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M103_2" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_M101_2" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="M101_2" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_M101_2" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M101_2" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_Chk" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="Chk" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Boolean" Direction="Input" ParameterName="@Original_Chk" Precision="0" ProviderType="Bit" Scale="0" Size="0" SourceColumn="Chk" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_SIDFrom" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="SIDFrom" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_SIDFrom" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="SIDFrom" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_SIDTo" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="SIDTo" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_SIDTo" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="SIDTo" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_Remark" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="Remark" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_Remark" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Remark" SourceColumnNullMapping="false" SourceVersion="Original" />
</Parameters>
</DbCommand>
</DeleteCommand>
<InsertCommand>
<DbCommand CommandType="Text" ModifiedByUser="false">
<CommandText>INSERT INTO [Component_Reel_SIDConv] ([M101], [M103], [M106], [M108], [M103_2], [M101_2], [Chk], [SIDFrom], [SIDTo], [Remark]) VALUES (@M101, @M103, @M106, @M108, @M103_2, @M101_2, @Chk, @SIDFrom, @SIDTo, @Remark);
SELECT idx, M101, M103, M106, M108, M103_2, M101_2, Chk, SIDFrom, SIDTo, Remark FROM Component_Reel_SIDConv WHERE (idx = SCOPE_IDENTITY())</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@M101" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M101" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@M103" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M103" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@M106" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M106" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@M108" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M108" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@M103_2" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M103_2" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@M101_2" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M101_2" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Boolean" Direction="Input" ParameterName="@Chk" Precision="0" ProviderType="Bit" Scale="0" Size="0" SourceColumn="Chk" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@SIDFrom" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="SIDFrom" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@SIDTo" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="SIDTo" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Remark" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Remark" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</InsertCommand>
<SelectCommand>
<DbCommand CommandType="Text" ModifiedByUser="false">
<CommandText>SELECT idx, M101, M103, M106, M108, M103_2, M101_2, Chk, SIDFrom, SIDTo, Remark
FROM Component_Reel_SIDConv
WHERE (SIDFrom = @sidfrom) AND (SIDTo = @sidto)</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="sidfrom" ColumnName="SIDFrom" DataSourceName="EE.dbo.Component_Reel_SIDConv" DataTypeServer="varchar(20)" DbType="AnsiString" Direction="Input" ParameterName="@sidfrom" Precision="0" ProviderType="VarChar" Scale="0" Size="20" SourceColumn="SIDFrom" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="sidto" ColumnName="SIDTo" DataSourceName="EE.dbo.Component_Reel_SIDConv" DataTypeServer="varchar(20)" DbType="AnsiString" Direction="Input" ParameterName="@sidto" Precision="0" ProviderType="VarChar" Scale="0" Size="20" SourceColumn="SIDTo" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</SelectCommand>
<UpdateCommand>
<DbCommand CommandType="Text" ModifiedByUser="false">
<CommandText>UPDATE [Component_Reel_SIDConv] SET [M101] = @M101, [M103] = @M103, [M106] = @M106, [M108] = @M108, [M103_2] = @M103_2, [M101_2] = @M101_2, [Chk] = @Chk, [SIDFrom] = @SIDFrom, [SIDTo] = @SIDTo, [Remark] = @Remark WHERE (([idx] = @Original_idx) AND ((@IsNull_M101 = 1 AND [M101] IS NULL) OR ([M101] = @Original_M101)) AND ((@IsNull_M103 = 1 AND [M103] IS NULL) OR ([M103] = @Original_M103)) AND ((@IsNull_M106 = 1 AND [M106] IS NULL) OR ([M106] = @Original_M106)) AND ((@IsNull_M108 = 1 AND [M108] IS NULL) OR ([M108] = @Original_M108)) AND ((@IsNull_M103_2 = 1 AND [M103_2] IS NULL) OR ([M103_2] = @Original_M103_2)) AND ((@IsNull_M101_2 = 1 AND [M101_2] IS NULL) OR ([M101_2] = @Original_M101_2)) AND ((@IsNull_Chk = 1 AND [Chk] IS NULL) OR ([Chk] = @Original_Chk)) AND ((@IsNull_SIDFrom = 1 AND [SIDFrom] IS NULL) OR ([SIDFrom] = @Original_SIDFrom)) AND ((@IsNull_SIDTo = 1 AND [SIDTo] IS NULL) OR ([SIDTo] = @Original_SIDTo)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)));
SELECT idx, M101, M103, M106, M108, M103_2, M101_2, Chk, SIDFrom, SIDTo, Remark FROM Component_Reel_SIDConv WHERE (idx = @idx)</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@M101" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M101" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@M103" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M103" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@M106" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M106" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@M108" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M108" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@M103_2" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M103_2" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@M101_2" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M101_2" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Boolean" Direction="Input" ParameterName="@Chk" Precision="0" ProviderType="Bit" Scale="0" Size="0" SourceColumn="Chk" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@SIDFrom" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="SIDFrom" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@SIDTo" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="SIDTo" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Remark" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Remark" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@Original_idx" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="idx" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_M101" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="M101" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_M101" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M101" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_M103" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="M103" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_M103" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M103" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_M106" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="M106" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_M106" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M106" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_M108" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="M108" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_M108" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M108" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_M103_2" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="M103_2" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_M103_2" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M103_2" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_M101_2" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="M101_2" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_M101_2" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="M101_2" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_Chk" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="Chk" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Boolean" Direction="Input" ParameterName="@Original_Chk" Precision="0" ProviderType="Bit" Scale="0" Size="0" SourceColumn="Chk" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_SIDFrom" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="SIDFrom" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_SIDFrom" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="SIDFrom" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_SIDTo" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="SIDTo" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_SIDTo" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="SIDTo" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_Remark" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="Remark" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_Remark" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Remark" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="false" AutogeneratedName="idx" ColumnName="idx" DataSourceName="EE.dbo.Component_Reel_SIDConv" DataTypeServer="int" DbType="Int32" Direction="Input" ParameterName="@idx" Precision="0" ProviderType="Int" Scale="0" Size="4" SourceColumn="idx" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</UpdateCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="idx" DataSetColumn="idx" />
<Mapping SourceColumn="M101" DataSetColumn="M101" />
<Mapping SourceColumn="M103" DataSetColumn="M103" />
<Mapping SourceColumn="M106" DataSetColumn="M106" />
<Mapping SourceColumn="M108" DataSetColumn="M108" />
<Mapping SourceColumn="M103_2" DataSetColumn="M103_2" />
<Mapping SourceColumn="M101_2" DataSetColumn="M101_2" />
<Mapping SourceColumn="Chk" DataSetColumn="Chk" />
<Mapping SourceColumn="SIDFrom" DataSetColumn="SIDFrom" />
<Mapping SourceColumn="SIDTo" DataSetColumn="SIDTo" />
<Mapping SourceColumn="Remark" DataSetColumn="Remark" />
</Mappings>
<Sources />
</TableAdapter>
</Tables>
<Sources />
</DataSource>
</xs:appinfo>
</xs:annotation>
<xs:element name="DSList" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:EnableTableAdapterManager="true" msprop:Generator_DataSetName="DSList" msprop:Generator_UserDSName="DSList">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Supply" msprop:Generator_TableClassName="SupplyDataTable" msprop:Generator_TableVarName="tableSupply" msprop:Generator_RowChangedName="SupplyRowChanged" msprop:Generator_TablePropName="Supply" msprop:Generator_RowDeletingName="SupplyRowDeleting" msprop:Generator_RowChangingName="SupplyRowChanging" msprop:Generator_RowEvHandlerName="SupplyRowChangeEventHandler" msprop:Generator_RowDeletedName="SupplyRowDeleted" msprop:Generator_RowClassName="SupplyRow" msprop:Generator_UserTableName="Supply" msprop:Generator_RowEvArgName="SupplyRowChangeEvent">
<xs:complexType>
<xs:sequence>
<xs:element name="TITLE" msprop:Generator_ColumnVarNameInTable="columnTITLE" msprop:Generator_ColumnPropNameInRow="TITLE" msprop:Generator_ColumnPropNameInTable="TITLEColumn" msprop:Generator_UserColumnName="TITLE" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SIDConvert" msprop:Generator_TableClassName="SIDConvertDataTable" msprop:Generator_TableVarName="tableSIDConvert" msprop:Generator_RowChangedName="SIDConvertRowChanged" msprop:Generator_TablePropName="SIDConvert" msprop:Generator_RowDeletingName="SIDConvertRowDeleting" msprop:Generator_RowChangingName="SIDConvertRowChanging" msprop:Generator_RowEvHandlerName="SIDConvertRowChangeEventHandler" msprop:Generator_RowDeletedName="SIDConvertRowDeleted" msprop:Generator_RowClassName="SIDConvertRow" msprop:Generator_UserTableName="SIDConvert" msprop:Generator_RowEvArgName="SIDConvertRowChangeEvent">
<xs:complexType>
<xs:sequence>
<xs:element name="SID101" msprop:Generator_ColumnVarNameInTable="columnSID101" msprop:Generator_ColumnPropNameInRow="SID101" msprop:Generator_ColumnPropNameInTable="SID101Column" msprop:Generator_UserColumnName="SID101" type="xs:string" />
<xs:element name="SID103" msprop:Generator_ColumnVarNameInTable="columnSID103" msprop:Generator_ColumnPropNameInRow="SID103" msprop:Generator_ColumnPropNameInTable="SID103Column" msprop:Generator_UserColumnName="SID103" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Component_Reel_CustRule" msprop:Generator_TableClassName="Component_Reel_CustRuleDataTable" msprop:Generator_TableVarName="tableComponent_Reel_CustRule" msprop:Generator_TablePropName="Component_Reel_CustRule" msprop:Generator_RowDeletingName="Component_Reel_CustRuleRowDeleting" msprop:Generator_RowChangingName="Component_Reel_CustRuleRowChanging" msprop:Generator_RowEvHandlerName="Component_Reel_CustRuleRowChangeEventHandler" msprop:Generator_RowDeletedName="Component_Reel_CustRuleRowDeleted" msprop:Generator_UserTableName="Component_Reel_CustRule" msprop:Generator_RowChangedName="Component_Reel_CustRuleRowChanged" msprop:Generator_RowEvArgName="Component_Reel_CustRuleRowChangeEvent" msprop:Generator_RowClassName="Component_Reel_CustRuleRow">
<xs:complexType>
<xs:sequence>
<xs:element name="code" msprop:Generator_ColumnVarNameInTable="columncode" msprop:Generator_ColumnPropNameInRow="code" msprop:Generator_ColumnPropNameInTable="codeColumn" msprop:Generator_UserColumnName="code">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="pre" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="pre" msprop:Generator_ColumnVarNameInTable="columnpre" msprop:Generator_ColumnPropNameInTable="preColumn" msprop:Generator_UserColumnName="pre" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="20" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="pos" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="pos" msprop:Generator_ColumnVarNameInTable="columnpos" msprop:Generator_ColumnPropNameInTable="posColumn" msprop:Generator_UserColumnName="pos" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="20" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="len" msprop:nullValue="0" msprop:Generator_ColumnPropNameInRow="len" msprop:Generator_ColumnVarNameInTable="columnlen" msprop:Generator_ColumnPropNameInTable="lenColumn" msprop:Generator_UserColumnName="len" type="xs:int" minOccurs="0" />
<xs:element name="exp" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="exp" msprop:Generator_ColumnVarNameInTable="columnexp" msprop:Generator_ColumnPropNameInTable="expColumn" msprop:Generator_UserColumnName="exp" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Component_Reel_SIDInfo" msprop:Generator_TableClassName="Component_Reel_SIDInfoDataTable" msprop:Generator_TableVarName="tableComponent_Reel_SIDInfo" msprop:Generator_RowChangedName="Component_Reel_SIDInfoRowChanged" msprop:Generator_TablePropName="Component_Reel_SIDInfo" msprop:Generator_RowDeletingName="Component_Reel_SIDInfoRowDeleting" msprop:Generator_RowChangingName="Component_Reel_SIDInfoRowChanging" msprop:Generator_RowEvHandlerName="Component_Reel_SIDInfoRowChangeEventHandler" msprop:Generator_RowDeletedName="Component_Reel_SIDInfoRowDeleted" msprop:Generator_RowClassName="Component_Reel_SIDInfoRow" msprop:Generator_UserTableName="Component_Reel_SIDInfo" msprop:Generator_RowEvArgName="Component_Reel_SIDInfoRowChangeEvent">
<xs:complexType>
<xs:sequence>
<xs:element name="SID" msprop:Generator_ColumnVarNameInTable="columnSID" msprop:Generator_ColumnPropNameInRow="SID" msprop:Generator_ColumnPropNameInTable="SIDColumn" msprop:Generator_UserColumnName="SID">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="CustCode" msprop:Generator_ColumnVarNameInTable="columnCustCode" msprop:Generator_ColumnPropNameInRow="CustCode" msprop:Generator_ColumnPropNameInTable="CustCodeColumn" msprop:Generator_UserColumnName="CustCode">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="CustName" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="CustName" msprop:Generator_ColumnVarNameInTable="columnCustName" msprop:Generator_ColumnPropNameInTable="CustNameColumn" msprop:Generator_UserColumnName="CustName" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="VenderName" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="VenderName" msprop:Generator_ColumnVarNameInTable="columnVenderName" msprop:Generator_ColumnPropNameInTable="VenderNameColumn" msprop:Generator_UserColumnName="VenderName" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="PartNo" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="PartNo" msprop:Generator_ColumnVarNameInTable="columnPartNo" msprop:Generator_ColumnPropNameInTable="PartNoColumn" msprop:Generator_UserColumnName="PartNo">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="PrintPosition" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="PrintPosition" msprop:Generator_ColumnVarNameInTable="columnPrintPosition" msprop:Generator_ColumnPropNameInTable="PrintPositionColumn" msprop:Generator_UserColumnName="PrintPosition" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Remark" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="Remark" msprop:Generator_ColumnVarNameInTable="columnRemark" msprop:Generator_ColumnPropNameInTable="RemarkColumn" msprop:Generator_UserColumnName="Remark" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Component_Reel_SIDConv" msprop:Generator_TableClassName="Component_Reel_SIDConvDataTable" msprop:Generator_TableVarName="tableComponent_Reel_SIDConv" msprop:Generator_TablePropName="Component_Reel_SIDConv" msprop:Generator_RowDeletingName="Component_Reel_SIDConvRowDeleting" msprop:Generator_RowChangingName="Component_Reel_SIDConvRowChanging" msprop:Generator_RowEvHandlerName="Component_Reel_SIDConvRowChangeEventHandler" msprop:Generator_RowDeletedName="Component_Reel_SIDConvRowDeleted" msprop:Generator_UserTableName="Component_Reel_SIDConv" msprop:Generator_RowChangedName="Component_Reel_SIDConvRowChanged" msprop:Generator_RowEvArgName="Component_Reel_SIDConvRowChangeEvent" msprop:Generator_RowClassName="Component_Reel_SIDConvRow">
<xs:complexType>
<xs:sequence>
<xs:element name="idx" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnidx" msprop:Generator_ColumnPropNameInRow="idx" msprop:Generator_ColumnPropNameInTable="idxColumn" msprop:Generator_UserColumnName="idx" type="xs:int" />
<xs:element name="M101" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="M101" msprop:Generator_ColumnVarNameInTable="columnM101" msprop:Generator_ColumnPropNameInTable="M101Column" msprop:Generator_UserColumnName="M101" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="20" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="M103" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="M103" msprop:Generator_ColumnVarNameInTable="columnM103" msprop:Generator_ColumnPropNameInTable="M103Column" msprop:Generator_UserColumnName="M103" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="20" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="M106" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="M106" msprop:Generator_ColumnVarNameInTable="columnM106" msprop:Generator_ColumnPropNameInTable="M106Column" msprop:Generator_UserColumnName="M106" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="20" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="M108" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="M108" msprop:Generator_ColumnVarNameInTable="columnM108" msprop:Generator_ColumnPropNameInTable="M108Column" msprop:Generator_UserColumnName="M108" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="20" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="M103_2" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="M103_2" msprop:Generator_ColumnVarNameInTable="columnM103_2" msprop:Generator_ColumnPropNameInTable="M103_2Column" msprop:Generator_UserColumnName="M103_2" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="20" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="M101_2" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="M101_2" msprop:Generator_ColumnVarNameInTable="columnM101_2" msprop:Generator_ColumnPropNameInTable="M101_2Column" msprop:Generator_UserColumnName="M101_2" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="20" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Chk" msprop:Generator_ColumnVarNameInTable="columnChk" msprop:Generator_ColumnPropNameInRow="Chk" msprop:Generator_ColumnPropNameInTable="ChkColumn" msprop:Generator_UserColumnName="Chk" type="xs:boolean" minOccurs="0" />
<xs:element name="SIDFrom" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="SIDFrom" msprop:Generator_ColumnVarNameInTable="columnSIDFrom" msprop:Generator_ColumnPropNameInTable="SIDFromColumn" msprop:Generator_UserColumnName="SIDFrom" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="20" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="SIDTo" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="SIDTo" msprop:Generator_ColumnVarNameInTable="columnSIDTo" msprop:Generator_ColumnPropNameInTable="SIDToColumn" msprop:Generator_UserColumnName="SIDTo" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="20" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Remark" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInRow="Remark" msprop:Generator_ColumnVarNameInTable="columnRemark" msprop:Generator_ColumnPropNameInTable="RemarkColumn" msprop:Generator_UserColumnName="Remark" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:unique name="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:Supply" />
<xs:field xpath="mstns:TITLE" />
</xs:unique>
<xs:unique name="SIDConvert_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:SIDConvert" />
<xs:field xpath="mstns:SID101" />
<xs:field xpath="mstns:SID103" />
</xs:unique>
<xs:unique name="Component_Reel_CustRule_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:Component_Reel_CustRule" />
<xs:field xpath="mstns:code" />
</xs:unique>
<xs:unique name="Component_Reel_SIDInfo_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:Component_Reel_SIDInfo" />
<xs:field xpath="mstns:SID" />
<xs:field xpath="mstns:CustCode" />
<xs:field xpath="mstns:PartNo" />
</xs:unique>
<xs:unique name="Component_Reel_SIDConv_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:Component_Reel_SIDConv" />
<xs:field xpath="mstns:idx" />
</xs:unique>
</xs:element>
</xs:schema>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool to store the dataset designer's layout information.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DiagramLayout xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ex:showrelationlabel="False" ViewPortX="0" ViewPortY="0" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<Shapes>
<Shape ID="DesignTable:Component_Reel_CustRule" ZOrder="3" X="510" Y="141" Height="172" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="121" />
<Shape ID="DesignTable:Component_Reel_SIDInfo" ZOrder="1" X="651" Y="371" Height="210" Width="293" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:Component_Reel_SIDConv" ZOrder="2" X="281" Y="384" Height="286" Width="299" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="235" />
<Shape ID="DesignTable:Supply" ZOrder="5" X="120" Y="87" Height="48" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="44" />
<Shape ID="DesignTable:SIDConvert" ZOrder="4" X="316" Y="82" Height="67" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="63" />
</Shapes>
<Connectors />
</DiagramLayout>

1099
Handler/Project/DSSetup.Designer.cs generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DataSetUISetting Version="1.00" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TableUISettings />
</DataSetUISetting>

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="DSSetup" targetNamespace="http://tempuri.org/DSSetup.xsd" xmlns:mstns="http://tempuri.org/DSSetup.xsd" xmlns="http://tempuri.org/DSSetup.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:annotation>
<xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">
<DataSource DefaultConnectionIndex="0" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<Connections />
<Tables />
<Sources />
</DataSource>
</xs:appinfo>
</xs:annotation>
<xs:element name="DSSetup" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:EnableTableAdapterManager="true" msprop:Generator_DataSetName="DSSetup" msprop:Generator_UserDSName="DSSetup">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="MotionParam" msprop:Generator_TableClassName="MotionParamDataTable" msprop:Generator_TableVarName="tableMotionParam" msprop:Generator_TablePropName="MotionParam" msprop:Generator_RowDeletingName="MotionParamRowDeleting" msprop:Generator_RowChangingName="MotionParamRowChanging" msprop:Generator_RowEvHandlerName="MotionParamRowChangeEventHandler" msprop:Generator_RowDeletedName="MotionParamRowDeleted" msprop:Generator_UserTableName="MotionParam" msprop:Generator_RowChangedName="MotionParamRowChanged" msprop:Generator_RowEvArgName="MotionParamRowChangeEvent" msprop:Generator_RowClassName="MotionParamRow">
<xs:complexType>
<xs:sequence>
<xs:element name="idx" msprop:Generator_ColumnVarNameInTable="columnidx" msprop:Generator_ColumnPropNameInRow="idx" msprop:nullValue="0" msprop:Generator_ColumnPropNameInTable="idxColumn" msprop:Generator_UserColumnName="idx" type="xs:short" />
<xs:element name="Enable" msprop:Generator_ColumnVarNameInTable="columnEnable" msprop:Generator_ColumnPropNameInRow="Enable" msprop:nullValue="1" msprop:Generator_ColumnPropNameInTable="EnableColumn" msprop:Generator_UserColumnName="Enable" type="xs:boolean" minOccurs="0" />
<xs:element name="UseOrigin" msprop:Generator_ColumnVarNameInTable="columnUseOrigin" msprop:Generator_ColumnPropNameInRow="UseOrigin" msprop:nullValue="1" msprop:Generator_ColumnPropNameInTable="UseOriginColumn" msprop:Generator_UserColumnName="UseOrigin" type="xs:boolean" minOccurs="0" />
<xs:element name="UseEStop" msprop:Generator_ColumnVarNameInTable="columnUseEStop" msprop:Generator_ColumnPropNameInRow="UseEStop" msprop:nullValue="1" msprop:Generator_ColumnPropNameInTable="UseEStopColumn" msprop:Generator_UserColumnName="UseEStop" type="xs:boolean" minOccurs="0" />
<xs:element name="HomeAcc" msprop:Generator_ColumnVarNameInTable="columnHomeAcc" msprop:Generator_ColumnPropNameInRow="HomeAcc" msprop:nullValue="100" msprop:Generator_ColumnPropNameInTable="HomeAccColumn" msprop:Generator_UserColumnName="HomeAcc" type="xs:double" minOccurs="0" />
<xs:element name="HomeDcc" msprop:Generator_ColumnVarNameInTable="columnHomeDcc" msprop:Generator_ColumnPropNameInRow="HomeDcc" msprop:nullValue="50" msprop:Generator_ColumnPropNameInTable="HomeDccColumn" msprop:Generator_UserColumnName="HomeDcc" type="xs:double" minOccurs="0" />
<xs:element name="HomeHigh" msprop:Generator_ColumnVarNameInTable="columnHomeHigh" msprop:Generator_ColumnPropNameInRow="HomeHigh" msprop:nullValue="100" msprop:Generator_ColumnPropNameInTable="HomeHighColumn" msprop:Generator_UserColumnName="HomeHigh" type="xs:double" minOccurs="0" />
<xs:element name="HomeLow" msprop:Generator_ColumnVarNameInTable="columnHomeLow" msprop:Generator_ColumnPropNameInRow="HomeLow" msprop:nullValue="50" msprop:Generator_ColumnPropNameInTable="HomeLowColumn" msprop:Generator_UserColumnName="HomeLow" type="xs:double" minOccurs="0" />
<xs:element name="SWLimitP" msprop:Generator_ColumnVarNameInTable="columnSWLimitP" msprop:Generator_ColumnPropNameInRow="SWLimitP" msprop:nullValue="0" msprop:Generator_ColumnPropNameInTable="SWLimitPColumn" msprop:Generator_UserColumnName="SWLimitP" type="xs:double" minOccurs="0" />
<xs:element name="Title" msprop:Generator_ColumnVarNameInTable="columnTitle" msprop:Generator_ColumnPropNameInRow="Title" msprop:nullValue="_empty" msprop:Generator_ColumnPropNameInTable="TitleColumn" msprop:Generator_UserColumnName="Title" type="xs:string" minOccurs="0" />
<xs:element name="InpositionAccr" msprop:Generator_ColumnVarNameInTable="columnInpositionAccr" msprop:Generator_ColumnPropNameInRow="InpositionAccr" msprop:nullValue="0.1" msprop:Generator_ColumnPropNameInTable="InpositionAccrColumn" msprop:Generator_UserColumnName="InpositionAccr" type="xs:float" minOccurs="0" />
<xs:element name="MaxSpeed" msprop:Generator_ColumnVarNameInTable="columnMaxSpeed" msprop:Generator_ColumnPropNameInRow="MaxSpeed" msprop:nullValue="0" msprop:Generator_ColumnPropNameInTable="MaxSpeedColumn" msprop:Generator_UserColumnName="MaxSpeed" type="xs:double" minOccurs="0" />
<xs:element name="MaxAcc" msprop:Generator_ColumnVarNameInTable="columnMaxAcc" msprop:Generator_ColumnPropNameInRow="MaxAcc" msprop:nullValue="0" msprop:Generator_ColumnPropNameInTable="MaxAccColumn" msprop:Generator_UserColumnName="MaxAcc" type="xs:double" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:unique name="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:MotionParam" />
<xs:field xpath="mstns:idx" />
</xs:unique>
</xs:element>
</xs:schema>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool to store the dataset designer's layout information.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DiagramLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="-10" ViewPortY="-10" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<Shapes>
<Shape ID="DesignTable:MotionParam" ZOrder="1" X="0" Y="0" Height="257" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="86" />
</Shapes>
<Connectors />
</DiagramLayout>

23380
Handler/Project/DataSet1.Designer.cs generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,16 @@
namespace Project
{
public partial class DataSet1
{
partial class ResultDataDataTable
{
}
partial class OPModelDataTable
{
}
}
}

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DataSetUISetting Version="1.00" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TableUISettings />
</DataSetUISetting>

2049
Handler/Project/DataSet1.xsd Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool to store the dataset designer's layout information.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DiagramLayout xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ex:showrelationlabel="False" ViewPortX="-10" ViewPortY="117" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<Shapes>
<Shape ID="DesignTable:Component_Reel_Result" ZOrder="1" X="11" Y="502" Height="381" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:Component_Reel_RegExRule" ZOrder="8" X="401" Y="216" Height="381" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="252" />
<Shape ID="DesignTable:Component_Reel_SID_Convert" ZOrder="7" X="327" Y="274" Height="191" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="140" />
<Shape ID="DesignTable:Component_Reel_SID_Information" ZOrder="14" X="895" Y="267" Height="381" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="197" SplitterPosition="254" />
<Shape ID="DesignTable:Component_Reel_PreSet" ZOrder="16" X="868" Y="663" Height="305" Width="287" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:Component_Reel_CustInfo" ZOrder="3" X="856" Y="142" Height="115" Width="299" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="64" />
<Shape ID="DesignTable:ResultSummary" ZOrder="12" X="307" Y="651" Height="153" Width="293" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="102" />
<Shape ID="DesignTable:Component_Reel_Print_Information" ZOrder="2" X="1008" Y="42" Height="210" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="140" />
<Shape ID="DesignTable:Component_Reel_PrintRegExRule" ZOrder="5" X="436" Y="427" Height="286" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="235" />
<Shape ID="DesignTable:SidinfoCustGroup" ZOrder="4" X="588" Y="532" Height="96" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="46" />
<Shape ID="DesignTable:Users" ZOrder="25" X="342" Y="536" Height="87" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="83" />
<Shape ID="DesignTable:MCModel" ZOrder="13" X="333" Y="112" Height="410" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="406" />
<Shape ID="DesignTable:language" ZOrder="11" X="502" Y="80" Height="239" Width="134" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="235" />
<Shape ID="DesignTable:OPModel" ZOrder="17" X="8" Y="281" Height="371" Width="152" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="367" />
<Shape ID="DesignTable:BCDData" ZOrder="24" X="156" Y="140" Height="163" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:UserSID" ZOrder="23" X="170" Y="256" Height="68" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="64" />
<Shape ID="DesignTable:MailFormat" ZOrder="22" X="179" Y="339" Height="49" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="45" />
<Shape ID="DesignTable:MailRecipient" ZOrder="21" X="172" Y="414" Height="68" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="64" />
<Shape ID="DesignTable:SIDHistory" ZOrder="20" X="0" Y="90" Height="182" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="178" />
<Shape ID="DesignTable:InputDescription" ZOrder="19" X="0" Y="0" Height="143" Width="164" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="139" />
<Shape ID="DesignTable:OutputDescription" ZOrder="15" X="168" Y="0" Height="182" Width="174" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="178" />
<Shape ID="DesignTable:UserTable" ZOrder="18" X="336" Y="0" Height="86" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="82" />
<Shape ID="DesignTable:ErrorDescription" ZOrder="10" X="639" Y="98" Height="105" Width="161" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="101" />
<Shape ID="DesignTable:ModelList" ZOrder="9" X="670" Y="74" Height="48" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="44" />
<Shape ID="DesignSources:QueriesTableAdapter" ZOrder="6" X="275" Y="569" Height="124" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="120" />
</Shapes>
<Connectors />
</DiagramLayout>

View File

@@ -0,0 +1,455 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
using AR;
namespace Project.Device
{
public class KeyenceBarcode : IDisposable
{
public string IP { get; set; }
public int Port { get; set; }
private Winsock_Orcas.Winsock ws;
public event EventHandler<RecvDataEvent> BarcodeRecv;
public event EventHandler<RecvImageEvent> ImageRecv;
RecvDataEvent LastData = null;
RecvImageEvent LastImage = null;
public Boolean IsTriggerOn { get; set; } = false;
private DateTime LastTrigOnTime = DateTime.Now;
private System.Threading.Thread thliveimage = null;
public int LiveImagetDelay = 500;
public bool disposed = false;
bool bRunConnectionK = true;
public string Tag { get; set; }
public string baseZPL { get; set; }
public class RecvDataEvent : EventArgs
{
public string RawData { get; set; }
public RecvDataEvent(string rawdata)
{
this.RawData = rawdata;
}
}
public class RecvImageEvent : EventArgs
{
public Image Image { get; set; }
public RecvImageEvent(Image rawdata)
{
this.Image = rawdata;
}
}
public KeyenceBarcode(string ip = "192.168.100.100", int port = 9004)
{
this.IP = ip;
this.Port = port;
ws = new Winsock_Orcas.Winsock();
ws.LegacySupport = true;
ws.DataArrival += Ws_DataArrival;
ws.Connected += Ws_Connected;
thliveimage = new Thread(new ThreadStart(GetLiveImage));
thliveimage.IsBackground = false;
thliveimage.Start();
Console.WriteLine($"{ip} / Port:{port}");
}
~KeyenceBarcode()
{
Dispose(disposing: false);
}
public void Dispose()
{
Dispose(disposing: true);
GC.SuppressFinalize(this);
}
#region "Image Utility"
/// <summary>
/// 8bpp 이미지의 팔레트를 설정합니다
/// </summary>
/// <param name="bmp"></param>
public void UpdateGrayPallete(ref Bitmap bmp)
{
if (bmp.PixelFormat == System.Drawing.Imaging.PixelFormat.Format8bppIndexed)
{
System.Drawing.Imaging.ColorPalette pal = bmp.Palette;
for (int i = 0; i < 256; i++)
{
pal.Entries[i] = Color.FromArgb(i, i, i);
}
bmp.Palette = pal;
}
}
public void GetImagePtr(Bitmap bmp, out IntPtr ptr, out int stride)
{
stride = 0;
ptr = IntPtr.Zero;
try
{
BitmapData bmpdata = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat);
ptr = bmpdata.Scan0;
stride = bmpdata.Stride;
bmp.UnlockBits(bmpdata);
}
catch (Exception ex)
{
}
}
public bool IsCompatible(Bitmap source, Bitmap target)
{
if (source == null) return false;
try
{
if (source.Height != target.Height ||
source.Width != target.Width ||
source.PixelFormat != target.PixelFormat) return false;
return true;
}
catch (Exception ex)
{
PUB.log.AddE("keyence compatiable : " + ex.Message);
return false;
}
}
public bool IsCompatible(Bitmap source, int w, int h, PixelFormat pf)
{
if (source == null) return false;
if (source.Height != h ||
source.Width != w ||
source.PixelFormat != pf) return false;
return true;
}
public Bitmap CreateBitmap(int w, int h)
{
Bitmap bmp = new Bitmap(w, h, PixelFormat.Format8bppIndexed);
UpdateGrayPallete(ref bmp);
return bmp;
}
byte[] memorybuffer;
public void UpdateBitmap(Bitmap source, Bitmap target)
{
if (source.Width < 10 || source.Height < 10) return;
if (target == null || target.Width < 10 || target.Height < 10)
{
target = CreateBitmap(source.Width, source.Height);
}
var bitmaperrcnt = AR.VAR.I32[eVarInt32.BitmapCompatErr];
if (IsCompatible(source, target) == false)
{
PUB.log.AddE($"키엔스비트맵호환오류 원본:{source.Width}x{source.Height} => 대상:{target.Width}x{target.Height}");
if (bitmaperrcnt > 5)
{
var o = target;
target = CreateBitmap(source.Width, source.Height);
if (o != null) o.Dispose();
bitmaperrcnt = 0;
}
else AR.VAR.I32[eVarInt32.BitmapCompatErr] += 1;
return;
}
else
{
if (bitmaperrcnt > 0)
AR.VAR.I32[eVarInt32.BitmapCompatErr] = 0;
}
//get image pointer
BitmapData bmpdatas = source.LockBits(new Rectangle(0, 0, source.Width, source.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, source.PixelFormat);
var ptrs = bmpdatas.Scan0;
var strides = bmpdatas.Stride;
BitmapData bmpdatat = target.LockBits(new Rectangle(0, 0, target.Width, target.Height), System.Drawing.Imaging.ImageLockMode.WriteOnly, target.PixelFormat);
var ptrt = bmpdatat.Scan0;
var stridet = bmpdatat.Stride;
//read source data
var sourcesize = Math.Abs(bmpdatas.Stride) * source.Height;
if (memorybuffer == null || memorybuffer.Length != sourcesize)
{
memorybuffer = new byte[sourcesize];
}
Marshal.Copy(ptrs, memorybuffer, 0, sourcesize);
//write target data
Marshal.Copy(memorybuffer, 0, ptrt, sourcesize);
source.UnlockBits(bmpdatas);
target.UnlockBits(bmpdatat);
}
public void UpdateBitmap(Bitmap target, byte[] buffer, int w, int h)
{
if (IsCompatible(target, w, h, target.PixelFormat) == false)
{
throw new Exception("cannot udate incompatible bitmap.");
}
//get image pointer
BitmapData bmpdata = target.LockBits(new Rectangle(0, 0, target.Width, target.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, target.PixelFormat);
var ptr = bmpdata.Scan0;
var stride = bmpdata.Stride;
if (stride == w) //image x4
{
Marshal.Copy(buffer, 0, ptr, stride * h);
}
else
{
for (int i = 0; i < target.Height; ++i)
{
Marshal.Copy(buffer, i * w, new IntPtr(ptr.ToInt64() + i * stride), w);
}
}
target.UnlockBits(bmpdata);
}
#endregion
protected virtual void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
//dipose managed resources;
bRunConnectionK = false;
Trigger(false);
ws.DataArrival -= Ws_DataArrival;
ws.Connected -= Ws_Connected;
Disconnect();
if (thliveimage != null && thliveimage.IsAlive) thliveimage.Abort();
}
//dispose unmmanged resources;
}
disposed = true;
}
void GetLiveImage()
{
while (bRunConnectionK)
{
if (IsConnect && IsTriggerOn)
{
var tagname = this.Tag;
var img = GetImage();
this.LastImage = new RecvImageEvent(img);
ImageRecv?.Invoke(this, this.LastImage);
System.Threading.Thread.Sleep(LiveImagetDelay);
}
else System.Threading.Thread.Sleep(1000);
}
}
private void Ws_Connected(object sender, Winsock_Orcas.WinsockConnectedEventArgs e)
{
this.Trigger(true);
}
public void Connect()
{
if (this.ws.State == Winsock_Orcas.WinsockStates.Closed)
{
this.ws.RemoteHost = this.IP;
this.ws.RemotePort = this.Port;
this.ws.Connect();
}
}
public void Disconnect()
{
if (this.ws.State != Winsock_Orcas.WinsockStates.Closed)
this.ws.Close();
}
private void Ws_DataArrival(object sender, Winsock_Orcas.WinsockDataArrivalEventArgs e)
{
var data = ws.Get<string>();
this.LastData = new RecvDataEvent(data);
BarcodeRecv?.Invoke(this, LastData);
}
public bool Reset()
{
//if (IsTriggerOn) return;
string cmd = "RESET";
if (IsConnect == false)
{
PUB.log.AddE("Keyence Not Connected : RESET");
return false;
}
try
{
ws.Send(cmd + "\r");
return true;
}
catch (Exception ex)
{
PUB.log.AddE(ex.Message);
return false;
}
}
public void Trigger(bool bOn)
{
//if (IsTriggerOn) return;
string cmd = bOn ? "LON" : "LOFF";
if (bOn) LastTrigOnTime = DateTime.Now;
try
{
ws.Send(cmd + "\r");
IsTriggerOn = bOn;
}
catch { }
}
public void ExecCommand(string cmd)
{
try
{
ws.Send(cmd + "\r");
}
catch { }
}
public bool IsConnect
{
get
{
if (ws == null) return false;
return ws.State == Winsock_Orcas.WinsockStates.Connected;
}
}
private bool readimage = false;
ManualResetEvent mre = new ManualResetEvent(true);
bool mreSetOK = true;
bool mreResetOK = true;
public Image GetImage()
{
Image oimg = null;
if (mreResetOK && mre.WaitOne(1000) == false)
{
mreResetOK = false;
return oimg;
}
else
{
mreResetOK = mre.Reset();
try
{
var url = $"http://{this.IP}/liveimage.jpg";
var data = UTIL.DownloadImagefromUrl(url);
var ms = new System.IO.MemoryStream(data);
oimg = Image.FromStream(ms);
}
catch (Exception ex)
{
PUB.log.AddE("Keyence GetImage:" + ex.Message);
}
if (mreResetOK)
{
mreSetOK = mre.Set();
}
}
return oimg;
}
public bool SaveImage(string fn)
{
var fi = new System.IO.FileInfo(fn);
if (fi.Directory.Exists == false)
fi.Directory.Create();
if (mreResetOK && mre.WaitOne(1000) == false)
{
mreResetOK = false;
return false;
}
else
{
bool retval = false;
mreResetOK = mre.Reset();
try
{
var url = $"http://{this.IP}/liveimage.jpg";
var data = UTIL.DownloadImagefromUrl(url);
using (var ms = new System.IO.MemoryStream(data))
{
using (var oimg = Image.FromStream(ms))
oimg.Save(fi.FullName);
}
retval = true;
}
catch (Exception ex)
{
}
if (mreResetOK)
mre.Set();
return retval;
}
}
public bool UpdateKeyenceImage(ref System.Windows.Forms.PictureBox pic)
{
bool retval = false;
if (readimage)
{
PUB.log.AddAT("키엔스 이미지를 받고 잇어 명령을 처리하지 않음");
}
else
{
readimage = true;
var oimg = pic.Image;
var newimage = GetImage();
pic.Image = newimage;
retval = newimage != null;
if (oimg != null) oimg.Dispose();
}
readimage = false;
return retval;
}
}
}

View File

@@ -0,0 +1,116 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Project.Device
{
public class SATOPrinter : arDev.RS232
{
public string LastPrintZPL = string.Empty;
public string qrData = string.Empty;
public string baseZPL
{
get
{
var fi = new System.IO.FileInfo(AR.SETTING.Data.baseZPLFile);
if (fi.Exists)
{
return System.IO.File.ReadAllText(fi.FullName, System.Text.Encoding.Default);
}
else return Properties.Settings.Default.ZPL7;
}
}
public SATOPrinter()
{
//this.baseZPL = Properties.Settings.Default.ZPL7;
this.Terminal = eTerminal.CR;
this.ReceiveData += SATOPrinter_ReceiveData;
this.ReceiveData_Raw += SATOPrinter_ReceiveData_Raw;
}
private void SATOPrinter_ReceiveData_Raw(object sender, ReceiveDataEventArgs e)
{
PUB.log.Add($"SATO Recv(RAW) : " + e.StrValue);
}
private void SATOPrinter_ReceiveData(object sender, ReceiveDataEventArgs e)
{
PUB.log.Add($"SATO Recv : " + e.StrValue);
}
public Boolean TestPrint(Boolean drawbox, string manu = "", string mfgdate = "")
{
var dtstr = DateTime.Now.ToShortDateString();
var printcode = "103077807;Z577603504;105-35282-1105;15000;RC00004A219001W;20210612";
var reel = new Class.Reel(printcode);
//reel.id = "RLID" + DateTime.Now.ToString("MMHHmmssfff");
reel.sid = "103000000";
reel.partnum = "PARTNO".PadRight(20, '0'); //20자리
if (mfgdate == "") reel.mfg = dtstr;
else reel.mfg = mfgdate;
reel.lot = "LOT000000000";
if (manu == "") reel.manu = "ATK4EET1";
else reel.manu = manu;
reel.qty = 15000;
var rlt = Print(reel, true, drawbox);
var fi = new System.IO.FileInfo(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "temp_zpl.txt"));
System.IO.File.WriteAllText(fi.FullName, LastPrintZPL, System.Text.Encoding.Default);
return rlt;
}
public Boolean Print(Class.Reel reel, Boolean display1drid, Boolean drawOUtBox)
{
string prtData;
prtData = makeZPL_210908(reel, drawOUtBox, out qrData);
return Print(prtData);
}
public bool Print(string _zpl)
{
this.LastPrintZPL = _zpl;
if (this.IsOpen() == false) return false;
try
{
this.Write(_zpl);
return true;
}
catch (Exception ex)
{
return false;
}
}
public string makeZPL_210908(Class.Reel reel, Boolean drawbox, out string qrData)
{
string m_strSend = string.Empty;
qrData = string.Format("{0};{1};{2};{3};{4};{5};{6}", reel.sid, reel.lot, reel.manu, reel.qty, reel.id, reel.mfg, reel.partnum);
var reeid = reel.id;
if (reeid.Length > 20)
reeid = "..." + reeid.Substring(reeid.Length - 20);
m_strSend = this.baseZPL;
m_strSend = m_strSend.Replace("{qrData}", qrData);
m_strSend = m_strSend.Replace("{sid}", reel.sid);
m_strSend = m_strSend.Replace("{lot}", reel.lot);
m_strSend = m_strSend.Replace("{partnum}", reel.partnum);
m_strSend = m_strSend.Replace("{rid}", reeid);
m_strSend = m_strSend.Replace("{qty}", reel.qty.ToString());
m_strSend = m_strSend.Replace("{mfg}", reel.mfg);
m_strSend = m_strSend.Replace("{supply}", reel.manu);
//줄바꿈제거
m_strSend = m_strSend.Replace("\r", "").Replace("\n", "");
return m_strSend;
}
}
}

View File

@@ -0,0 +1,282 @@
using arCtl;
using SATOPrinterAPI;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Project.Device
{
public class SATOPrinterAPI : IDisposable
{
private bool disposed = false;
Printer SATOPrinter = null;
public string LastPrintZPL = string.Empty;
public string qrData = string.Empty;
public string PortName { get; set; }
public int BaudRate { get; set; }
public string baseZPL
{
get
{
var fi = new System.IO.FileInfo(AR.SETTING.Data.baseZPLFile);
if (fi.Exists)
{
return System.IO.File.ReadAllText(fi.FullName, System.Text.Encoding.Default);
}
else return Properties.Settings.Default.ZPL7;
}
}
public SATOPrinterAPI()
{
SATOPrinter = new Printer();
SATOPrinter.Timeout = 2500;
SATOPrinter.Interface = Printer.InterfaceType.COM;
SATOPrinter.ByteAvailable += SATOPrinter_ByteAvailable;
}
bool _isopen = false;
public bool Open()
{
try
{
SATOPrinter.COMPort = this.PortName;
SATOPrinter.COMSetting.Baudrate = this.BaudRate;
SATOPrinter.Connect();
_isopen = true;
return _isopen;
}
catch { _isopen = false; return false; }
}
private string ControlCharReplace(string data)
{
Dictionary<string, char> chrList = ControlCharList();
foreach (string key in chrList.Keys)
{
data = data.Replace(key, chrList[key].ToString());
}
return data;
}
private Dictionary<string, char> ControlCharList()
{
Dictionary<string, char> ctr = new Dictionary<string, char>();
ctr.Add("[NUL]", '\u0000');
ctr.Add("[SOH]", '\u0001');
ctr.Add("[STX]", '\u0002');
ctr.Add("[ETX]", '\u0003');
ctr.Add("[EOT]", '\u0004');
ctr.Add("[ENQ]", '\u0005');
ctr.Add("[ACK]", '\u0006');
ctr.Add("[BEL]", '\u0007');
ctr.Add("[BS]", '\u0008');
ctr.Add("[HT]", '\u0009');
ctr.Add("[LF]", '\u000A');
ctr.Add("[VT]", '\u000B');
ctr.Add("[FF]", '\u000C');
ctr.Add("[CR]", '\u000D');
ctr.Add("[SO]", '\u000E');
ctr.Add("[SI]", '\u000F');
ctr.Add("[DLE]", '\u0010');
ctr.Add("[DC1]", '\u0011');
ctr.Add("[DC2]", '\u0012');
ctr.Add("[DC3]", '\u0013');
ctr.Add("[DC4]", '\u0014');
ctr.Add("[NAK]", '\u0015');
ctr.Add("[SYN]", '\u0016');
ctr.Add("[ETB]", '\u0017');
ctr.Add("[CAN]", '\u0018');
ctr.Add("[EM]", '\u0019');
ctr.Add("[SUB]", '\u001A');
ctr.Add("[ESC]", '\u001B');
ctr.Add("[FS]", '\u001C');
ctr.Add("[GS]", '\u001D');
ctr.Add("[RS]", '\u001E');
ctr.Add("[US]", '\u001F');
ctr.Add("[DEL]", '\u007F');
return ctr;
}
private bool Query(string cmd, out string errmsg)
{
errmsg = string.Empty;
if (string.IsNullOrEmpty(cmd))
{
errmsg = "No Command";
return false;
}
try
{
byte[] cmddata = Utils.StringToByteArray(ControlCharReplace(cmd));
byte[] receiveData = SATOPrinter.Query(cmddata);
if (receiveData != null)
{
errmsg = ControlCharConvert(Utils.ByteArrayToString(receiveData));
}
return true;
}
catch (Exception ex)
{
errmsg = ex.Message;
return false;
}
}
private string ControlCharConvert(string data)
{
Dictionary<char, string> chrList = ControlCharList().ToDictionary(x => x.Value, x => x.Key);
foreach (char key in chrList.Keys)
{
data = data.Replace(key.ToString(), chrList[key]);
}
return data;
}
~SATOPrinterAPI()
{
Dispose(disposing: false);
}
public void Dispose()
{
Dispose(disposing: true);
// This object will be cleaned up by the Dispose method.
// Therefore, you should call GC.SuppressFinalize to
// take this object off the finalization queue
// and prevent finalization code for this object
// from executing a second time.
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
// Check to see if Dispose has already been called.
if (!this.disposed)
{
// If disposing equals true, dispose all managed
// and unmanaged resources.
if (disposing)
{
// Dispose managed resources.
//component.Dispose();
}
SATOPrinter.Disconnect();
// Note disposing has been done.
disposed = true;
}
}
public bool IsOpen
{
get
{
if (_isopen == false || SATOPrinter == null) return false;
try
{
return true;// return SATOPrinter.IsBusy;
//var prn = this.SATOPrinter.GetPrinterStatus();
//return prn.IsOnline;
}
catch { return false; }
}
}
private void SATOPrinter_ByteAvailable(object sender, Printer.ByteAvailableEventArgs e)
{
byte[] rawData = e.Data;
var msg = Utils.ByteArrayToString(rawData);// System.Text.Encoding.Default.GetString(rawData);
PUB.log.Add($"SATO Recv : " + msg);
}
// private void SATOPrinter_ReceiveData_Raw(object sender, ReceiveDataEventArgs e)
//{
// PUB.log.Add($"SATO Recv(RAW) : " + e.StrValue);
//}
//private void SATOPrinter_ReceiveData(object sender, ReceiveDataEventArgs e)
//{
// PUB.log.Add($"SATO Recv : " + e.StrValue);
//}
public Boolean TestPrint(Boolean drawbox, string manu = "", string mfgdate = "")
{
var dtstr = DateTime.Now.ToShortDateString();
var printcode = "103077807;Z577603504;105-35282-1105;15000;RC00004A219001W;20210612";
var reel = new Class.Reel(printcode);
//reel.id = "RLID" + DateTime.Now.ToString("MMHHmmssfff");
reel.sid = "103000000";
reel.partnum = "PARTNO".PadRight(20, '0'); //20자리
if (mfgdate == "") reel.mfg = dtstr;
else reel.mfg = mfgdate;
reel.lot = "LOT000000000";
if (manu == "") reel.manu = "ATK4EET1";
else reel.manu = manu;
reel.qty = 15000;
var rlt = Print(reel, true, drawbox);
var fi = new System.IO.FileInfo(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "temp_zpl.txt"));
System.IO.File.WriteAllText(fi.FullName, LastPrintZPL, System.Text.Encoding.Default);
return rlt;
}
public Boolean Print(Class.Reel reel, Boolean display1drid, Boolean drawOUtBox)
{
string prtData;
prtData = makeZPL_210908(reel, drawOUtBox, out qrData);
return Print(prtData);
}
public bool Print(string _zpl)
{
this.LastPrintZPL = _zpl;
//if (this.IsOpen == false) return false;
try
{
byte[] cmddata = Utils.StringToByteArray(ControlCharReplace(_zpl));
SATOPrinter.Send(cmddata);
return true;
}
catch (Exception ex)
{
return false;
}
}
public string makeZPL_210908(Class.Reel reel, Boolean drawbox, out string qrData)
{
string m_strSend = string.Empty;
qrData = string.Format("{0};{1};{2};{3};{4};{5};{6}", reel.sid, reel.lot, reel.manu, reel.qty, reel.id, reel.mfg, reel.partnum);
var reeid = reel.id;
if (reeid.Length > 20)
reeid = "..." + reeid.Substring(reeid.Length - 20);
m_strSend = this.baseZPL;
m_strSend = m_strSend.Replace("{qrData}", qrData);
m_strSend = m_strSend.Replace("{sid}", reel.sid);
m_strSend = m_strSend.Replace("{lot}", reel.lot);
m_strSend = m_strSend.Replace("{partnum}", reel.partnum);
m_strSend = m_strSend.Replace("{rid}", reeid);
m_strSend = m_strSend.Replace("{qty}", reel.qty.ToString());
m_strSend = m_strSend.Replace("{mfg}", reel.mfg);
m_strSend = m_strSend.Replace("{supply}", reel.manu);
//줄바꿈제거
m_strSend = m_strSend.Replace("\r", "").Replace("\n", "");
return m_strSend;
}
}
}

View File

@@ -0,0 +1,91 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Project.Device
{
public class CSequence : AR.StateMachineSequence
{
public CSequence(int stepLen = 255) : base(stepLen) { }
public void Clear(eSMStep idx)
{
base.Clear((int)idx);
}
public int Get(eSMStep idx)
{
return base.Get((int)idx);
}
public void Set(eSMStep idx, byte value)
{
base.Set((int)idx, value);
}
public void Update(eSMStep idx, int incValue = 1)
{
base.Update((int)idx, incValue);
}
public TimeSpan GetTime(eSMStep idx = 0)
{
return base.GetTime((int)idx);
}
public int GetData(eSMStep idx)
{
return base.GetData((int)idx);
}
public void ClearData(eSMStep idx) { base.ClearData((int)idx); }
public void AddData(eSMStep idx, byte value = 1)
{
base.AddData((int)idx, value);
}
public void SetData(eSMStep idx, byte value)
{
_runseqdata[(int)idx] = value;
}
public void UpdateTime(eSMStep idx)
{
_runseqtime[(int)idx] = DateTime.Now;
}
}
public class CStateMachine : AR.StateMachine
{
/// <summary>
/// Sequece Value / data
/// </summary>
public CSequence seq;
public eSMStep PrePauseStep = eSMStep.NOTSET;
public CStateMachine()
{
seq = new CSequence(255);
}
public new eSMStep Step { get { return (eSMStep)base.Step; } }
public void SetNewStep(eSMStep newstep_, Boolean force = false)
{
//일시중지라면 중지전의 상태를 백업한다
if (newstep_ == eSMStep.PAUSE && this.Step != eSMStep.PAUSE && this.Step != eSMStep.WAITSTART) PrePauseStep = this.Step;
base.SetNewStep((byte)newstep_, force);
}
public new eSMStep getNewStep
{
get
{
return (eSMStep)newstep_;
}
}
public new eSMStep getOldStep
{
get
{
return (eSMStep)oldstep_;
}
}
}
}

View File

@@ -0,0 +1,154 @@
//#define OLD
using Project;
using Project.Device;
using System;
#if OLD
using static Project.StateMachine;
#endif
/// <summary>
/// 타워램프조작
/// </summary>
public static class TowerLamp
{
static bool enable = true;
#if OLD
static arDev.AzinAxt.DIO DIO = null;
#else
static arDev.DIO.IDIO DIO = null;
#endif
static int R = -1;
static int G = -1;
static int Y = -1;
static DateTime updatetime = DateTime.Now;
/// <summary>
/// 타워램프 사용여부 false 가 입력되면 모든 램프가 꺼집니다
/// </summary>
public static Boolean Enable
{
get { return enable; }
set
{
enable = value;
if (enable == false)
{
RED = false;
YEL = false;
GRN = false;
}
}
}
/// <summary>
/// 갱신주기 250ms 기본설정
/// </summary>
public static int UpdateInterval = 250;
#if OLD
public static void Init(arDev.AzinAxt.DIO dio_, int R_, int G_, int Y_)
#else
public static void Init(arDev.DIO.IDIO dio_, int R_, int G_, int Y_)
#endif
{
DIO = dio_;
R = R_;
G = G_;
Y = Y_;
}
public static void Update(eSMStep Step)
{
if (Enable == false) return;
if (DIO == null) return; ;// throw new Exception("DIO가 설정되지 않았습니다. Init 함수를 호출 하세요");
var ts = DateTime.Now - updatetime;
if (ts.TotalMilliseconds < UpdateInterval) return;
if (Step == eSMStep.RUN) //동작중에는 녹색을 점등
{
if (GRN == false) GRN = true;
if (RED == true) RED = false;
if (YEL == true) YEL = false;
}
else if (Step < eSMStep.IDLE || Step.ToString().StartsWith("HOME")) //초기화관련
{
GRN = false;
var cur = YEL;
RED = !cur;
YEL = !cur;
}
else if (Step == eSMStep.FINISH) //작업종료
{
var cur = GRN;
GRN = !cur;
YEL = !cur;
RED = false;
}
else if (Step == eSMStep.WAITSTART) //사용자대기
{
var cur = YEL;
YEL = !cur;
GRN = false;
RED = false;
}
else if (Step == eSMStep.ERROR || Step == eSMStep.EMERGENCY)
{
RED = !RED;
YEL = false;
GRN = false;
}
else if (Step == eSMStep.PAUSE)
{
if (RED == false) RED = true;
if (YEL == true) YEL = false;
if (GRN == true) GRN = false;
}
else
{
//나머지 모든 상황은 대기로 한다
if (YEL == false) YEL = true;
if (GRN == true) GRN = false;
if (RED == true) RED = false;
}
}
static void SetLamp(int port, bool value)
{
if (DIO == null || !DIO.IsInit || port < 0) return;
DIO.SetOutput(port, value);
}
static bool GetLamp(int port)
{
if (DIO == null || !DIO.IsInit || port < 0) return false;
#if OLD
return DIO.OUTPUT(port);
#else
return DIO.GetDOValue(port);
#endif
}
public static Boolean GRN
{
get { return GetLamp(G); }
set { SetLamp(G, value); }
}
public static Boolean YEL
{
get { return GetLamp(Y); }
set { SetLamp(Y, value); }
}
public static Boolean RED
{
get { return GetLamp(R); }
set { SetLamp(R, value); }
}
}
//230619 chi PAUSE 상태추가 => RED ON
// 전처리추가

View File

@@ -0,0 +1,380 @@
using AR;
using Emgu.CV;
using Emgu.CV.Structure;
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Net;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
using UIControl;
namespace Project
{
public partial class FMain : Form
{
DateTime CameraConTimeL = DateTime.Now;
DateTime CameraConTimeR = DateTime.Now;
DateTime BarcodeConTime = DateTime.Now;
DateTime KeyenceConTimeF = DateTime.Now;
DateTime KeyenceConTimeR = DateTime.Now;
DateTime PrintLConTime = DateTime.Now;
DateTime PrintRConTime = DateTime.Now;
DateTime swPLCConTime = DateTime.Now;
Boolean bRunConnection = true;
DateTime SendStatusTime = DateTime.Now;
void bwDeviceConnection()
{
while (bRunConnection && this.Disposing == false && this.Disposing == false)
{
//초기혹은 파괴상태는 처리안함
if (PUB.keyenceF != null && PUB.keyenceF.disposed &&
PUB.keyenceR != null && PUB.keyenceR.disposed)
{
System.Threading.Thread.Sleep(1000);
continue;
}
if (ConnectSeq == 0) //키엔스
{
var tscam = DateTime.Now - KeyenceConTimeF;
if (tscam.TotalSeconds > 5 && PUB.flag.get(eVarBool.FG_KEYENCE_OFFF) == false)
{
if (AR.SETTING.Data.Keyence_IPF.isEmpty() == false)
{
if (PUB.keyenceF != null && PUB.keyenceF.IsConnect == false)
{
PUB.keyenceF.Connect();
KeyenceConTimeF = DateTime.Now;
}
else
{
//연결이 되어있다면 상태값을 요청한다
KeyenceConTimeF = DateTime.Now.AddSeconds(-4);
}
}
else KeyenceConTimeF = DateTime.Now.AddSeconds(-4);
}
ConnectSeq += 1;
}
else if (ConnectSeq == 1) //키엔스
{
var tscam = DateTime.Now - KeyenceConTimeR;
if (tscam.TotalSeconds > 5 && PUB.flag.get(eVarBool.FG_KEYENCE_OFFR) == false)
{
if (AR.SETTING.Data.Keyence_IPR.isEmpty() == false)
{
if (PUB.keyenceR != null && PUB.keyenceR.IsConnect == false)
{
PUB.keyenceR.Connect();
KeyenceConTimeR = DateTime.Now;
}
else
{
//연결이 되어있다면 상태값을 요청한다
KeyenceConTimeR = DateTime.Now.AddSeconds(-4);
}
}
else KeyenceConTimeR = DateTime.Now.AddSeconds(-4);
}
ConnectSeq += 1;
}
else if (ConnectSeq == 2) //카메라(왼)
{
var tscam = DateTime.Now - CameraConTimeL;
if (tscam.TotalSeconds > 7)
{
//if (COMM.SETTING.Data.EnableExtVision)
if (PUB.wsL == null || PUB.wsL.Connected == false)
{
if (AR.SETTING.Data.Log_CameraConn)
PUB.log.Add($"카메라(L) 접속 시도({AR.SETTING.Data.HostIPL}:{AR.SETTING.Data.HostPortL})");
if (PUB.wsL != null)
{
DetachCameraEventL(); //이벤트 종료
PUB.wsL.Dispose();
}
PUB.wsL = new WatsonWebsocket.WatsonWsClient(AR.SETTING.Data.HostIPL, AR.SETTING.Data.HostPortL, false);
AttachCameraEventL();
try
{
PUB.wsL.StartWithTimeout();
}
catch (Exception ex)
{
PUB.log.AddE(ex.Message); //220214
}
CameraConTimeL = DateTime.Now;
}
else
{
//연결이 되어있다면 상태값을 요청한다
//if (PUB.flag.get(eVarBool.FG_RDY_CAMERA_L) == false)
{
//마지막 수신시간으로 부터 5초가 지나면 전송한다
//var tsRecv = DateTime.Now - lastRecvWSL;
//if (tsRecv.TotalSeconds >= 15)
//{
// PUB.wsL.Dispose();
//}
//else if (tsRecv.TotalSeconds >= 5)
{
WS_Send(eWorkPort.Left, PUB.wsL, string.Empty, "STATUS", "");
}
CameraConTimeL = DateTime.Now.AddSeconds(-4);
}
}
}
ConnectSeq += 1;
}
else if (ConnectSeq == 3) //카메라(우)
{
var tscam = DateTime.Now - CameraConTimeR;
if (tscam.TotalSeconds > 7)
{
//if (COMM.SETTING.Data.EnableExtVision)
if (PUB.wsR == null || PUB.wsR.Connected == false)
{
if (AR.SETTING.Data.Log_CameraConn)
PUB.log.Add($"카메라(R) 접속 시도({AR.SETTING.Data.HostIPR}:{AR.SETTING.Data.HostPortR})");
if (PUB.wsR != null)
{
DetachCameraEventR(); //이벤트 종료
PUB.wsR.Dispose();
}
PUB.wsR = new WatsonWebsocket.WatsonWsClient(AR.SETTING.Data.HostIPR, AR.SETTING.Data.HostPortR, false);
AttachCameraEventR();
try
{
PUB.wsR.Start();
}
catch (Exception ex)
{
PUB.log.AddE(ex.Message); //220214
}
CameraConTimeR = DateTime.Now;
}
else
{
//연결이 되어있다면 상태값을 요청한다
//if (PUB.flag.get(eVarBool.FG_RDY_CAMERA_R) == false)
{
//마지막 수신시간으로 부터 5초가 지나면 전송한다
//var tsRecv = DateTime.Now - lastRecvWSR;
//if (tsRecv.TotalSeconds >= 15)
//{
// PUB.wsR.Dispose();
//}
//else if (tsRecv.TotalSeconds >= 5)
{
WS_Send(eWorkPort.Right, PUB.wsR, string.Empty, "STATUS", "");
}
CameraConTimeR = DateTime.Now.AddSeconds(-4);
}
}
}
ConnectSeq += 1;
}
else if (ConnectSeq == 4) //바코드연결
{
var tscam = DateTime.Now - BarcodeConTime;
if (tscam.TotalSeconds > 5)
{
if (AR.SETTING.Data.Barcode_Port.isEmpty() == false)
{
if (PUB.BarcodeFix == null || PUB.BarcodeFix.IsOpen() == false)
{
PUB.BarcodeFix.PortName = AR.SETTING.Data.Barcode_Port;
PUB.BarcodeFix.BaudRate = AR.SETTING.Data.Barcode_Baud;
PUB.BarcodeFix.Open();
BarcodeConTime = DateTime.Now;
}
else
{
//연결이 되어있다면 상태값을 요청한다
BarcodeConTime = DateTime.Now.AddSeconds(-4);
}
}
else BarcodeConTime = DateTime.Now.AddSeconds(-4);
}
ConnectSeq += 1;
}
else if (ConnectSeq == 5) //프린터(좌)
{
var tscam = DateTime.Now - PrintLConTime;
if (tscam.TotalSeconds > 5)
{
if (AR.SETTING.Data.PrintL_Port.isEmpty() == false)
{
if (PUB.PrinterL == null || PUB.PrinterL.IsOpen == false)
{
try
{
PUB.PrinterL.PortName = AR.SETTING.Data.PrintL_Port;
PUB.PrinterL.BaudRate = AR.SETTING.Data.PrintL_Baud;
PUB.PrinterL.Open();
PrintLConTime = DateTime.Now;
}
catch (Exception ex)
{
}
}
else
{
//연결이 되어있다면 상태값을 요청한다
PrintLConTime = DateTime.Now.AddSeconds(-4);
}
}
else PrintLConTime = DateTime.Now.AddSeconds(-4);
}
ConnectSeq += 1;
}
else if (ConnectSeq == 6) //프린터(우)
{
var tscam = DateTime.Now - PrintRConTime;
if (tscam.TotalSeconds > 5)
{
if (AR.SETTING.Data.PrintR_Port.isEmpty() == false)
{
if (PUB.PrinterR == null || PUB.PrinterR.IsOpen == false)
{
try
{
PUB.PrinterR.PortName = AR.SETTING.Data.PrintR_Port;
PUB.PrinterR.BaudRate = AR.SETTING.Data.PrintR_Baud;
PUB.PrinterR.Open();
PrintRConTime = DateTime.Now;
}
catch (Exception ex) { }
}
else
{
//연결이 되어있다면 상태값을 요청한다
PrintRConTime = DateTime.Now.AddSeconds(-4);
}
}
else PrintRConTime = DateTime.Now.AddSeconds(-4);
}
ConnectSeq = 7;
}
else if (ConnectSeq == 7) //swPLC 230725
{
var tscam = DateTime.Now - swPLCConTime;
if (tscam.TotalSeconds > 5)
{
if (PUB.plc != null && PUB.plc.Init == false)
{
PUB.plc.Start();
}
swPLCConTime = DateTime.Now;
}
ConnectSeq = 0;
}
var tsst = DateTime.Now - SendStatusTime;
if (tsst.TotalSeconds > 3)
{
//내정보를 전송한다.
var modelVision = "";
if (PUB.Result.isSetvModel) modelVision = PUB.Result.vModel.Title;
var dt = new
{
mc = SETTING.Data.McName,
status = PUB.sm.Step.ToString(),
model = modelVision,
bypass = (VAR.BOOL[eVarBool.Opt_DisablePrinter] ? true : false),
};
string jsonStr = Newtonsoft.Json.JsonConvert.SerializeObject(dt);
var url = $@"http://10.131.32.29:8080/api/updatelastatus";
var rlt = PostFromUrl(url, jsonStr, out bool iserr, _timeout: 1000);
if (iserr) PUB.log.AddE($"ECS 상태정보실패 메세지:{rlt}");
SendStatusTime = DateTime.Now;
}
System.Threading.Thread.Sleep(2000);
}
Console.WriteLine("Close : bwDeviceConnection");
}
public string PostFromUrl(string url, string jsonStr, out Boolean isError, string authid = "", string authpw = "", int _timeout = 0)
{
isError = false;
string result = "";
try
{
var timeout = 1000;
//RaiseMessage(false, "POST : " + url);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url));
if (_timeout == 0)
{
request.Timeout = timeout;
request.ReadWriteTimeout = timeout;
}
else
{
request.Timeout = _timeout;
request.ReadWriteTimeout = _timeout;
}
if (string.IsNullOrEmpty(authid) == false && string.IsNullOrEmpty(authpw) == false)
{
string authInfo = $"{authid}:{authpw}";
authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
request.Headers["Authorization"] = "Basic " + authInfo;
}
request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = jsonStr.Length;
request.MaximumAutomaticRedirections = 4;
request.MaximumResponseHeadersLength = 4;
request.Credentials = CredentialCache.DefaultCredentials;
using (StreamWriter sw = new StreamWriter(request.GetRequestStream()))
{
sw.Write(jsonStr);
sw.Flush();
sw.Close();
var response = request.GetResponse() as HttpWebResponse;
using (var txtReader = new StreamReader(response.GetResponseStream()))
{
result = txtReader.ReadToEnd();
}
}
// LastQueryBUF = result;
//LastQueryURL = url;
//RaiseRawMessage(url, "RESULT\n" + result); //181026 - show data
}
catch (WebException wex)
{
isError = true;
result = wex.ToString();// new StreamReader(wex.Response.GetResponseStream()).ReadToEnd();
//RaiseMessage(true, "POST-ERROR\n" + result);
}
return result;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,431 @@
#pragma warning disable IDE1006 // 명명 스타일
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using arDev.DIO;
using arDev.AjinEXTEK;
using AR;
using AR;
namespace Project.Dialog
{
public partial class fIOMonitor : Form
{
arCtl.GridView.GridView[] gvIlog;
Label[] lbILog;
public fIOMonitor()
{
InitializeComponent();
this.FormClosed += fIOMonitor_FormClosed;
this.Opacity = 1.0;
gvIlog = new arCtl.GridView.GridView[] {
gbi00,gbi01,gbi02,gbi03,gbi04,gbi05,
gbi06,gbi07,gbi08,gbi09,gbi10,gbi11,
gbi12,gbi13,gbi14,gbi15,gbi16,gbi17,
};
lbILog = new Label[] {
lbi00,lbi01,lbi02,lbi03,lbi04,lbi05,
lbi06,lbi07,lbi08,lbi09,lbi10,lbi11,
lbi12,lbi13,lbi14,lbi15,lbi16,lbi17,
};
//DI,DO,
var dinames = DIO.Pin.GetDIName;
var donames = DIO.Pin.GetDOName;
tblDI.setTitle(dinames);
tblDO.setTitle(donames);
//tblFG.setTitle(PUB.flag.Name);
var pinNameI = DIO.Pin.GetDIPinName;// new string[dinames.Length];
var pinNameO = DIO.Pin.GetDOPinName;// new string[donames.Length];
//for (int i = 0; i < pinNameI.Length; i++) pinNameI[i] = Enum.GetName(typeof(eDIPin), i);
//for (int i = 0; i < pinNameO.Length; i++) pinNameO[i] = Enum.GetName(typeof(eDOPin), i);
tblDI.setNames(pinNameI);
tblDO.setNames(pinNameO);
tblDI.setItemTextAlign(ContentAlignment.MiddleLeft);
tblDO.setItemTextAlign(ContentAlignment.MiddleLeft);
// tblFG.setItemTextAlign(ContentAlignment.BottomLeft);
tblDI.ColorList = new arDev.AjinEXTEK.ColorListItem[] {
new arDev.AjinEXTEK.ColorListItem{ BackColor1 = Color.DimGray, BackColor2 = Color.FromArgb(30,30,30), Remark="False" },
new arDev.AjinEXTEK.ColorListItem{ BackColor1 = Color.Lime, BackColor2 = Color.Green, Remark="True" },
};
tblDO.ColorList = new arDev.AjinEXTEK.ColorListItem[] {
new arDev.AjinEXTEK.ColorListItem{ BackColor1 = Color.DimGray, BackColor2 = Color.FromArgb(30,30,30), Remark="False" },
new arDev.AjinEXTEK.ColorListItem{ BackColor1 = Color.Tomato, BackColor2 = Color.Red, Remark="True" },
};
//인터락이름
//var ILNameEV = new string[Pub.iLock.Length];
for (int i = 0; i < PUB.iLock.Length; i++)
{
var axisname = ((eAxis)i).ToString();
var nonaxis = false;
if (i >= 7) //이름이없는경우
{
axisname = PUB.iLock[i].Tag.ToString();
nonaxis = true;
}
string[] ILNameEV;
//if (axisname.StartsWith("X")) ILNameEV = Enum.GetNames(typeof(eILockPKX));
//else if (axisname.StartsWith("Y")) ILNameEV = Enum.GetNames(typeof(eILockPKY));
//else if (axisname.StartsWith("Z")) ILNameEV = Enum.GetNames(typeof(eILockPKZ));
//else if (axisname.StartsWith("U")) ILNameEV = Enum.GetNames(typeof(eILockEV));
//else if (axisname.StartsWith("L")) ILNameEV = Enum.GetNames(typeof(eILockEV));
//else
if (i == 7) ILNameEV = Enum.GetNames(typeof(eILockPRL));
else if (i == 8) ILNameEV = Enum.GetNames(typeof(eILockPRR));
else if (i == 9) ILNameEV = Enum.GetNames(typeof(eILockVS0));
else if (i == 10) ILNameEV = Enum.GetNames(typeof(eILockVS1));
else if (i == 11) ILNameEV = Enum.GetNames(typeof(eILockVS2));
else if (i == 12) ILNameEV = Enum.GetNames(typeof(eILockCV));
else if (i == 13) ILNameEV = Enum.GetNames(typeof(eILockCV));
else ILNameEV = Enum.GetNames(typeof(eILock));
this.lbILog[i].Text = axisname;
this.gvIlog[i].setTitle(ILNameEV);
this.gvIlog[i].setItemTextAlign(ContentAlignment.MiddleCenter);
this.gvIlog[i].ColorList[1].BackColor1 = Color.IndianRed;
this.gvIlog[i].ColorList[1].BackColor2 = Color.LightCoral;
if (nonaxis)
{
lbILog[i].ForeColor = Color.Gold;
}
else
{
if (axisname.StartsWith("PX")) this.lbILog[i].ForeColor = Color.Gold;
else if (axisname.StartsWith("PY")) this.lbILog[i].ForeColor = Color.Tomato;
else if (axisname.StartsWith("PZ")) this.lbILog[i].ForeColor = Color.Lime;
else if (axisname.StartsWith("PU")) this.lbILog[i].ForeColor = Color.SkyBlue;
else if (axisname.StartsWith("PL")) this.lbILog[i].ForeColor = Color.Magenta;
else this.lbILog[i].ForeColor = Color.DimGray;
}
}
//값확인
List<Boolean> diValue = new List<bool>();
for (int i = 0; i < PUB.dio.GetDICount; i++)
diValue.Add(PUB.dio.GetDIValue(i));
List<Boolean> doValue = new List<bool>();
for (int i = 0; i < PUB.dio.GetDOCount; i++)
doValue.Add(PUB.dio.GetDOValue(i));
//List<Boolean> fgValue = new List<bool>();
//for (int i = 0; i < PUB.flag.Length; i++)
// fgValue.Add(PUB.flag.get(i));
tblDI.setValue(diValue.ToArray());
tblDO.setValue(doValue.ToArray());
// tblFG.setValue(fgValue.ToArray());
PUB.dio.IOValueChanged += dio_IOValueChanged;
//PUB.flag.ValueChanged += flag_ValueChanged;
//interlock
var axislist = Enum.GetNames(typeof(eAxis));
for (int i = 0; i < PUB.iLock.Length; i++)
{
List<Boolean> PKValues = new List<bool>();
//인터락에는 값이 몇개 있지?
for (int j = 0; j < 64; j++)
{
PKValues.Add(PUB.iLock[i].get(j));
}
gvIlog[i].setValue(PKValues.ToArray());
gvIlog[i].Tag = i;
PUB.iLock[i].ValueChanged += LockXF_ValueChanged;
if (PUB.sm.isRunning == false)
{
gvIlog[i].ItemClick += gvILXF_ItemClick;
}
gvIlog[i].Invalidate();
}
if (PUB.sm.isRunning == false)
{
this.tblDI.ItemClick += tblDI_ItemClick;
this.tblDO.ItemClick += tblDO_ItemClick;
//this.tblFG.ItemClick += tblFG_ItemClick;
}
this.tblDI.Invalidate();
this.tblDO.Invalidate();
// this.tblFG.Invalidate();
this.KeyDown += fIOMonitor_KeyDown;
this.WindowState = FormWindowState.Maximized;
}
void fIOMonitor_FormClosed(object sender, FormClosedEventArgs e)
{
PUB.dio.IOValueChanged -= dio_IOValueChanged;
// PUB.flag.ValueChanged -= flag_ValueChanged;
for (int i = 0; i < PUB.iLock.Length; i++)
{
PUB.iLock[i].ValueChanged -= LockXF_ValueChanged;
}
if (PUB.sm.isRunning == false)
{
this.tblDI.ItemClick -= tblDI_ItemClick;
this.tblDO.ItemClick -= tblDO_ItemClick;
// this.tblFG.ItemClick -= tblFG_ItemClick;
for (int i = 0; i < PUB.iLock.Length; i++)
{
gvIlog[i].ItemClick -= gvILXF_ItemClick;
}
}
this.KeyDown -= fIOMonitor_KeyDown;
}
void LockXF_ValueChanged(object sender, AR.InterfaceValueEventArgs e)
{
var item = sender as CInterLock;
//var tagStr = item.Tag.ToString();
//var axis = (eAxis)Enum.Parse(typeof(eAxis), tagStr);
var axisno = item.idx;// (int)axis;
if (this.gvIlog[axisno].setValue((int)e.ArrIDX, e.NewValue))
this.gvIlog[axisno].Invalidate();
}
void gvILXF_ItemClick(object sender, arCtl.GridView.GridView.ItemClickEventArgs e)
{
var gv = sender as arCtl.GridView.GridView;
var tagStr = gv.Tag.ToString();
var axis = (eAxis)Enum.Parse(typeof(eAxis), tagStr);
var axisno = (int)axis;
var curValue = PUB.iLock[axisno].get((int)e.idx);
PUB.iLock[axisno].set((int)e.idx, !curValue, "IOMONITOR");
}
void fIOMonitor_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape) this.Close();
else if (e.KeyCode == Keys.D && e.Control)
{
this.tblDO.showDebugInfo = !this.tblDO.showDebugInfo;
this.tblDI.showDebugInfo = this.tblDO.showDebugInfo;
// this.tblFG.showDebugInfo = this.tblDO.showDebugInfo;
}
}
private void fIOMonitor_Load(object sender, EventArgs e)
{
this.Text = "I/O Monitor";
this.Show();
//'Application.DoEvents();
Dialog.Quick_Control fctl = new Quick_Control
{
TopLevel = false,
Visible = true
};
this.panel3.Controls.Add(fctl);
fctl.Dock = DockStyle.Top;
fctl.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
fctl.panBG.BackColor = this.BackColor;
fctl.panBG.BorderStyle = BorderStyle.None;
fctl.Show();
fctl.Dock = DockStyle.Fill;
this.tmDisplay.Start();
}
//void tblFG_ItemClick(object sender, arCtl.GridView.GridView.ItemClickEventArgs e)
//{
// var curValue = PUB.flag.get((int)e.idx);
// PUB.flag.set((int)e.idx, !curValue, "IOMONITOR");
//}
void tblDO_ItemClick(object sender, arDev.AjinEXTEK.IOPanel.ItemClickEventArgs e)
{
var newValue = !PUB.dio.GetDOValue(e.idx);
if (PUB.dio.IsInit == false)
{
//임시시그널
var dlg = UTIL.MsgQ("가상 시그널을 생성하시겠습니까?");
if (dlg == System.Windows.Forms.DialogResult.Yes)
{
PUB.dio.RaiseEvent(eIOPINDIR.OUTPUT, e.idx, newValue);
PUB.log.Add("fake do : " + e.idx.ToString() + ",val=" + newValue.ToString());
}
}
else
{
PUB.dio.SetOutput(e.idx, newValue);
PUB.log.Add(string.Format("set output(iomonitor-userclick) idx={0},val={1}", e.idx, newValue));
}
}
void tblDI_ItemClick(object sender, arDev.AjinEXTEK.IOPanel.ItemClickEventArgs e)
{
var newValue = !PUB.dio.GetDIValue(e.idx);
if (PUB.dio.IsInit == false || PUB.flag.get(eVarBool.FG_DEBUG) == true)
{
//임시시그널
var dlg = UTIL.MsgQ("가상 시그널을 생성하시겠습니까?");
if (dlg == System.Windows.Forms.DialogResult.Yes)
{
PUB.dio.RaiseEvent(eIOPINDIR.INPUT, e.idx, newValue);
PUB.log.Add("fake di : " + e.idx.ToString() + ",val=" + newValue.ToString());
}
}
}
//void flag_ValueChanged(object sender, AR.InterfaceValueEventArgs e)
//{
// //var butIndex = getControlIndex(e.ArrIDX);
// //if (butIndex >= this.tblFG.Controls.Count) return;
// //해당 아이템의 값을 변경하고 다시 그린다.
// if (tblFG.setValue((int)e.ArrIDX, e.NewValue))
// tblFG.Invalidate();//.drawItem(e.ArrIDX);
//}
void dio_IOValueChanged(object sender, arDev.DIO.IOValueEventArgs e)
{
//var butIndex = getControlIndex(e.ArrIDX);
if (e.Direction == eIOPINDIR.INPUT)
{
//해당 아이템의 값을 변경하고 다시 그린다.
if (tblDI.setValue(e.ArrIDX, e.NewValue))
tblDI.Invalidate();//.drawItem(e.ArrIDX);
}
else
{
//해당 아이템의 값을 변경하고 다시 그린다.
if (tblDO.setValue(e.ArrIDX, e.NewValue))
tblDO.Invalidate();//.drawItem(e.ArrIDX);
}
}
private void tmDisplay_Tick(object sender, EventArgs e)
{
if (this.tabControl1.SelectedIndex == 2)
{
//flag
//var fvalue = PUB.flag.Value();
//lbTitle3.Text = "FLAG(" + fvalue.HexString() + ")";
//for (int i = 0; i < 128; i++)
// tblFG.setValue((int)i, PUB.flag.get(i));
//tblFG.Invalidate();
}
else if (this.tabControl1.SelectedIndex == 3)
{
//inter lock
for (uint i = 0; i < PUB.iLock.Length; i++)
{
var axis = (eAxis)i;
var axisname = axis.ToString();
if (axisname.Equals(i.ToString()))
{
axisname = PUB.iLock[i].Tag.ToString();
}
this.lbILog[i].Text = string.Format("{0}({1})", axisname, PUB.iLock[i].Value().HexString());
}
}
}
private void lbTitle1_Click(object sender, EventArgs e)
{
//input list
var fn = "descin.txt";
var sb = new System.Text.StringBuilder();
sb.AppendLine("No\tTitle\tDesc");
foreach (var item in Enum.GetValues(typeof(eDIName)))
{
var em = (eDIName)item;
var dr = PUB.mdm.dataSet.InputDescription.Where(t => t.Idx == (int)em).FirstOrDefault();
var pinNo = $"X{(int)em:X2}";
var pinTitle = item.ToString();
var Desc = dr == null ? "" : dr.Description;
sb.Append(pinNo);
sb.Append("\t");
sb.Append(pinTitle);
sb.Append("\t");
sb.Append(Desc);
sb.AppendLine();
}
System.IO.File.WriteAllText(fn, sb.ToString(), System.Text.Encoding.Default);
UTIL.RunExplorer(fn);
}
private void arLabel2_Click(object sender, EventArgs e)
{
//oputput list
var fn = "descout.txt";
var sb = new System.Text.StringBuilder();
sb.AppendLine("No\tTitle\tDesc");
foreach (var item in Enum.GetValues(typeof(eDOName)))
{
var em = (eDOName)item;
var dr = PUB.mdm.dataSet.InputDescription.Where(t => t.Idx == (int)item).FirstOrDefault();
var pinNo = $"Y{(int)em:X2}";
var pinTitle = item.ToString();
var Desc = dr == null ? "" : dr.Description;
sb.Append(pinNo);
sb.Append("\t");
sb.Append(pinTitle);
sb.Append("\t");
sb.Append(Desc);
sb.AppendLine();
}
System.IO.File.WriteAllText(fn, sb.ToString(), System.Text.Encoding.Default);
UTIL.RunExplorer(fn);
}
private void pinDefineToolStripMenuItem_Click(object sender, EventArgs e)
{
var f = new fSetting_IOMessage();
f.ShowDialog();
tblDI.setTitle(DIO.Pin.GetDIName);
tblDO.setTitle(DIO.Pin.GetDOName);
tblDI.setNames(DIO.Pin.GetDIPinName);
tblDO.setNames(DIO.Pin.GetDOPinName);
tblDI.Invalidate();
tblDO.Invalidate();
}
}
}

View File

@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>124, 17</value>
</metadata>
<metadata name="tmDisplay.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -0,0 +1,395 @@

namespace Project.Dialog.Debug
{
partial class fSendInboutData
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.tbsid = new System.Windows.Forms.TextBox();
this.tbrid = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.tbvname = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.tblot = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.tbpart = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.tbbatch = new System.Windows.Forms.TextBox();
this.tbbadge = new System.Windows.Forms.TextBox();
this.label7 = new System.Windows.Forms.Label();
this.tbinch = new System.Windows.Forms.TextBox();
this.label8 = new System.Windows.Forms.Label();
this.label9 = new System.Windows.Forms.Label();
this.tbmfg = new System.Windows.Forms.TextBox();
this.label10 = new System.Windows.Forms.Label();
this.tbqty = new System.Windows.Forms.TextBox();
this.tbeqid = new System.Windows.Forms.TextBox();
this.label11 = new System.Windows.Forms.Label();
this.tbeqname = new System.Windows.Forms.TextBox();
this.label12 = new System.Windows.Forms.Label();
this.tboper = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.dv1 = new arCtl.arDatagridView();
this.button2 = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.dv1)).BeginInit();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(37, 28);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(22, 12);
this.label1.TabIndex = 0;
this.label1.Text = "sid";
//
// tbsid
//
this.tbsid.Location = new System.Drawing.Point(69, 25);
this.tbsid.Name = "tbsid";
this.tbsid.Size = new System.Drawing.Size(261, 21);
this.tbsid.TabIndex = 1;
this.tbsid.Text = "103000000";
this.tbsid.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// tbrid
//
this.tbrid.Location = new System.Drawing.Point(69, 131);
this.tbrid.Name = "tbrid";
this.tbrid.Size = new System.Drawing.Size(261, 21);
this.tbrid.TabIndex = 3;
this.tbrid.Text = "RCTEST000000000";
this.tbrid.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(40, 134);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(19, 12);
this.label2.TabIndex = 2;
this.label2.Text = "rid";
//
// tbvname
//
this.tbvname.Location = new System.Drawing.Point(69, 77);
this.tbvname.Name = "tbvname";
this.tbvname.Size = new System.Drawing.Size(261, 21);
this.tbvname.TabIndex = 7;
this.tbvname.Text = "v.name";
this.tbvname.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(16, 80);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(43, 12);
this.label3.TabIndex = 6;
this.label3.Text = "vname";
//
// tblot
//
this.tblot.Location = new System.Drawing.Point(69, 52);
this.tblot.Name = "tblot";
this.tblot.Size = new System.Drawing.Size(261, 21);
this.tblot.TabIndex = 5;
this.tblot.Text = "v.lot";
this.tblot.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(41, 55);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(18, 12);
this.label4.TabIndex = 4;
this.label4.Text = "lot";
//
// tbpart
//
this.tbpart.Location = new System.Drawing.Point(69, 185);
this.tbpart.Name = "tbpart";
this.tbpart.Size = new System.Drawing.Size(261, 21);
this.tbpart.TabIndex = 9;
this.tbpart.Text = "part";
this.tbpart.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(33, 188);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(26, 12);
this.label5.TabIndex = 8;
this.label5.Text = "part";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(23, 223);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(36, 12);
this.label6.TabIndex = 8;
this.label6.Text = "batch";
//
// tbbatch
//
this.tbbatch.Location = new System.Drawing.Point(69, 220);
this.tbbatch.Name = "tbbatch";
this.tbbatch.Size = new System.Drawing.Size(261, 21);
this.tbbatch.TabIndex = 9;
this.tbbatch.Text = "batch";
this.tbbatch.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// tbbadge
//
this.tbbadge.Location = new System.Drawing.Point(69, 247);
this.tbbadge.Name = "tbbadge";
this.tbbadge.Size = new System.Drawing.Size(261, 21);
this.tbbadge.TabIndex = 11;
this.tbbadge.Text = "badge";
this.tbbadge.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(19, 250);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(40, 12);
this.label7.TabIndex = 10;
this.label7.Text = "badge";
//
// tbinch
//
this.tbinch.Location = new System.Drawing.Point(69, 274);
this.tbinch.Name = "tbinch";
this.tbinch.Size = new System.Drawing.Size(261, 21);
this.tbinch.TabIndex = 13;
this.tbinch.Text = "7";
this.tbinch.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(30, 277);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(29, 12);
this.label8.TabIndex = 12;
this.label8.Text = "inch";
//
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(33, 161);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(26, 12);
this.label9.TabIndex = 8;
this.label9.Text = "mfg";
//
// tbmfg
//
this.tbmfg.Location = new System.Drawing.Point(69, 158);
this.tbmfg.Name = "tbmfg";
this.tbmfg.Size = new System.Drawing.Size(261, 21);
this.tbmfg.TabIndex = 9;
this.tbmfg.Text = "2325";
this.tbmfg.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// label10
//
this.label10.AutoSize = true;
this.label10.Location = new System.Drawing.Point(37, 107);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(22, 12);
this.label10.TabIndex = 8;
this.label10.Text = "qty";
//
// tbqty
//
this.tbqty.Location = new System.Drawing.Point(69, 104);
this.tbqty.Name = "tbqty";
this.tbqty.Size = new System.Drawing.Size(261, 21);
this.tbqty.TabIndex = 9;
this.tbqty.Text = "1000";
this.tbqty.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// tbeqid
//
this.tbeqid.Location = new System.Drawing.Point(69, 301);
this.tbeqid.Name = "tbeqid";
this.tbeqid.Size = new System.Drawing.Size(100, 21);
this.tbeqid.TabIndex = 15;
this.tbeqid.Text = "R0";
this.tbeqid.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// label11
//
this.label11.AutoSize = true;
this.label11.Location = new System.Drawing.Point(40, 304);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(19, 12);
this.label11.TabIndex = 14;
this.label11.Text = "eq";
//
// tbeqname
//
this.tbeqname.Location = new System.Drawing.Point(175, 301);
this.tbeqname.Name = "tbeqname";
this.tbeqname.Size = new System.Drawing.Size(155, 21);
this.tbeqname.TabIndex = 15;
this.tbeqname.Text = "eq name";
this.tbeqname.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// label12
//
this.label12.AutoSize = true;
this.label12.Location = new System.Drawing.Point(29, 331);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(30, 12);
this.label12.TabIndex = 12;
this.label12.Text = "oper";
//
// tboper
//
this.tboper.Location = new System.Drawing.Point(69, 328);
this.tboper.Name = "tboper";
this.tboper.Size = new System.Drawing.Size(261, 21);
this.tboper.TabIndex = 13;
this.tboper.Text = "chi";
this.tboper.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// button1
//
this.button1.Location = new System.Drawing.Point(350, 25);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(98, 324);
this.button1.TabIndex = 16;
this.button1.Text = "post";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// dv1
//
this.dv1.A_DelCurrentCell = true;
this.dv1.A_EnterToTab = true;
this.dv1.A_KoreanField = null;
this.dv1.A_UpperField = null;
this.dv1.A_ViewRownumOnHeader = true;
this.dv1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dv1.Location = new System.Drawing.Point(474, 25);
this.dv1.Name = "dv1";
this.dv1.RowTemplate.Height = 23;
this.dv1.Size = new System.Drawing.Size(496, 324);
this.dv1.TabIndex = 17;
//
// button2
//
this.button2.Location = new System.Drawing.Point(474, 355);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(496, 44);
this.button2.TabIndex = 18;
this.button2.Text = "Read";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// fSendInboutData
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(997, 407);
this.Controls.Add(this.button2);
this.Controls.Add(this.dv1);
this.Controls.Add(this.button1);
this.Controls.Add(this.tbeqname);
this.Controls.Add(this.tbeqid);
this.Controls.Add(this.label11);
this.Controls.Add(this.tboper);
this.Controls.Add(this.label12);
this.Controls.Add(this.tbinch);
this.Controls.Add(this.label8);
this.Controls.Add(this.tbbadge);
this.Controls.Add(this.label7);
this.Controls.Add(this.tbbatch);
this.Controls.Add(this.label6);
this.Controls.Add(this.tbqty);
this.Controls.Add(this.label10);
this.Controls.Add(this.tbmfg);
this.Controls.Add(this.label9);
this.Controls.Add(this.tbpart);
this.Controls.Add(this.label5);
this.Controls.Add(this.tbvname);
this.Controls.Add(this.label3);
this.Controls.Add(this.tblot);
this.Controls.Add(this.label4);
this.Controls.Add(this.tbrid);
this.Controls.Add(this.label2);
this.Controls.Add(this.tbsid);
this.Controls.Add(this.label1);
this.Name = "fSendInboutData";
this.Text = "fSendInboutData";
this.Load += new System.EventHandler(this.fSendInboutData_Load);
((System.ComponentModel.ISupportInitialize)(this.dv1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox tbsid;
private System.Windows.Forms.TextBox tbrid;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox tbvname;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox tblot;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox tbpart;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.TextBox tbbatch;
private System.Windows.Forms.TextBox tbbadge;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.TextBox tbinch;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.TextBox tbmfg;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.TextBox tbqty;
private System.Windows.Forms.TextBox tbeqid;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.TextBox tbeqname;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.TextBox tboper;
private System.Windows.Forms.Button button1;
private arCtl.arDatagridView dv1;
private System.Windows.Forms.Button button2;
}
}

View File

@@ -0,0 +1,68 @@
using AR;
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.Debug
{
public partial class fSendInboutData : Form
{
public fSendInboutData()
{
InitializeComponent();
}
public class reelinfo
{
public string ReelId { get; set; }
public string C { get; set; }
public reelinfo()
{
}
}
private void button1_Click(object sender, EventArgs e)
{
//post
var reelinfo = new
{
AMKOR_SID = tbsid.Text,
AMKOR_BATCH = tbbatch.Text,
REEL_ID = tbrid.Text,
REEL_VENDOR_LOT = tblot.Text,
REEL_AMKOR_SID = tbsid.Text,
REEL_QTY = tbqty.Text,
REEL_MANUFACTURER = tbvname.Text,
REEL_PRODUCTION_DATE = tbmfg.Text,
REEL_INCH_INFO = tbinch.Text,
REEL_PART_NUM = tbpart.Text,
EQP_ID = tbeqid.Text,
EQP_NAME = tbeqname.Text,
BADGE = tbbadge.Text,
OPER_NAME = tboper.Text,
HOST_NAME = System.Net.Dns.GetHostEntry("").HostName,
};
var rlt = Amkor.RestfulService.Inbound_label_attach_reel_info(reelinfo, out string errmsg);
if (rlt == false) UTIL.MsgE(errmsg);
}
private void button2_Click(object sender, EventArgs e)
{
//read
}
private void fSendInboutData_Load(object sender, EventArgs e)
{
tbeqid.Text = AR.SETTING.Data.MCID;
tbeqname.Text = $"Label Attach {tbeqid.Text}";
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,903 @@
#pragma warning disable IDE1006 // 명명 스타일
using AR;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Project.Dialog
{
public partial class Model_Motion_Desc : Form
{
public string Value = string.Empty;
short axisIndex = 0;
eAxis axis = eAxis.Z_THETA;//
Color sbBackColor = Color.FromArgb(200, 200, 200);
DataSet1 ds;
public Model_Motion_Desc(DataSet1 ds_)
{
InitializeComponent();
this.ds = ds_;
//this.bs.Filter = string.Empty;
//this.bsPos.Filter = string.Empty;
this.bs.DataSource = ds_;
this.bsPos.DataSource = ds_;
//this.bs.DataMember = string.Empty;
//this.bsPos.DataMember = string.Empty;
if (System.Diagnostics.Debugger.IsAttached == false)
{
// fb = new Dialog.fBlurPanel();
//fb.Show();
}
this.KeyPreview = true;
this.KeyDown += (s1, e1) => { if (e1.KeyCode == Keys.Escape) this.Close(); };
this.StartPosition = FormStartPosition.CenterScreen;
this.FormClosed += __Closed;
var axlist = Enum.GetNames(typeof(eAxis));
var axvalues = Enum.GetValues(typeof(eAxis));
var preValueList = new List<ushort>();
//모터설정값을 보고 해당 모터의 목록을 표시한다.
//사용하지 않는 축은 표시하지 않는다
for (int i = 0; i < PUB.system.MotaxisCount; i++)
{
var axis = (eAxis)i;
var axisname = (eAxisName)i;
var axTitle = axisname.ToString();// axis.ToString();
if (PUB.system_mot.UseAxis(i) == false) continue;// axTitle = "Disable";
if (axTitle.Equals(i.ToString())) axTitle = "(No Name)";
this.dvMot.Rows.Add(
new string[] {
i.ToString(), axTitle, string.Empty, string.Empty, string.Empty,
string.Empty, string.Empty, string.Empty, string.Empty, string.Empty,
string.Empty
});
}
}
private void __Load(object sender, EventArgs e)
{
this.Show();
////'Application.DoEvents();
//this.ds1.Clear();
//this.ds1.MCModel.Merge(Pub.mdm.dataSet.MCModel);
//this.ds1.MCModel.AcceptChanges();
//this.ds1.MCModel.TableNewRow += Model_TableNewRow;
this.bs.Filter = "isnull(title,'') <> ''";
this.bsPos.Filter = "isnull(title,'') = '' and isnull(motindex,-1) = -1";
this.tmDisplay.Start();
//button7.Enabled = !Pub.mot.HasHomeSetOff;
//dispal current
if (PUB.Result.isSetmModel)
{
arLabel18.Text = PUB.Result.mModel.Title;
//find data
var datas = this.ds1.MCModel.Select("", this.bs.Sort);
for (int i = 0; i < datas.Length; i++)
{
if (datas[i]["Title"].ToString() == PUB.Result.mModel.Title)
{
this.bs.Position = i;
break;
}
}
}
else arLabel18.Text = "--";
if (this.ds1.MCModel.Rows.Count < 1)
{
var newdr = this.ds1.MCModel.NewMCModelRow();
newdr.Title = "Default";
newdr.pidx = -1;
newdr.PosIndex = -1;
newdr.idx = ds1.MCModel.Rows.Count + 1;
this.ds1.MCModel.AddMCModelRow(newdr);
}
PUB.log.RaiseMsg += log_RaiseMsg;
refreshtreen();
}
private void __Closed(object sender, FormClosedEventArgs e)
{
//if (fb != null) fb.Dispose();
this.tmDisplay.Enabled = false;
}
void log_RaiseMsg(DateTime LogTime, string TypeStr, string Message)
{
}
private void tmDisplay_Tick(object sender, EventArgs e)
{
//this.lbMotPos.Text = $"X:{Pub.mot.GetActPos((int)eAxis.X1_TOP}";
//tabControl4.TabPages[0].Text = $"({axisIndex}) JOG";
if (PUB.joypad != null && PUB.joypad.IsOpen)
this.Text = "MODEL(MOTION) SETTING - JOYSTICK GROUP:" + PUB.Result.JoystickAxisGroup.ToString();
else
this.Text = "MODEL(MOTION) SETTING";
if (PUB.mot.IsInit == false)
{
//if (groupBox3.Enabled == true) groupBox3.Enabled = false;
}
else
{
//if (groupBox3.Enabled == false) groupBox3.Enabled = true;
//각축별 기본 상태를 표시해준다.
dvMot.SuspendLayout();
for (int r = 0; r < dvMot.RowCount; r++) // 오류수정 2111221
{
var row = this.dvMot.Rows[r];
var axis = int.Parse(row.Cells[0].Value.ToString());
row.Cells[0].Style.BackColor = PUB.mot.IsServOn(axis) ? Color.Lime : Color.Tomato;
row.Cells[2].Value = $"{PUB.mot.GetCmdPos(axis)}";
row.Cells[3].Value = $"{PUB.mot.GetActPos(axis)}";
row.Cells[4].Style.BackColor = PUB.mot.IsOrg(axis) ? Color.SkyBlue : Color.Gray;
row.Cells[5].Style.BackColor = PUB.mot.IsLimitN(axis) ? Color.Red : Color.Gray;
row.Cells[6].Style.BackColor = PUB.mot.IsLimitP(axis) ? Color.Red : Color.Gray;
row.Cells[7].Style.BackColor = PUB.mot.IsInp(axis) ? Color.SkyBlue : Color.Gray;
row.Cells[8].Style.BackColor = PUB.mot.IsServAlarm(axis) ? Color.Red : Color.Gray;
row.Cells[9].Style.BackColor = PUB.mot.IsHomeSet(axis) ? Color.Green : Color.Gray;
}
dvMot.ResumeLayout();
}
// this.tblFG.Invalidate();
}
private void dv_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
}
void ChangeCurrentPosition(int Axis, NumericUpDown valueCtl)
{
valueCtl.Value = (decimal)PUB.mot.GetActPos(Axis);
}
/// <summary>
/// 상단목록에서 모션을 선택한 경우
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MotAxisSelect(int axisindex)
{
RefreshMotorPosition();
}
private void bs_CurrentChanged_1(object sender, EventArgs e)
{
//BindingData();
}
void RefreshMotorPosition()
{
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
if (dvMot.SelectedCells.Count < 1) return;
var dr = drv.Row as DataSet1.MCModelRow;
//var rowindex = dvMot.SelectedCells[0].RowIndex;
//var row = dvMot.Rows[rowindex];
//var axisIndex = short.Parse(row.Cells[0].Value.ToString());
//var axis = (eAxis)this.axisIndex;
//var axisTitle = row.Cells[1].Value.ToString();
{
//위치정보 표시
bsPos.Filter = string.Format("pidx={0} and motindex = {1}", dr.idx, this.axisIndex);
////(위치정보) 데이터수량이 맞지 않으면 재 생성한다
//string[] list = null;
//Array val = null;
//Type axType = null;
//var axis = (eAxis)axisIndex;
//if (axis == eAxis.X2_FRT || axis == eAxis.X3_RER) axType = typeof(eX2SHTLoc);
//else if (axis == eAxis.X1_TOP) axType = typeof(eX1TOPLoc);
//else if (axis == eAxis.Y1_PIK) axType = typeof(eY1PIKLoc);
//else if (axis == eAxis.Y2_PRECLEAN) axType = typeof(eY2BRSLoc);
//else if (axis == eAxis.Y3_LASER) axType = typeof(eY3LSRLoc);
//else if (axis == eAxis.Y4_VIS) axType = typeof(eY4VISLoc); //전용으로바꿔야함
//else if (axis == eAxis.Z1_PIK) axType = typeof(eZ1PIKLoc);
//else if (axis == eAxis.Z2_PRECLEAN) axType = typeof(eZ2BRSLoc);
//else if (axis == eAxis.Z3_LASER) axType = typeof(eZ3LSRLoc);
//else if (axis == eAxis.Z4_VISION) axType = typeof(eZ4VISLoc);//전용으로바꿔야함
//else if (axis == eAxis.L_REAR || axis == eAxis.L_FRNT) axType = typeof(eLDLoc);
//else if (axis == eAxis.UR_NG || axis == eAxis.UR_OK || axis == eAxis.UF_NG || axis == eAxis.UF_OK) axType = typeof(eUDLoc);
//if (axType == null)
//{
// Util.MsgE("지정한 축에 대한 위치정보가 지정되지 않았습니다");
// return;
//}
//list = Enum.GetNames(axType);
//val = Enum.GetValues(axType);
//var sb = new System.Text.StringBuilder();
//var cntI = 0;
//var cntE = 0;
//var cntD = 0;
////posidx == -1인 데이터는 모두 소거한다
//var dellist = ds1.MCModel.Where(t => t.pidx == dr.idx && t.MotIndex == this.axisIndex && t.PosIndex == -1).ToList(); //메인목록은 남겨둔다
//cntD += dellist.Count();
//foreach (var item in dellist)
// item.Delete();
//ds1.MCModel.AcceptChanges();
////모든데이터의 체크상태를 off한다.
//var alllist = this.ds1.MCModel.Where(t => t.pidx == dr.idx && t.MotIndex == this.axisIndex);
//foreach (var item in alllist)
// item.Check = false;
//ds1.MCModel.AcceptChanges();
//for (int i = 0; i < list.Length; i++)
//{
// var arrTitle = list[i];
// var vv = val.GetValue(i);
// var arrIndex = (byte)vv;// ((eAxis)(val.GetValue(i)));
// if (arrIndex < 50) continue; //여기는 예약된 위치값이므로 사용하지 않는다
// var targetem = Enum.Parse(axType, vv.ToString());
// //이 값이 데이터가 없다면 추가하고, 있다면 이름을 검사해서 결과를 안내한다
// var pDr = this.ds1.MCModel.Where(t => t.pidx == dr.idx && t.PosIndex == arrIndex && t.MotIndex == axisIndex).FirstOrDefault();
// if (pDr == null)
// {
// //cntI += 1;
// //var newdr = this.ds1.MCModel.NewMCModelRow();
// //if (ds1.MCModel.Rows.Count == 0) newdr.idx = 1;
// //else newdr.idx = ds1.MCModel.Max(t => t.idx) + 1;
// //newdr.pidx = dr.idx;
// //newdr.MotIndex = this.axisIndex;
// //newdr.PosIndex = (short)arrIndex;
// //newdr.PosTitle = arrTitle;
// //newdr.Position = 0.0;
// //newdr.Speed = 50;
// //newdr.SpeedAcc = 100;
// //newdr.Check = true;
// //newdr.Description = targetem.DescriptionAttr();
// //newdr.Category = targetem.CategoryAttr();
// //this.ds1.MCModel.AddMCModelRow(newdr);
// //newdr.EndEdit();
// //sb.AppendLine("항목 추가 : " + arrTitle);
// }
// else
// {
// //이름이 다르다면 추가해준다.
// //if (pDr.PosTitle != arrTitle)
// //{
// // sb.AppendLine("(위치)항목 변경 : " + pDr.PosTitle + " => " + arrTitle);
// // cntE += 1;
// // pDr.PosTitle = arrTitle;
// //}
// ////pDr.Description = targetem.DescriptionAttr();
// ////pDr.Category = targetem.CategoryAttr();
// //pDr.EndEdit();
// pDr.Check = true;
// }
//}
////미사용개체 삭제한다
////var NotUseList = this.ds1.MCModel.Where(t => t.pidx == dr.idx && t.MotIndex == this.axisIndex && t.Check == false).ToList();
////cntD += NotUseList.Count();
////foreach (var item in NotUseList)
//// item.Delete();
//ds1.MCModel.AcceptChanges();
//if (cntI > 0) sb.AppendLine("추가수량 : " + cntI.ToString());
//if (cntE > 0) sb.AppendLine("변경수량 : " + cntE.ToString());
//if (cntD > 0) sb.AppendLine("삭제수량 : " + cntD.ToString());
////최종 확정
//this.ds1.MCModel.AcceptChanges();
//if (sb.Length > 0)
//{
// Util.MsgI(sb.ToString());
//}
}
}
private void chkJogMoveForce_Click(object sender, EventArgs e)
{
}
private void btAdd_Click(object sender, EventArgs e)
{
var newdr = this.ds1.MCModel.NewMCModelRow();// this.bs.AddNew() as DataRowView;
newdr["Title"] = DateTime.Now.ToShortDateString();
newdr["pidx"] = -1;
newdr.PosIndex = -1;
newdr["idx"] = this.ds1.MCModel.Rows.Count + 1;
this.ds1.MCModel.AddMCModelRow(newdr);
this.bs.Position = this.bs.Count - 1;
//모터축을 자동 선택해줌
//radClick_MotAxisSelect(this.flowLayoutPanel1.Controls[0], null);
}
private void btDel_Click(object sender, EventArgs e)
{
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
var dlg = UTIL.MsgQ("현재 선택된 자료를 삭제하시겠습니까?");
if (dlg != System.Windows.Forms.DialogResult.Yes) return;
bs.RemoveCurrent();
this.ds1.MCModel.AcceptChanges();
}
private void btSave_Click(object sender, EventArgs e)
{
//button - save
this.dv.Focus();
this.Validate();
this.bs.EndEdit();
this.bsPos.EndEdit();
this.Validate();
this.DialogResult = DialogResult.OK;
}
private void button2_Click(object sender, EventArgs e)
{
//select
this.Invalidate();
this.bs.EndEdit();
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.MCModelRow;
if (dr.Title == "") return;
this.Value = dr.Title;
DialogResult = System.Windows.Forms.DialogResult.OK;
}
private void button6_Click(object sender, EventArgs e)
{
//적용
this.bs.EndEdit();
this.bsPos.EndEdit();
this.Validate();
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.MCModelRow;
this.Value = dr.Title;
PUB.Result.mModel.ReadValue(dr.Title, this.ds1.MCModel);
if (PUB.Result.mModel.isSet)
{
PUB.log.AddAT("모션모델선택완료 : " + PUB.Result.mModel.Title);
}
else UTIL.MsgE("적용 실패\n\n대상 모델 명이 없습니다");
}
private void button4_Click(object sender, EventArgs e)
{
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.MCModelRow;
var dlg = UTIL.MsgQ(string.Format("다음 모델 정보를 복사하시겠습니까?\n\n모델명 : {0}", dr.Title));
if (dlg != System.Windows.Forms.DialogResult.Yes) return;
var newdr = this.ds1.MCModel.NewMCModelRow();
UTIL.CopyData(dr, newdr);
newdr.Title += "-copy-";
newdr.idx = this.ds1.MCModel.OrderByDescending(t => t.idx).FirstOrDefault().idx + 1;
newdr.EndEdit();
this.ds1.MCModel.AddMCModelRow(newdr);
if (this.bs.Count > 0) this.bs.Position = this.bs.Count - 1;
}
private void arDatagridView2_CellClick(object sender, DataGridViewCellEventArgs e)
{
//position click
var dv = sender as DataGridView;
var col = this.dvPosition.Columns[e.ColumnIndex];
var colName = col.Name.ToLower();
if (colName == "btgo")
{
if (PUB.mot.HasHomeSetOff)
{
UTIL.MsgE("모션의 홈이 완료되지 않았습니다\n메인화면에서 '장치초기화'를 진행 하세요");
return;
}
//현재값으로 모터를 이동
//현재위치값으로 설정
var cell = dv.Rows[e.RowIndex].Cells["btpos"];
var value = (double)cell.Value;
var drv = this.bsPos.Current as DataRowView;
var drParent = drv.Row as DataSet1.MCModelRow;
//일반 속도값을 찾는다
//var speedDr = drParent.Speed;// this.ds1.MCModel.Where(t => t.pidx == drParent.idx && t.MotIndex == axisIndex && t.PosIndex == -1 && t.SpdIndex == (int)eAxisSpeed.Normal).FirstOrDefault();
var speed = drParent.Speed;// speedDr.Speed;// (double)this.nudJogVel.Value;
var acc = drParent.SpeedAcc;// speedDr.SpeedAcc;// ; (double)nudAcc.Value;
var relative = false;
//if (ctl.motCommand == arFrame.Control.MotCommandButton.eCommand.RelativeMove)
// relative = true;
var msg = string.Format("모션의 위치를 변경 하시겠습니까\n" +
"축 : {0}\n" +
"현재위치 : {1}\n" +
"대상위치 : {2}\n" +
"이동속도 : {3}(가속도:{4})\n" +
"이동 시 충돌 가능성이 있는지 반드시 확인 하세요", axis, PUB.mot.GetActPos(axisIndex), value, speed, acc);
if (UTIL.MsgQ(msg) != System.Windows.Forms.DialogResult.Yes) return;
var chkJogMoveForce = true;
if (!MOT.Move(axis, value, speed, acc, relative, !chkJogMoveForce, !chkJogMoveForce))
PUB.log.AddE("MOT:MOVE_:" + axis.ToString() + ",Msg=" + PUB.mot.ErrorMessage);
}
else if (colName == "btset")
{
if (PUB.mot.HasHomeSetOff)
{
UTIL.MsgE("모션의 홈이 완료되지 않았습니다\n메인화면에서 '장치초기화'를 진행 하세요");
return;
}
//현재위치값으로 설정
var cell = dv.Rows[e.RowIndex].Cells["btpos"];
var value = (double)cell.Value;
var nValue = Math.Round(PUB.mot.GetCmdPos(this.axisIndex), 4); //소수점4자리에서 반올림처리한다 210414
var msg1 = string.Format("모션의 설정값을 변경 하시겠습니까\n" +
"축 : {0}\n" +
"변경전 : {1}\n" +
"변경후 : {2}\n" +
"변경 후 '저장'을 눌러야 영구 기록 됩니다", this.axis, value, nValue);
if (UTIL.MsgQ(msg1) != System.Windows.Forms.DialogResult.Yes) return;
cell.Value = nValue;
}
else if (colName == "btpos")
{
//현재값 변경 팝업
var cell = dv.Rows[e.RowIndex].Cells[e.ColumnIndex];
var value = (double)cell.Value;
value = PUB.ChangeValuePopup(value, "위치 입력");
cell.Value = value;
}
else if (colName == "btspeed")
{
//현재값 변경 팝업
var cell = dv.Rows[e.RowIndex].Cells[e.ColumnIndex];
var value = (double)cell.Value;
value = PUB.ChangeValuePopup(value, "속도 입력");
cell.Value = value;
}
else if (colName == "btacc")
{
//현재값 변경 팝업
var cell = dv.Rows[e.RowIndex].Cells[e.ColumnIndex];
var value = (double)cell.Value;
value = PUB.ChangeValuePopup(value, "가속도 입력");
cell.Value = value;
}
else if (colName == "btdcc")
{
//현재값 변경 팝업
var cell = dv.Rows[e.RowIndex].Cells[e.ColumnIndex];
if (cell.Value.ToString().isEmpty()) cell.Value = "0";
var value = (double)cell.Value;
value = PUB.ChangeValuePopup(value, "감속도 입력");
cell.Value = value;
}
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
var dlg = UTIL.MsgQ("모든 이동좌표의 속도를 일괄 변경하시겠습니까?");
if (dlg != System.Windows.Forms.DialogResult.Yes) return;
var value = PUB.ChangeValuePopup(100.0, "일괄 속도 변경");
for (int i = 0; i < this.bsPos.Count; i++)
{
this.bsPos.Position = i;
var drv = this.bsPos.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.MCModelRow;
dr.Speed = value;
dr.EndEdit();
}
}
private void toolStripButton2_Click_2(object sender, EventArgs e)
{
var dlg = UTIL.MsgQ("모든 이동좌표의 가(감)속도를 일괄 변경하시겠습니까?");
if (dlg != System.Windows.Forms.DialogResult.Yes) return;
var value = PUB.ChangeValuePopup(100.0, "일괄 가(감)속도 변경");
for (int i = 0; i < this.bsPos.Count; i++)
{
this.bsPos.Position = i;
var drv = this.bsPos.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.MCModelRow;
dr.SpeedAcc = value;
dr.EndEdit();
}
}
private void toolStripButton3_Click_1(object sender, EventArgs e)
{
var dlg = UTIL.MsgQ("모든 이동좌표의 감속도를 일괄 변경하시겠습니까?");
if (dlg != System.Windows.Forms.DialogResult.Yes) return;
var value = PUB.ChangeValuePopup(0, "일괄 감속도 변경");
for (int i = 0; i < this.bsPos.Count; i++)
{
this.bsPos.Position = i;
var drv = this.bsPos.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.MCModelRow;
dr.SpeedDcc = value;
dr.EndEdit();
}
}
private void dvMot_SelectionChanged(object sender, EventArgs e)
{
if (dvMot.SelectedRows.Count < 1)
{
Console.WriteLine("no selecte");
this.axisIndex = -1;
this.axis = (eAxis)axisIndex;
}
else
{
var selrow = dvMot.SelectedRows[0];
this.axisIndex = short.Parse(selrow.Cells["dvc_axis"].Value.ToString());
this.axis = (eAxis)axisIndex;
MotAxisSelect(this.axisIndex);
Console.WriteLine($"select indx {axisIndex}");
}
}
private void toolStripButton5_Click(object sender, EventArgs e)
{
this.Validate();
this.bs.EndEdit();
this.bsPos.EndEdit();
//using (var f = new Dialog.Motion_MoveToGroup(this.ds,arLabel18.Text))
//{
// if (f.ShowDialog() == DialogResult.OK)
// {
// this.bs.EndEdit();
// this.bsPos.EndEdit();
// }
//}
}
void refreshtreen()
{
//모든데이터를 가져와서 트리뷰를 처리한다.
var cat = this.ds.MCModel.GroupBy(t => t.Category).ToList();
var catorders = cat.OrderBy(t => t.Key).ToList();
//var cnt = 0;
this.treeView1.Nodes.Clear();
foreach (var item in catorders)
{
if (item.Key.isEmpty()) continue;
var catenames = item.Key.Split(',');
foreach (var catename in catenames)
{
var grpname = catename.Split('|')[0];
if (catename.Split('|').Length < 2) continue;
var itemname = catename.Split('|')[1];
if (treeView1.Nodes.ContainsKey(grpname) == false)
{
var nd = treeView1.Nodes.Add(grpname, grpname);
nd.Nodes.Add(itemname);
}
else
{
if (itemname.StartsWith("F01"))// == "F01_FSOCKET_BTM")
{
}
var nd = treeView1.Nodes[grpname];
if (nd.Nodes.ContainsKey(itemname) == false)
{
var snd = nd.Nodes.Add(itemname, itemname);
if (itemname.StartsWith("R"))
snd.ForeColor = Color.Blue;
else if (itemname.StartsWith("T"))
snd.ForeColor = Color.Magenta;
}
else
{
var snd = nd.Nodes[itemname];
if (itemname.StartsWith("R"))
snd.ForeColor = Color.Blue;
else if (itemname.StartsWith("T"))
snd.ForeColor = Color.Magenta;
}
}
}
}
treeView1.ExpandAll();
if (treeView1.Nodes.Count > 0)
treeView1.SelectedNode = this.treeView1.Nodes[0];
}
void refreshlist()
{
this.listView1.Clear();
this.listView1.FullRowSelect = true;
this.listView1.View = View.Details;
this.listView1.Columns.Add("item");
this.listView1.Columns[0].Width = (int)(this.listView1.Width - listView1.Width * 0.1f);
this.listView1.GridLines = true;
this.listView1.AllowDrop = true;
var drv = this.bsPos.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.MCModelRow;
if (dr.Category.isEmpty()) return;
var catelist = dr.Category.Split(',');
List<string> cats = new List<string>();
foreach (var cate in catelist)
{
if (cate.isEmpty()) continue;
if (cats.Contains(cate) == false) cats.Add(cate);
}
foreach (var cate in cats.OrderBy(t=>t))
{
if (this.listView1.Items.ContainsKey(cate) == false)
{
var lv = this.listView1.Items.Add(cate, cate, 0);
}
else
{
//이미 있다.
}
}
}
private void bsPos_CurrentChanged(object sender, EventArgs e)
{
//포지션데이터가 움직이면 처리한다.
refreshlist();
}
private void toolStripButton1_Click_1(object sender, EventArgs e)
{
//트립에서 선택된 아이템을 추가한다.
var tn = this.treeView1.SelectedNode;
if (tn == null) return;
if (tn.Level != 1)
{
if (tn.Nodes.Count < 1)
{
UTIL.MsgE("하위 항목이 없습니다");
return;
}
var dlg = UTIL.MsgQ($"{tn.Nodes.Count}건의 자료를 모두 추가 할까요?");
if (dlg != DialogResult.Yes) return;
var ucnt = 0;
foreach (TreeNode node in tn.Nodes)
{
var value = node.Parent.Text + "|" + node.Text;
if (this.listView1.Items.ContainsKey(value) == false)
{
this.listView1.Items.Add(value);
ucnt += 1;
}
}
UTIL.MsgI($"{ucnt}건의 아이템이 추가 되었습니다");
//현재목록을 리스트로 만들고 업데이트한.ㄷ
var drv = this.bsPos.Current as DataRowView;
var dr = drv.Row as DataSet1.MCModelRow;
List<string> items = new List<string>();
foreach (ListViewItem item in listView1.Items)
items.Add(item.SubItems[0].Text);
dr.Category = string.Join(",", items);
dr.EndEdit();
}
else
{
var value = tn.Parent.Text + "|" + tn.Text;
if (this.listView1.Items.ContainsKey(value) == false)
{
this.listView1.Items.Add(value);
//현재목록을 리스트로 만들고 업데이트한.ㄷ
var drv = this.bsPos.Current as DataRowView;
var dr = drv.Row as DataSet1.MCModelRow;
List<string> items = new List<string>();
foreach (ListViewItem item in listView1.Items)
items.Add(item.SubItems[0].Text);
dr.Category = string.Join(",", items);
dr.EndEdit();
}
else UTIL.MsgE("이미 존재하는 항목 입니다.");
}
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
//선택된 항목을 삭제한다.
if (this.listView1.FocusedItem == null) return;
this.listView1.Items.Remove(this.listView1.FocusedItem);
//현재목록을 리스트로 만들고 업데이트한.ㄷ
var drv = this.bsPos.Current as DataRowView;
var dr = drv.Row as DataSet1.MCModelRow;
List<string> items = new List<string>();
foreach (ListViewItem item in listView1.Items)
items.Add(item.SubItems[0].Text);
dr.Category = string.Join(",", items);
dr.EndEdit();
}
private void toolStripButton3_Click(object sender, EventArgs e)
{
refreshlist();
}
private void toolStripButton4_Click(object sender, EventArgs e)
{
//현재선택된 아이템의 데이터를 표시한다.
var tn = this.treeView1.SelectedNode;
if (tn == null) return;
if (tn.Level == 0)
{
bsPos.Filter = $"Category like '%{tn.Text}|%'";
}
else
{
bsPos.Filter = $"Category like '%{tn.Parent.Text}|{tn.Text}%'";
}
}
private void toolStripButton6_Click(object sender, EventArgs e)
{
}
private void toolStripButton7_Click(object sender, EventArgs e)
{
refreshtreen();
}
private void toolStripButton8_Click(object sender, EventArgs e)
{
var tn = treeView1.SelectedNode;
if (tn == null) return;
var old = tn.Text.Trim();
var f = new Dialog.fInput("입력",tn.Text);
if (f.ShowDialog() != DialogResult.OK) return;
if (f.ValueString.isEmpty()) return;
var targetidx = tn.Level;
foreach (DataSet1.MCModelRow dr in this.ds.MCModel.Rows)
{
if (dr.RowState == DataRowState.Deleted || dr.RowState == DataRowState.Detached) continue;
if (dr.Category.isEmpty()) continue;
var cats = dr.Category.Split(',');
List<string> items = new List<string>();
foreach (var cat in cats)
{
if (cat.isEmpty()) continue;
var buffer = cat.Split('|');
if (targetidx == 0)
{
buffer[targetidx] = buffer[targetidx].Replace(old, f.ValueString);
}
else
{
//1번의 경우 변경을 하려면 0번이 일치해야한다.
if (buffer[0] == tn.Parent.Text)
{
buffer[targetidx] = buffer[targetidx].Replace(old, f.ValueString);
}
}
items.Add(string.Join("|", buffer));
}
dr.Category = string.Join(",", items.ToArray());
dr.EndEdit();
}
refreshtreen();
}
private void toolStripButton9_Click(object sender, EventArgs e)
{
dvPosition.AutoResizeColumns();
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,757 @@
using AR;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Web;
using System.Windows.Forms;
namespace Project
{
public partial class Model_Operation : Form
{
public string Value = string.Empty;
public Model_Operation()
{
InitializeComponent();
this.KeyPreview = true;
this.KeyDown += (s1, e1) => { if (e1.KeyCode == Keys.Escape) this.Close(); };
this.StartPosition = FormStartPosition.CenterScreen;
this.FormClosed += __Closed;
this.FormClosing += FModelV_FormClosing;
this.dv.CellContentClick += dv_CellContentClick;
//if (COMM.SETTING.Data.FullScreen) this.WindowState = FormWindowState.Maximized;
//this.WindowState = FormWindowState.Normal;
}
private void FModelV_FormClosing(object sender, FormClosingEventArgs e)
{
//Pub.sm.setNewStep(StateMachine.eSystemStep.IDLE);
if (hasChanged())
{
var dlg = UTIL.MsgQ("변경된 자료가 있습니다.\n" +
"진행하면 변경된 자료는 손실됩니다\n" +
"진행 할까요?");
if (dlg != DialogResult.Yes)
{
e.Cancel = true;
return;
}
}
}
private void __Closed(object sender, FormClosedEventArgs e)
{
this.ds1.OPModel.TableNewRow -= Model_TableNewRow;
}
private void __Load(object sender, EventArgs e)
{
this.ds1.Clear();
this.ds1.OPModel.Merge(PUB.mdm.dataSet.OPModel);
this.ds1.OPModel.TableNewRow += Model_TableNewRow;
this.tmDisplay.Start();
//var MotList = PUB.mdm.dataSet.MCModel.GroupBy(t => t.Title).Select(t => t.Key).ToList();
//comboBox1.Items.AddRange(MotList.ToArray());
if (this.ds1.OPModel.Rows.Count < 1)
{
var newdr = this.ds1.OPModel.NewOPModelRow();
newdr.Title = "New Model";
this.ds1.OPModel.AddOPModelRow(newdr);
UTIL.MsgI("신규 모델 정보가 추가되었습니다.\n\n최초 설정 이므로 각 상태값을 확인 하세요.");
}
//dispal current
if (PUB.Result.isSetvModel)
{
arLabel18.Text = PUB.Result.vModel.Title;
//find data
var datas = this.ds1.OPModel.Select("", this.bs.Sort);
for (int i = 0; i < datas.Length; i++)
{
if (datas[i]["Title"].ToString() == PUB.Result.vModel.Title)
{
this.bs.Position = i;
break;
}
}
}
else arLabel18.Text = "--";
//chekauth(false);
//checkBox1.Enabled = checkBox4.Checked;
//checkBox2.Enabled = checkBox4.Checked;
//checkBox3.Enabled = checkBox4.Checked;
if (PUB.UserAdmin == false)
{
//오퍼레이터는 다 못한다
dv.EditMode = DataGridViewEditMode.EditProgrammatically;
this.btAdd.Visible = false;
this.btSave.Visible = false;
this.btCopy.Visible = false;
this.toolStripSeparator1.Visible = false;
this.btDel.Visible = false;
}
if (PUB.sm.Step != eSMStep.IDLE)
{
btDel.Enabled = false;
//btCopy.Enabled = false;
toolStripButton10.Visible = false;
//Util.MsgE("삭제/복사 작업은 대기 상태일때 가능 합니다");
}
//assig check events
foreach (var c in tabPage1.Controls)
{
if (c.GetType() != typeof(CheckBox)) continue;
var chk = c as CheckBox;
if (chk.Tag == null) continue;
chk.Click += Chk_Option_Check;
}
foreach (var c in grpApplySidinfo.Controls)
{
if (c.GetType() != typeof(CheckBox)) continue;
var chk = c as CheckBox;
if (chk.Tag == null) continue;
chk.Click += Chk_Sidinfo_Check;
}
foreach (var c in grpapplyjob.Controls)
{
if (c.GetType() != typeof(CheckBox)) continue;
var chk = c as CheckBox;
if (chk.Tag == null) continue;
chk.Click += Chk_JobInfo_Check;
}
foreach (var c in GrpSidConvData.Controls)
{
if (c.GetType() != typeof(CheckBox)) continue;
var chk = c as CheckBox;
if (chk.Tag == null) continue;
chk.Click += Chk_SIDConvData_Check;
}
}
private void Chk_Option_Check(object sender, EventArgs e)
{
var drv = bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.OPModelRow;
var chk = sender as CheckBox;
dr.vOption = UTIL.SetBitState(dr.vOption, int.Parse(chk.Tag.ToString()), chk.Checked);
dr.EndEdit();
bs_CurrentChanged_1(null, null);
}
private void Chk_Sidinfo_Check(object sender, EventArgs e)
{
var drv = bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.OPModelRow;
var chk = sender as CheckBox;
dr.vSIDInfo = UTIL.SetBitState(dr.vSIDInfo, int.Parse(chk.Tag.ToString()), chk.Checked);
dr.EndEdit();
bs_CurrentChanged_1(null, null);
}
private void Chk_JobInfo_Check(object sender, EventArgs e)
{
var drv = bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.OPModelRow;
var chk = sender as CheckBox;
dr.vJobInfo = UTIL.SetBitState(dr.vJobInfo, int.Parse(chk.Tag.ToString()), chk.Checked);
dr.EndEdit();
bs_CurrentChanged_1(null, null);
}
private void Chk_SIDConvData_Check(object sender, EventArgs e)
{
var drv = bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.OPModelRow;
var chk = sender as CheckBox;
dr.vSIDConv = UTIL.SetBitState(dr.vSIDConv, int.Parse(chk.Tag.ToString()), chk.Checked);
dr.EndEdit();
bs_CurrentChanged_1(null, null);
}
#region "Mouse Form Move"
private Boolean fMove = false;
private Point MDownPos;
private void LbTitle_DoubleClick(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Maximized) this.WindowState = FormWindowState.Normal;
else this.WindowState = FormWindowState.Maximized;
}
private void LbTitle_MouseMove(object sender, MouseEventArgs e)
{
if (fMove)
{
Point offset = new Point(e.X - MDownPos.X, e.Y - MDownPos.Y);
this.Left += offset.X;
this.Top += offset.Y;
offset = new Point(0, 0);
}
}
private void LbTitle_MouseUp(object sender, MouseEventArgs e)
{
fMove = false;
}
private void LbTitle_MouseDown(object sender, MouseEventArgs e)
{
MDownPos = new Point(e.X, e.Y);
fMove = true;
}
#endregion
void EntertoTab(Control ctl)
{
if (ctl.HasChildren)
{
foreach (var item in ctl.Controls)
{
if (item.GetType() == typeof(TextBox))
{
var tb = item as TextBox;
tb.KeyDown += (s1, e1) =>
{
if (e1.KeyCode == Keys.Enter) SendKeys.Send("{TAB}");
};
}
}
}
}
void Model_TableNewRow(object sender, DataTableNewRowEventArgs e)
{
e.Row["Title"] = DateTime.Now.ToString("yyMMddHHmmss");
e.Row["BCD_1D"] = true;
e.Row["BCD_QR"] = false;
e.Row["BCD_DM"] = true;
//e.Row["guid"] = Guid.NewGuid().ToString();
//e.Row["MotionModel"] = "Default";
// e.Row["RowCount"] = 5;
// e.Row["ColCount"] = 0;
// e.Row["Light"] = 50;
}
private void modelBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
}
private void bs_CurrentChanged(object sender, EventArgs e)
{
//z range 을 표시한다.
//z position 영역을 문자로 변환한다.
//this.list
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.MCModelRow;
}
private void tmDisplay_Tick(object sender, EventArgs e)
{
if (VAR.BOOL[eVarBool.Use_Conveyor])
{
btConvOk.BackColor = Color.Lime;
btConvOff.BackColor = Color.White;
}
else
{
btConvOk.BackColor = Color.White;
btConvOff.BackColor = Color.Lime;
}
}
private void dv_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
}
private void btSelect_Click(object sender, EventArgs e)
{
}
Boolean hasChanged()
{
this.Validate();
this.bs.EndEdit();
var chg = this.ds1.OPModel.GetChanges();
if (chg == null || chg.Rows.Count < 1) return false;
return true;
}
void selectModel()
{
//select
this.Invalidate();
this.bs.EndEdit();
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.OPModelRow;
if (dr.Title == "") return;
this.Value = dr.Title;
PUB.uSetting.useConv = VAR.BOOL[eVarBool.Use_Conveyor];
PUB.uSetting.Save();
DialogResult = System.Windows.Forms.DialogResult.OK;
}
private void toolStripButton2_Click_1(object sender, EventArgs e)
{
//iocontrol
var f = new Dialog.Quick_Control();
f.TopMost = true;
f.Opacity = 0.95;
f.Show();
}
private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
{
}
//private void tbFind_KeyDown(object sender, KeyEventArgs e)
//{
// if (e.KeyCode == Keys.Enter)
// {
// findModel();
// }
//}
//void findModel()
//{
// try
// {
// if (this.tbFind.Text.Trim() == "")
// {
// this.bs.Filter = "";
// this.tbFind.BackColor = Color.White;
// }
// else
// {
// string filter = "title like '%{0}%'";
// filter = string.Format(filter, tbFind.Text.Trim());
// this.bs.Filter = filter;
// this.tbFind.BackColor = Color.SkyBlue;
// this.tbFind.SelectAll();
// }
// }
// catch (Exception Ex)
// {
// this.bs.Filter = "";
// this.tbFind.BackColor = Color.Tomato;
// Util.MsgE(Ex.Message);
// }
//}
//private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
//{
// var f = new Dialog.fTouchKeyFull("INPUT - ", this.tbFind.Text.Trim());
// if (f.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
// var inputLot = f.tbInput.Text.Trim().ToUpper();
// //if (inputLot == "") return;
// tbFind.Text = inputLot;
// findModel();
// tbFind.Focus();
// tbFind.SelectAll();
//}
private void button23_Click(object sender, EventArgs e)
{
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
}
void dv_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (this.dv.Columns[e.ColumnIndex].DataPropertyName.ToLower() == "spn")
{
//var drv = dv.Rows[e.RowIndex].DataBoundItem as DataRowView;
//var dr = drv.Row as DataSet1.ModelRow;
//var spn = dr.SPN;
//spn = selectSPn(spn);
//if(spn != "")
//{
// dr.SPN = spn;
// dv.EndEdit();
//}
}
}
//string selectSPn(string selectedname)
//{
// var od = new OpenFileDialog();
// od.InitialDirectory = COMM.SETTING.Data.SPNPath;
// od.FileName = selectedname;
// if (od.ShowDialog() != System.Windows.Forms.DialogResult.OK) return "";
// var fi = new System.IO.FileInfo(od.FileName);
// if (COMM.SETTING.Data.SPNPath != fi.Directory.FullName)
// {
// COMM.SETTING.Data.SPNPath = fi.Directory.FullName;
// COMM.SETTING.Data.Save();
// }
// var SPN = fi.Name.Replace(fi.Extension, "");
// return SPN;
//}
private void toolStripButton3_Click(object sender, EventArgs e)
{
//if(COMM.SETTING.Data.SPNPath == "")
//{
// Util.MsgE("SEM 파일 저장 경로가 입력되지 않았습니다\n"+
// "환경설정에서 해당 값을 입력할 수 있습니다");
// return;
//}
//Util.RunExplorer(COMM.SETTING.Data.SPNPath);
//return;
//var drv = this.bs.Current as DataRowView;
//if (drv == null) return;
//var dr = drv.Row as DataSet1.ModelRow;
//var spn = selectSPn(dr.SPN);
//if(spn != "")
//{
// dr.SPN = spn;
// dr.EndEdit();
//}
}
private void tbClose_Click(object sender, EventArgs e)
{
this.Close();
}
//private void visXCountLabel_Click(object sender, EventArgs e)
//{
// //jopgspeed
// var value = double.Parse(visXCountTextBox.Text);
// value = Pub.ChangeValuePopup(value, "속도 입력");
// visXCountTextBox.Text = value.ToString();
//}
//private void visYCountLabel_Click(object sender, EventArgs e)
//{
// //jopgspeed
// var value = double.Parse(visYCountTextBox.Text);
// value = Pub.ChangeValuePopup(value, "속도 입력");
// visYCountTextBox.Text = value.ToString();
//}
//private void visXTermLabel_Click(object sender, EventArgs e)
//{
// var value = double.Parse(visXTermTextBox.Text);
// value = Pub.ChangeValuePopup(value, "속도 입력");
// visXTermTextBox.Text = value.ToString();
//}
//private void visYTermLabel_Click(object sender, EventArgs e)
//{
// var value = double.Parse(visYTermTextBox.Text);
// value = Pub.ChangeValuePopup(value, "속도 입력");
// visYTermTextBox.Text = value.ToString();
//}
//private void label1_Click(object sender, EventArgs e)
//{
// var c = int.Parse(textBox1.Text);
// var cd = new ColorDialog();
// cd.Color = Color.FromArgb(c);
// if (cd.ShowDialog() == DialogResult.OK)
// {
// textBox1.Text = cd.Color.ToArgb().ToString();
// }
//}
//private void label2_Click(object sender, EventArgs e)
//{
// var c = int.Parse(textBox2.Text);
// var cd = new ColorDialog();
// cd.Color = Color.FromArgb(c);
// if (cd.ShowDialog() == DialogResult.OK)
// {
// textBox2.Text = cd.Color.ToArgb().ToString();
// }
//}
//private void label4_Click(object sender, EventArgs e)
//{
// var c = int.Parse(textBox4.Text);
// var cd = new ColorDialog();
// cd.Color = Color.FromArgb(c);
// if (cd.ShowDialog() == DialogResult.OK)
// {
// textBox4.Text = cd.Color.ToArgb().ToString();
// }
//}
//private void label3_Click(object sender, EventArgs e)
//{
// var c = int.Parse(textBox3.Text);
// var cd = new ColorDialog();
// cd.Color = Color.FromArgb(c);
// if (cd.ShowDialog() == DialogResult.OK)
// {
// textBox3.Text = cd.Color.ToArgb().ToString();
// }
//}
private void textBox1_TextChanged(object sender, EventArgs e)
{
var tb = sender as TextBox;
var str = tb.Text.Trim();
if (str.isEmpty()) str = "0";
var c = Color.FromArgb(int.Parse(str));
if (str.Equals("0") == false) tb.BackColor = c;
else tb.BackColor = Color.Black;
}
//private void button2_Click(object sender, EventArgs e)
//{
// Pub.dev_lightT.SetRGBValue(textBox3.BackColor);
//}
//private void button4_Click(object sender, EventArgs e)
//{
// Pub.dev_lightB.SetRGBValue(textBox1.BackColor);
//}
//private void button3_Click(object sender, EventArgs e)
//{
// Pub.dev_lightB.SetRGBValue(textBox4.BackColor);
//}
//private void button1_Click(object sender, EventArgs e)
//{
// Pub.dev_lightT.SetRGBValue(textBox2.BackColor);
//}
private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e)
{
}
private void toolStripButton5_Click(object sender, EventArgs e)
{
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
var dlg = UTIL.MsgQ("현재 선택된 자료를 삭제하시겠습니까?");
if (dlg != System.Windows.Forms.DialogResult.Yes) return;
bs.RemoveCurrent();
//this.ds1.Model.AcceptChanges();
}
private void toolStripButton8_Click(object sender, EventArgs e)
{
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.OPModelRow;
var dlg = UTIL.MsgQ(string.Format("다음 모델 정보를 복사하시겠습니까?\n\n모델명 : {0}", dr.Title));
if (dlg != System.Windows.Forms.DialogResult.Yes) return;
var newdr = this.ds1.OPModel.NewOPModelRow();
UTIL.CopyData(dr, newdr);
newdr.Title += "-copy-";
newdr.idx = this.ds1.OPModel.OrderByDescending(t => t.idx).FirstOrDefault().idx + 1;
newdr.EndEdit();
this.ds1.OPModel.AddOPModelRow(newdr);
if (this.bs.Count > 0) this.bs.Position = this.bs.Count - 1;
////detailcopy
//var childs = ds1.OPModel.Where(t => t.pidx == dr.idx).ToArray();
//foreach (var dr2 in childs)
//{
// var newdr2 = this.ds1.OPModel.NewOPModelRow();
// Util.CopyData(dr2, newdr2);
// newdr2.pidx = newdr.idx;
// newdr2.EndEdit();
// newdr2.idx = this.ds1.OPModel.OrderByDescending(t => t.idx).FirstOrDefault().idx + 1;
// this.ds1.OPModel.AddOPModelRow(newdr2);
//}
//if (this.bs.Count > 0) this.bs.Position = this.bs.Count - 1;
}
private void toolStripButton4_Click(object sender, EventArgs e)
{
var f = new Dialog.fTouchKeyFull("모델명을 입력하세요", DateTime.Now.ToString("yyyyMMddHHmmss"));
if (f.ShowDialog() == DialogResult.OK)
{
var newdr = this.ds1.OPModel.NewOPModelRow();
newdr.Title = f.tbInput.Text.Trim();
newdr.Motion = "Default";
this.ds1.OPModel.AddOPModelRow(newdr);
if (this.bs.Count > 0) this.bs.Position = this.bs.Count - 1;
}
}
private void bs_CurrentChanged_1(object sender, EventArgs e)
{
//값이바뀌면 허용 바코드 목록을 업데이트 해준다.
var drv = bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.OPModelRow;
//this.tabControl1.Visible = !dr.Title.StartsWith("101");
//this.panel6.Visible = !dr.Title.StartsWith("101");
// this.panel7.Visible = !dr.Title.StartsWith("101");
//update checkbox
foreach (var c in tabPage1.Controls)
{
if (c.GetType() != typeof(CheckBox)) continue;
var chk = c as CheckBox;
if (chk.Tag == null) continue;
var val = UTIL.GetBitState(dr.vOption, int.Parse(chk.Tag.ToString()));
if (chk.Checked != val) chk.Checked = val;
}
foreach (var c in grpApplySidinfo.Controls)
{
if (c.GetType() != typeof(CheckBox)) continue;
var chk = c as CheckBox;
if (chk.Tag == null) continue;
var val = UTIL.GetBitState(dr.vSIDInfo, int.Parse(chk.Tag.ToString()));
if (chk.Checked != val) chk.Checked = val;
}
foreach (var c in grpapplyjob.Controls)
{
if (c.GetType() != typeof(CheckBox)) continue;
var chk = c as CheckBox;
if (chk.Tag == null) continue;
var val = UTIL.GetBitState(dr.vJobInfo, int.Parse(chk.Tag.ToString()));
if (chk.Checked != val) chk.Checked = val;
}
foreach (var c in GrpSidConvData.Controls)
{
if (c.GetType() != typeof(CheckBox)) continue;
var chk = c as CheckBox;
if (chk.Tag == null) continue;
var val = UTIL.GetBitState(dr.vSIDConv, int.Parse(chk.Tag.ToString()));
if (chk.Checked != val) chk.Checked = val;
}
}
private void toolStripButton9_Click(object sender, EventArgs e)
{
//button - save
this.Validate();
this.bs.EndEdit();
if (hasChanged() == false)
{
PUB.log.Add("모델저장:변경된 사항이 없습니다");
return;
}
if (PUB.PasswordCheck() == false)
{
UTIL.MsgE("Password incorrect");
return;
}
//z position 영역을 문자로 변환한다.
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.OPModelRow;
dr.EndEdit();
this.ds1.AcceptChanges();
PUB.mdm.dataSet.OPModel.Clear();
PUB.mdm.dataSet.OPModel.Merge(this.ds1.OPModel);
PUB.mdm.dataSet.AcceptChanges();
PUB.mdm.SaveModelV();
}
private void toolStripButton10_Click(object sender, EventArgs e)
{
if (PUB.sm.Step == eSMStep.RUN || PUB.sm.Step == eSMStep.WAITSTART || PUB.sm.Step == eSMStep.PAUSE)
{
UTIL.MsgE("현재 동작(대기) 중이므로 모델을 변경 할 수 없습니다");
return;
}
if (hasChanged())
{
var dlg = UTIL.MsgQ("변경된 자료가 있습니다.\n" +
"진행하면 변경된 자료는 손실됩니다\n" +
"진행 할까요?");
if (dlg != DialogResult.Yes) return;
}
selectModel();
}
private void chkApplySidInfo_CheckStateChanged(object sender, EventArgs e)
{
var chk = sender as CheckBox;
chk.ForeColor = chk.Checked ? Color.Blue : Color.Gray;
if (chk.Name.Equals(chkApplyJobInfo.Name))
{
grpapplyjob.Enabled = chk.Checked;
}
if (chk.Name.Equals(chkApplySidInfo.Name))
{
grpApplySidinfo.Enabled = chk.Checked;
}
if (chk.Name.Equals(chkApplySIDConvData.Name))
{
GrpSidConvData.Enabled = chk.Checked;
}
}
private void btConvOk_Click(object sender, EventArgs e)
{
VAR.BOOL[eVarBool.Use_Conveyor] = true;
}
private void btConvOff_Click(object sender, EventArgs e)
{
VAR.BOOL[eVarBool.Use_Conveyor] = false;
}
private void tbBypassSID_TextChanged(object sender, EventArgs e)
{
var tb = sender as TextBox;
tb.BackColor = tb.TextLength > 0 ? Color.Gold : Color.WhiteSmoke;
}
private void checkBox32_CheckedChanged(object sender, EventArgs e)
{
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,919 @@
using AR;
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 Motion_MoveToGroup : Form
{
int axisX, axisY, axisZ;
DataSet1 ds;
int pidx = -1;/// = string.Empty;
public Motion_MoveToGroup(DataSet1 dt_, int targetidx)
{
InitializeComponent();
// this.Size = new Size(800, 500);
this.WindowState = FormWindowState.Maximized;
btXNeg.Tag = "X-";
btXPos.Tag = "X+";
btYNeg.Tag = "Y-";
btYPos.Tag = "Y+";
this.ds = dt_;
pidx = targetidx;
//this.lvF.FullRowSelect = true;
//this.lvF.GridLines = true;
//arDatagridView1.DataSource = dt_.MCModel;
var dr = dt_.MCModel.Where(t => t.idx == targetidx).FirstOrDefault();
if (dr == null) this.Text = "위치 기준 이동";
else this.Text = $"위치 기준 이동(모델명:{dr.Title})";
}
private void Motion_MoveToGroup_Load(object sender, EventArgs e)
{
refreshData();
tmDisplay.Start();
}
void refreshData()
{
//목록을 추출한다
//this.lvF.Items.Clear();
//this.listView1.Columns[0].Width = 120;
//this.listView1.Columns[1].Width = 300;
//this.lvF.Font = new Font("맑은 고딕", 15);
var ctgrp = this.ds.MCModel.Where(t => t.pidx == this.pidx && string.IsNullOrEmpty(t.Category) == false).GroupBy(t => t.Category);
var rawGrplist = ctgrp.Select(t => t.Key).ToList();
Dictionary<string, List<int>> grpList = new Dictionary<string, List<int>>();
foreach (var dr in ctgrp.OrderBy(t => t.Key))
{
var rawgrplist = dr.Key.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var grpname in rawgrplist)
{
var keybuf = grpname.Split('|'); //그룹과 위치명은 | 로구분되어있다
if (keybuf.Length == 1)
{
Array.Resize(ref keybuf, 2);
keybuf[1] = keybuf[0];
keybuf[0] = "Normal";
}
var newgrpname = string.Join("|", keybuf);
var motlist = dr.GroupBy(t => t.idx).Select(t => t.Key).ToList();
if (grpList.ContainsKey(newgrpname) == false)
{
grpList.Add(newgrpname, motlist);
}
else
{
//동일그룹이 등록되어있다
var oldlist = grpList[newgrpname];
foreach (var drindex in motlist)
if (oldlist.Contains(drindex) == false) oldlist.Add(drindex);
grpList[newgrpname] = oldlist;
}
}
}
tvFront.Nodes.Clear();
tvFront.Font = new Font("맑은 고딕", 10, FontStyle.Bold);
tvRear.Nodes.Clear();
tvRear.Font = new Font("맑은 고딕", 10, FontStyle.Bold);
tvOther.Nodes.Clear();
tvOther.Font = new Font("맑은 고딕", 10, FontStyle.Bold);
tvOther2.Nodes.Clear();
tvOther2.Font = new Font("맑은 고딕", 10, FontStyle.Bold);
//목록을 취합햇으니 표시한다
foreach (var item in grpList)
{
var motlist = new List<int>();
foreach (var drindex in item.Value)
{
var dr = this.ds.MCModel.Where(t => t.idx == drindex).First();
motlist.Add(dr.MotIndex);
}
if (motlist.Count < 1) continue;
var buf = item.Key.Split('|');
var cate = buf[0];
var itemname = buf[1];
if (cate.Contains("_MANAGE"))
{
if (tvOther2.Nodes.ContainsKey(cate) == false)
{
var nd = tvOther2.Nodes.Add(cate, cate);
var snd = nd.Nodes.Add(itemname, itemname + " ▶ (" + string.Join(",", motlist.OrderBy(t => t).Select(t => (eAxis)t)) + ")");
snd.Tag = item.Value;
if (itemname.Contains("PICKOFF")) snd.ForeColor = Color.Blue;
else if (itemname.Contains("PICKON")) snd.ForeColor = Color.DarkGreen;
else if (itemname.StartsWith("T")) snd.ForeColor = Color.Magenta;
else snd.ForeColor = Color.Black;
}
else
{
var nd = tvOther2.Nodes[cate];
var snd = nd.Nodes.Add(itemname, itemname + " ▶ (" + string.Join(",", motlist.OrderBy(t => t).Select(t => (eAxis)t)) + ")");
snd.Tag = item.Value;
if (itemname.Contains("PICKOFF")) snd.ForeColor = Color.Blue;
else if (itemname.Contains("PICKON")) snd.ForeColor = Color.DarkGreen;
else if (itemname.StartsWith("T")) snd.ForeColor = Color.Magenta;
else snd.ForeColor = Color.Black;
}
}
else if (itemname.StartsWith("R") || (itemname.StartsWith("F") == false && itemname.ToUpper().Contains("REAR")))
{
itemname = itemname.Replace("RSHUTTLE", "R");
if (tvRear.Nodes.ContainsKey(cate) == false)
{
var nd = tvRear.Nodes.Add(cate, cate);
var snd = nd.Nodes.Add(itemname, itemname + " ▶ (" + string.Join(",", motlist.OrderBy(t => t).Select(t => (eAxis)t)) + ")");
snd.Tag = item.Value;
if (itemname.Contains("PICKOFF")) snd.ForeColor = Color.Blue;
else if (itemname.Contains("PICKON")) snd.ForeColor = Color.DarkGreen;
else if (itemname.StartsWith("T")) snd.ForeColor = Color.Magenta;
else snd.ForeColor = Color.Black;
}
else
{
var nd = tvRear.Nodes[cate];
var snd = nd.Nodes.Add(itemname, itemname + " ▶ (" + string.Join(",", motlist.OrderBy(t => t).Select(t => (eAxis)t)) + ")");
snd.Tag = item.Value;
if (itemname.Contains("PICKOFF")) snd.ForeColor = Color.Blue;
else if (itemname.Contains("PICKON")) snd.ForeColor = Color.DarkGreen;
else if (itemname.StartsWith("T")) snd.ForeColor = Color.Magenta;
else snd.ForeColor = Color.Black;
}
}
else if (itemname.StartsWith("F") || (itemname.StartsWith("R") == false && itemname.ToUpper().Contains("FRONT")))
{
itemname = itemname.Replace("FSHUTTLE", "F");
if (tvFront.Nodes.ContainsKey(cate) == false)
{
var nd = tvFront.Nodes.Add(cate, cate);
var snd = nd.Nodes.Add(itemname, itemname + " ▶ (" + string.Join(",", motlist.OrderBy(t => t).Select(t => (eAxis)t)) + ")");
snd.Tag = item.Value;
if (itemname.Contains("PICKOFF")) snd.ForeColor = Color.Blue;
else if (itemname.Contains("PICKON")) snd.ForeColor = Color.DarkGreen;
else if (itemname.StartsWith("T")) snd.ForeColor = Color.Magenta;
else snd.ForeColor = Color.Black;
}
else
{
var nd = tvFront.Nodes[cate];
var snd = nd.Nodes.Add(itemname, itemname + " ▶ (" + string.Join(",", motlist.OrderBy(t => t).Select(t => (eAxis)t)) + ")");
snd.Tag = item.Value;
if (itemname.Contains("PICKOFF")) snd.ForeColor = Color.Blue;
else if (itemname.Contains("PICKON")) snd.ForeColor = Color.DarkGreen;
else if (itemname.StartsWith("T")) snd.ForeColor = Color.Magenta;
else snd.ForeColor = Color.Black;
}
}
else
{
if (tvOther.Nodes.ContainsKey(cate) == false)
{
var nd = tvOther.Nodes.Add(cate, cate);
var snd = nd.Nodes.Add(itemname, itemname + " ▶ (" + string.Join(",", motlist.OrderBy(t => t).Select(t => (eAxis)t)) + ")");
snd.Tag = item.Value;
if (itemname.Contains("PICKOFF")) snd.ForeColor = Color.Blue;
else if (itemname.Contains("PICKON")) snd.ForeColor = Color.DarkGreen;
else if (itemname.StartsWith("T")) snd.ForeColor = Color.Magenta;
else snd.ForeColor = Color.Black;
}
else
{
var nd = tvOther.Nodes[cate];
var snd = nd.Nodes.Add(itemname, itemname + " ▶ (" + string.Join(",", motlist.OrderBy(t => t).Select(t => (eAxis)t)) + ")");
snd.Tag = item.Value;
if (itemname.Contains("PICKOFF")) snd.ForeColor = Color.Blue;
else if (itemname.Contains("PICKON")) snd.ForeColor = Color.DarkGreen;
else if (itemname.StartsWith("T")) snd.ForeColor = Color.Magenta;
else snd.ForeColor = Color.Black;
}
}
//var lv = this.lvF.Items.Add(buf[0]);
//lv.SubItems.Add(buf[1]);
//lv.SubItems.Add(string.Join(",", motlist.OrderBy(t => t)));
//if (buf[1].StartsWith("R"))
// lv.ForeColor = Color.Blue;
//else if (buf[1].StartsWith("T"))
// lv.ForeColor = Color.Magenta;
//lv.Tag = item.Value; //datarowindex 를 가진다
}
tvFront.ExpandAll();
tvRear.ExpandAll();
tvOther.ExpandAll();
tvOther2.ExpandAll();
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
refreshData();
}
Task MoveMotion = null;
List<int> GetCurrentList()
{
if (seltv == null)
{
UTIL.MsgE("먼저 이동할 위치를 선택하세요");
return null;
}
var tn = seltv.SelectedNode;
if (tn == null) return null;
if (tn.Level < 1) return null;
return (List<int>)tn.Tag;
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
//지정된 축중에 Z축을 가진 대상이 있다면 그것을 우선 0으로 이동시킨다.
List<int> idxlist = GetCurrentList();
if (idxlist == null) return;
List<eAxis> zlist = new List<eAxis>();
List<eAxis> nlist = new List<eAxis>();
List<DataSet1.MCModelRow> zplist = new List<DataSet1.MCModelRow>();
List<DataSet1.MCModelRow> nplist = new List<DataSet1.MCModelRow>();
System.Text.StringBuilder sb = new StringBuilder();
foreach (var dridx in idxlist)
{
var dr = this.ds.MCModel.Where(t => t.idx == dridx).First();
var ax = (eAxis)dr.MotIndex;
var cate = ax.CategoryAttr();
if (cate.StartsWith("Z"))
{
zlist.Add(ax);
zplist.Add(dr);
}
else
{
//나머지축에 인터락이 있으면 처리하지 않는다.
if (PUB.iLock[dr.MotIndex].IsEmpty() == false)
{
if (sb.Length < 1) sb.AppendLine("모션에 인터락이 설정되어 있습니다\n");
var locklist = MOT.GetActiveLockList(ax, PUB.iLock[dr.MotIndex]);
sb.AppendLine($"축 : {ax}({dr.MotIndex}) 대상:{string.Join(",", locklist)}");
}
nlist.Add(ax);
nplist.Add(dr);
}
}
if (sb.Length > 0)
{
UTIL.MsgE(sb.ToString(), true);
return;
}
Queue<Tuple<eAxis, sPositionData, bool>> poslist = new Queue<Tuple<eAxis, sPositionData, bool>>();
sb.AppendLine("축 이동을 시작할까요?\nZ축은 안전을 위해 0으로 이동 후 이동 됩니다");
int idx = 0;
for (int i = 0; i < zlist.Count; i++)
{
var ax = zlist[i];
var dr = zplist[i];
sb.AppendLine($"[{++idx:000}] 원점(0)으로 이동 : " + ax.ToString());
var p = new Tuple<eAxis, sPositionData, bool>(ax, new sPositionData
{
Axis = (int)ax,
Position = 0,
Speed = Math.Max(100, dr.Speed),
Acc = dr.SpeedAcc,
Dcc = dr.SpeedDcc,
}, true);
poslist.Enqueue(p);
}
for (int i = 0; i < nlist.Count; i++)
{
var ax = nlist[i];
var dr = nplist[i];
sb.AppendLine($"[{++idx:000}] {ax} 위치 이동 : {dr.Position}mm({dr.Speed}ms)");
var p = new Tuple<eAxis, sPositionData, bool>(ax, new sPositionData
{
Axis = (int)ax,
Position = dr.Position,
Speed = Math.Max(100, dr.Speed),
Acc = dr.SpeedAcc,
Dcc = dr.SpeedDcc,
}, false);
poslist.Enqueue(p);
}
//x,y완료될떄까지 기다림
for (int i = 0; i < nlist.Count; i++)
{
var ax = nlist[i];
var dr = nplist[i];
sb.AppendLine($"[{++idx:000}] {ax} 위치 이동 : {dr.Position}mm({dr.Speed}ms)");
var p = new Tuple<eAxis, sPositionData, bool>(ax, new sPositionData
{
Axis = (int)ax,
Position = dr.Position,
Speed = Math.Max(100, dr.Speed),
Acc = dr.SpeedAcc,
Dcc = dr.SpeedDcc,
}, true);
poslist.Enqueue(p);
}
for (int i = 0; i < zlist.Count; i++)
{
var ax = zlist[i];
var dr = zplist[i];
sb.AppendLine($"[{++idx:000}] {ax} 위치 이동 : {dr.Position}mm({dr.Speed}ms)");
var p = new Tuple<eAxis, sPositionData, bool>(ax, new sPositionData
{
Axis = (int)ax,
Position = Math.Max(dr.Position - 50, 0),
Speed = Math.Max(100, dr.Speed),
Acc = dr.SpeedAcc,
Dcc = dr.SpeedDcc,
}, false);
poslist.Enqueue(p);
}
var dlg = UTIL.MsgQ(sb.ToString());
if (dlg != DialogResult.Yes) return;
if (PUB.mot.HasHomeSetOff)
{
UTIL.MsgE("홈이 완료되지 않은 모션이 있습니다");
return;
}
MoveMotion = new Task(new Action(() =>
{
DateTime starttime = DateTime.Now;
Tuple<eAxis, sPositionData, bool> p = null;
while (poslist.Any() || p != null) //자료가있거나 현재 걸려있는게 있는 경우
{
if (p == null)
{
p = poslist.Dequeue();
starttime = DateTime.Now;
}
var seqtime = DateTime.Now - starttime;
if (p.Item3) //대기
{
if (MOT.CheckMotionPos(seqtime, p.Item2, "USER", false) == false)
{
var msg = PUB.mot.ErrorMessage;
//{
//Util.MsgE("모션 이동 실패\n" + Pub.mot.ErrorMessage);
//break;
//}
if (seqtime.TotalSeconds > 60)
{
PUB.log.AddE("위치 이동실패 60초 초과");
break;
}
System.Threading.Thread.Sleep(100);
continue;
}
}
else MOT.Move(p.Item1, p.Item2.Position, p.Item2.Speed, p.Item2.Acc, false, false, false); //위치이동을한다
p = null; //다음으로 진행할 수 있게 한다
}
}));
MoveMotion.RunSynchronously();
}
private void btSet_Click(object sender, EventArgs e)
{
//담당 축중에 ready 를 제외한 축을 추출하고
//해당 축의 해당 위치에 command 좌표를 할당 합니다.
if (PUB.mot.HasHomeSetOff)
{
UTIL.MsgE("홈이 완료되지 않은 모션이 있습니다\n저장을 할 수 없습니다");
return;
}
//지정된 축중에 Z축을 가진 대상이 있다면 그것을 우선 0으로 이동시킨다.
//지정된 축중에 Z축을 가진 대상이 있다면 그것을 우선 0으로 이동시킨다.
List<int> idxlist = GetCurrentList();
if (idxlist == null) return;
List<eAxis> nlist = new List<eAxis>();
List<DataSet1.MCModelRow> nplist = new List<DataSet1.MCModelRow>();
foreach (var dridx in idxlist)
{
var dr = this.ds.MCModel.Where(t => t.idx == dridx).First();
if (dr.PosTitle.StartsWith("READY")) continue;
var ax = (eAxis)dr.MotIndex;
var cate = ax.CategoryAttr();
nlist.Add(ax);
nplist.Add(dr);
}
Queue<Tuple<DataSet1.MCModelRow, eAxis, string, double, double>> poslist = new Queue<Tuple<DataSet1.MCModelRow, eAxis, string, double, double>>();
var sb = new System.Text.StringBuilder();
sb.AppendLine("다음좌표의 위치를 저장할까요?");
sb.AppendLine();
for (int i = 0; i < nlist.Count; i++)
{
var ax = nlist[i];
var dr = nplist[i];
var curpos = PUB.mot.GetCmdPos((int)ax);
sb.AppendLine($"[{dr.idx}] 축:{ax} - {dr.PosTitle}\n\t변경위치 {dr.Position} -> {curpos}");
var param = new Tuple<DataSet1.MCModelRow, eAxis, string, double, double>(dr, ax, dr.PosTitle, dr.Position, curpos);
poslist.Enqueue(param);
}
using (var f = new Dialog.fSavePosition(poslist))
{
if (f.ShowDialog() != DialogResult.OK)
{
UTIL.MsgE("좌표 저장이 취소 됨");
}
}
//var dlg = Util.MsgQ(sb.ToString());
//if (dlg != DialogResult.Yes) return;
//var cnt = 0;
//foreach (var p in poslist)
//{
// p.Item1.Position = p.Item2;
// p.Item1.EndEdit();
// cnt += 1;
//}
//Util.MsgI($"{cnt}건의 위치를 변경 했습니다");
}
private void btJogUp_MouseDown(object sender, MouseEventArgs e)
{
var but = sender as Button;
var tag = but.Tag.ToString();
var vel = (float)nudJogVel.Value;
if (tag == "X+")
{
if (axisX >= 0) PUB.mot.JOG(axisX, arDev.MOT.MOTION_DIRECTION.Positive, vel, 500, false, false);
}
else if (tag == "X-")
{
if (axisX >= 0) PUB.mot.JOG(axisX, arDev.MOT.MOTION_DIRECTION.Negative, vel, 500, false, false);
}
else if (tag == "Y+")
{
if (axisY >= 0) PUB.mot.JOG(axisY, arDev.MOT.MOTION_DIRECTION.Positive, vel, 500, false, false);
}
else if (tag == "Y-")
{
if (axisY >= 0) PUB.mot.JOG(axisY, arDev.MOT.MOTION_DIRECTION.Negative, vel, 500, false, false);
}
else if (tag == "Z+")
{
if (axisZ >= 0) PUB.mot.JOG(axisZ, arDev.MOT.MOTION_DIRECTION.Positive, vel, 500, false, false);
}
else if (tag == "Z-")
{
if (axisZ >= 0) PUB.mot.JOG(axisZ, arDev.MOT.MOTION_DIRECTION.Negative, vel, 500, false, false);
}
}
private void btAClear_MouseUp(object sender, MouseEventArgs e)
{
var but = sender as Button;
var tag = but.Tag.ToString();
var vel = (float)nudJogVel.Value;
if (tag == "X+")
{
if (axisX >= 0) PUB.mot.MoveStop("MOVETOGRP", axisX, true);
}
else if (tag == "X-")
{
if (axisX >= 0) PUB.mot.MoveStop("MOVETOGRP", axisX, true);
}
else if (tag == "Y+")
{
if (axisY >= 0) PUB.mot.MoveStop("MOVETOGRP", axisY, true);
}
else if (tag == "Y-")
{
if (axisY >= 0) PUB.mot.MoveStop("MOVETOGRP", axisY, true);
}
else if (tag == "Z+")
{
if (axisZ >= 0) PUB.mot.MoveStop("MOVETOGRP", axisZ, true);
}
else if (tag == "Z-")
{
if (axisZ >= 0) PUB.mot.MoveStop("MOVETOGRP", axisZ, true);
}
}
private void tmDisplay_Tick(object sender, EventArgs e)
{
var motpos = string.Empty;
if (axisX >= 0)
{
motpos += $"X:{PUB.mot.GetActPos(axisX):N3}/{PUB.mot.GetCmdPos(axisX):N3}";
button6.BackColor = PUB.iLock[axisX].IsEmpty() ? Color.FromArgb(224, 224, 224) : Color.Orange;
}
else
{
motpos += "X:(none)";
button6.BackColor = Color.FromArgb(224, 224, 224);
}
if (axisY >= 0)
{
motpos += $" / Y:{PUB.mot.GetActPos(axisY):N3}/{PUB.mot.GetCmdPos(axisY):N3}";
button5.BackColor = PUB.iLock[axisY].IsEmpty() ? Color.FromArgb(224, 224, 224) : Color.Orange;
}
else
{
motpos += " Y:(none)";
button5.BackColor = Color.FromArgb(224, 224, 224);
}
if (axisZ >= 0)
{
motpos += $" / Z:{PUB.mot.GetActPos(axisZ):N3},{PUB.mot.GetCmdPos(axisZ):N3}";
button4.BackColor = PUB.iLock[axisZ].IsEmpty() ? Color.FromArgb(224, 224, 224) : Color.Orange;
}
else
{
motpos += " Z:(none)";
button4.BackColor = Color.FromArgb(224, 224, 224);
}
this.lbMotPos.Text = motpos;
}
private void Motion_MoveToGroup_FormClosed(object sender, FormClosedEventArgs e)
{
tmDisplay.Stop();
}
private void button1_Click(object sender, EventArgs e)
{
var but = sender as Button;
if (but.Text.EndsWith("-ZERO"))
{
if (but.Text.StartsWith("X") && axisX >= 0)
{
if (UTIL.MsgQ("x위치를 0으로 이동할가요?") != DialogResult.Yes) return;
MOT.Move((eAxis)axisX, 0, 100, 1000, false, false, false);
}
else if (but.Text.StartsWith("Y") && axisY >= 0)
{
if (UTIL.MsgQ("y위치를 0으로 이동할가요?") != DialogResult.Yes) return;
MOT.Move((eAxis)axisY, 0, 100, 1000, false, false, false);
}
else if (but.Text.StartsWith("Z") && axisZ >= 0)
{
if (UTIL.MsgQ("Z위치를 0으로 이동할가요?") != DialogResult.Yes) return;
MOT.Move((eAxis)axisZ, 0, 100, 1000, false, false, false);
}
}
else if (but.Text.EndsWith("-MOVE"))
{
//지정된 축중에 Z축을 가진 대상이 있다면 그것을 우선 0으로 이동시킨다.
List<int> idxlist = GetCurrentList();
if (idxlist == null) return;
foreach (var dridx in idxlist)
{
var dr = this.ds.MCModel.Where(t => t.idx == dridx).First();
var ax = (eAxis)dr.MotIndex;
var cate = ax.CategoryAttr();
//나머지축에 인터락이 있으면 처리하지 않는다.
var sb = new System.Text.StringBuilder();
if (PUB.iLock[dr.MotIndex].IsEmpty() == false)
{
if (sb.Length < 1) sb.AppendLine("모션에 인터락이 설정되어 있습니다\n");
var locklist = MOT.GetActiveLockList(ax, PUB.iLock[dr.MotIndex]);
sb.AppendLine($"축 : {ax}({dr.MotIndex}) 대상:{string.Join(",", locklist)}");
sb.AppendLine();
sb.AppendLine("진행하시겠습니까?");
if (UTIL.MsgQ(sb.ToString()) != DialogResult.Yes) return;
}
if (but.Text.StartsWith("X") && cate.StartsWith("X") && axisX >= 0)
{
if (UTIL.MsgQ($"X위치를 ({dr.Position})으로 이동할가요?") != DialogResult.Yes) return;
MOT.Move(ax, dr.Position, dr.Speed, 1000, false, false, false);
}
else if (but.Text.StartsWith("Y") && cate.StartsWith("Y") && axisY >= 0)
{
if (UTIL.MsgQ($"Y위치를 ({dr.Position})으로 이동할가요?") != DialogResult.Yes) return;
MOT.Move(ax, dr.Position, dr.Speed, 1000, false, false, false);
}
else if (but.Text.StartsWith("Z") && cate.StartsWith("Z") && axisZ >= 0)
{
if (UTIL.MsgQ($"z위치를 ({dr.Position})으로 이동할가요?") != DialogResult.Yes) return;
MOT.Move(ax, dr.Position, Math.Min(50, dr.Speed), 1000, false, false, false);
}
}
}
}
private void button13_Click(object sender, EventArgs e)
{
var but = sender as Button;
var txt = but.Text.Trim();
var aname = txt.Substring(0, 1);
var value = txt.Split(':')[1].Replace("mm", "").Replace("+", "").Trim();
var v = float.Parse(value);
if (aname == "X" && axisX >= 0)
{
//이동을 해준다
MOT.Move((eAxis)axisX, v, 100, 1000, true, false, false);
}
else if (aname == "Y" && axisY >= 0)
{
//이동을 해준다
MOT.Move((eAxis)axisY, v, 100, 1000, true, false, false);
}
else if (aname == "Z" && axisZ >= 0)
{
//이동을 해준다
MOT.Move((eAxis)axisZ, v, 100, 1000, true, false, false);
}
}
TreeNode prevnode = null;
TreeView seltv = null;
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
//선택되면 대상축에서 x,y,z를 찾아서 설정하고 enable 을 설정한다.
if (seltv != null)
{
seltv.BackColor = Color.White;
}
seltv = sender as TreeView;
seltv.BackColor = Color.LightGoldenrodYellow;
if (prevnode != null)
{
prevnode.BackColor = Color.White;
}
//지정된 축중에 Z축을 가진 대상이 있다면 그것을 우선 0으로 이동시킨다.
List<int> idxlist = GetCurrentList();
if (idxlist == null) return;
var tn = this.seltv.SelectedNode;
this.Text = $"{tn.Parent.Text} - {tn.Text}";
this.prevnode = tn;
this.prevnode.BackColor = Color.Lime;
List<eAxis> xlist = new List<eAxis>();
List<eAxis> ylist = new List<eAxis>();
List<eAxis> zlist = new List<eAxis>();
List<DataSet1.MCModelRow> xplist = new List<DataSet1.MCModelRow>();
List<DataSet1.MCModelRow> yplist = new List<DataSet1.MCModelRow>();
List<DataSet1.MCModelRow> zplist = new List<DataSet1.MCModelRow>();
foreach (var dridx in idxlist)
{
var dr = this.ds.MCModel.Where(t => t.idx == dridx).First();
var ax = (eAxis)dr.MotIndex;
var cate = ax.CategoryAttr();
if (cate.StartsWith("Z"))
{
zlist.Add(ax);
zplist.Add(dr);
}
else if (cate.StartsWith("X"))
{
xlist.Add(ax);
xplist.Add(dr);
}
else if (cate.StartsWith("Y"))
{
ylist.Add(ax);
yplist.Add(dr);
}
}
if (xlist.Count == 1)
{
axisX = (int)xlist.First();
btXNeg.Enabled = true;
btXPos.Enabled = true;
btXNeg.BackColor = Color.LightSkyBlue;
btXPos.BackColor = Color.LightSkyBlue;
}
else
{
axisX = -1;
btXNeg.Enabled = false;
btXPos.Enabled = false;
btXNeg.BackColor = Color.LightGray;
btXPos.BackColor = Color.LightGray;
}
if (ylist.Count == 1)
{
axisY = (int)ylist.First();
btYNeg.Enabled = true;
btYPos.Enabled = true;
btYNeg.BackColor = Color.LightSkyBlue;
btYPos.BackColor = Color.LightSkyBlue;
}
else
{
axisY = -1;
btYNeg.Enabled = false;
btYPos.Enabled = false;
btYNeg.BackColor = Color.LightGray;
btYPos.BackColor = Color.LightGray;
}
if (zlist.Count == 1)
{
axisZ = (int)zlist.First();
btZNeg.Enabled = true;
btZPos.Enabled = true;
btZNeg.BackColor = Color.LightSkyBlue;
btZPos.BackColor = Color.LightSkyBlue;
}
else
{
axisZ = -1;
btZNeg.Enabled = false;
btZPos.Enabled = false;
btZNeg.BackColor = Color.LightGray;
btZPos.BackColor = Color.LightGray;
}
eAxis axx = (eAxis)axisX;
eAxis axy = (eAxis)axisY;
eAxis axz = (eAxis)axisZ;
lbX.Text = $"({axisX}){axx}";
if (axisX >= 0) lbX.Text += $"({xplist.First().PosIndex}mm)";
lbY.Text = $"({axisY}){axy}";
if (axisY >= 0) lbY.Text += $"({yplist.First().PosIndex}mm)";
lbZ.Text = $"({axisZ}){axz}";
if (axisZ >= 0) lbZ.Text += $"({zplist.First().PosIndex}mm)";
}
private void button25_Click(object sender, EventArgs e)
{
var but = sender as Button;
var val = int.Parse(but.Text);
nudJogVel.Value = (decimal)val;
}
private void toolStripButton2_Click_1(object sender, EventArgs e)
{
using (var f = new Model_Motion())
f.ShowDialog();
}
private void toolStripButton3_Click(object sender, EventArgs e)
{
using (var f = new Dialog.fIOMonitor())
f.ShowDialog();
}
private void button28_Click(object sender, EventArgs e)
{
//var cur = DIO.GetIOOutput(eDOName.F셔틀_회전180);
//string msg;
//if (cur) msg = "셔틀(F)이 현재 뒤집혀 있습니다.\n원위치로 복귀 할까요?";
//else msg = "셔틀(F) 을 뒤집을까요?";
//var dlg = Util.MsgQ(msg);
//if (dlg != DialogResult.Yes) return;
}
private void button29_Click(object sender, EventArgs e)
{
}
private void toolStripButton4_Click(object sender, EventArgs e)
{
using (var f = new Dialog.Quick_Control())
f.ShowDialog();
}
private void button30_Click(object sender, EventArgs e)
{
}
private void btAllZSafe_Click(object sender, EventArgs e)
{
//Z1,2,3 안전위치로 이동한다 220421
var dlg = UTIL.MsgQ("모든 Z축을 안전위치로 이동할까요?\n" +
"Z1,Z4의 경우 소켓을 잡고 있다면 안전위치 이동시 파손될 수 있습니다.\n" +
"각 그리퍼의 소켓 상황을 확인하고 진행 하세요\n" +
"Z축을 임의 이동할 경우 작업이 이어서 진행되지 않을 수 있습니다\n " +
"작업 취소 하고 다시 시작하기를 권장 합니다");
if (dlg != DialogResult.Yes) return;
var PosZ1 = MOT.GetPZPos(ePZLoc.READY);
var PosZ2 = MOT.GetLZPos(eLZLoc.READY);
var PosZ3 = MOT.GetRZPos(eRZLoc.READY);
PosZ1.Position = 0;
PosZ2.Position = 0;
PosZ3.Position = 0;
MOT.Move(PosZ1);
MOT.Move(PosZ2);
MOT.Move(PosZ3);
}
private void button31_Click(object sender, EventArgs e)
{
}
private void btJogStop_Click(object sender, EventArgs e)
{
if (axisX >= 0) MOT.Stop((eAxis)axisX, "MOVETOGRP", true);
if (axisY >= 0) MOT.Stop((eAxis)axisY, "MOVETOGRP", true);
if (axisZ >= 0) MOT.Stop((eAxis)axisZ, "MOVETOGRP", true);
}
private void motCommandButton1_Click(object sender, EventArgs e)
{
if (axisX >= 0) MOT.Stop((eAxis)axisX, "MOVETOGRP", true);
if (axisY >= 0) MOT.Stop((eAxis)axisY, "MOVETOGRP", true);
if (axisZ >= 0) MOT.Stop((eAxis)axisZ, "MOVETOGRP", true);
}
}
}

View File

@@ -0,0 +1,222 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>123, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="button30.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABE9JREFUWEft
WF9MWlccNk2Xvm5vfdnjluyxS/awDC1JWxXBtljgIqDO6qSi/JHVdlu3DNc2Grsu2ZY53cNc06HGNK5J
o+nWtBYQmRiVivyZgFKZKFDE/enqUvW3ey7n3tqC+JfELHzJl5twv/N937333HtOyMogg70KgyuUO+SN
OGwPo/+O+qPLepN3QW/yRPUDPimWbBkD7lCLPRBbsXojT3+2BR6TXi690fut3uB7DUs2B5M71OqcjYEr
uMiQLIjp0WHZljE4OX9/refw1CPoMvuQ79KmL9zknlc5Z5+Z0ExHQcQhb5j2ftox4GNh6foY9T/6+0UT
xHQVRLw1MhP3NnoHsTQ5DI7ZQ8kMENNZ0Oiep/1Xu/unD2J5IgyOkDyZAWI6Cw75mMcMHWbP21ieCKM7
qElmgJjOglZfhPG/bvKwsTwRmYKZgpmC/6eCVncAbNNhxmS3C5rt0+AIRLdX8N6wC4iSOqis/hjsM5Hn
Cn7e3vsTlm8Zd0a8DuTV3n0bhBIV6JratlbQ7JzjogG3zQ8og5KKczDuj4A9sMAYKM82ruSxeKV4yKYh
lKqJ9p7+VeTfeu0m5X/+0y+pgoOeEOPfZZh8Aw9JRD/A/gcPo0/QoLtWJ1gcfsrA6JqjBl+754QiXink
ZfOWiwpl8rHp2MupeOnq969yWdxXBIRCThZaVn9wBRy/x0guQJ9xDGxTIcq/bywQLzjgHdcB7MN1kqPf
Ec4fnQovoYH01XWSe7a2W8MgLdPCKUJBXb2gWAUKdQP8YrFTOpojk7Ogqb8EwuJarFNSR5pXv7sB4zPx
uYf2nHcnglS5H+5MTHaZfK/jGhvjs8ZWxely7VIxcQYERRVQJJA/F0STkKmhu9dIBQ65ZkAsTdS8SJFM
A6r6RiiRKUEirn5S8d5HYhy7NeTmFOTksrh/nTj+7jNzbTOIW/uAuNIJQvJFQr9JyDuLpoNccSGljuZJ
fiXkZvOA9H58LJt3BMdtD3lH+PlCSfwxER9+BRLHCkhcQFHc6wJy8lPnvmjpII8b6/inquhy5FzmcnHM
9kFI1W8hY8TiG6NMKE2h+jJ1rkbTQB030vH5FVQ5xKM5nEM4ZvsgZJo36WBxtzUhWFQTL6bUXmQKptLt
ekEOR3mANP4TmYvqmkAy9g8TKu60MKVa2nuYNzeVrrBARhf8g8PhHMAxO4NIor5IBwjlnwDR9COILnzD
hJZWnocRbxDqzsYf43o6gbgG8g4XUgWPvcNtwPY7R1VV1UtkwE0mfA1lp+upjy76zIz7Q1BW/n6CBlEg
roWCowL67vWw2ez92H53oNPp9omkqjIyzCAu1UbPqBqg+evrYJmIrzY0HeSyeLm5DSQlavIjXbsqEFWv
nDhevpR/+GQ4l1VwHy2Tuixd6tVip3DNxdhrS61Hiydso9fYlJuA3Uam4E6x5wv+FlxgkQUWN+KvntAg
uYVaRNzUH0MZZLDnkJX1H2FAn90x0NzDAAAAAElFTkSuQmCC
</value>
</data>
<data name="button28.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAA8hJREFUWEft
l2tIU2EYx+0eRUREEEH0oS9BEEQEfehDYG1nm3NNkAoSukAGRUUQFRQsiu3sjlbSMMSKLO1imhoWFZXb
zjmblbm0slWWpaal7qrzcnrf9dBw7nZ25uVDP3jgnPM+77MfL2P7n7T/TBUIktoIl6OupwwCtbUaLtOE
pKUKLqcGhJZaIyStI3CLBK2sSGVZC7eTj9zIVGApuA0KZuptFXA7uYg05pVbDYwvXDBDx/jwGjyaPORG
+krx86+BcMFT5a0BqY4phkeTg1jDLJXpaV+vN8CGC95pCrAZWtq3RV23DB5PPDI9lXfh4ad+FhEuWPNx
hD1W5hzI0DN58Hhi2UzaF0p1tKezL+gXUbCssZ+VaGmvRPViESxNHJlaWkFWtniDdohIgrgOlbT4JBrm
DCxNDFKFfV6mnu5r7fKBXnTB66+8+BRdAm3DfFgefyRa6sjpW81ucAsSTRBXbnGzR6yhDsPy+LLOZJ8l
0zNd79s9oPaXWIJX7G70u0h3ZyvezoaW8YNQWXcdveZwgdc/Ygni2l3Y6CY01l3QMk6w7LQsI9P6urUP
tELEEzRZevG/yzeFgp0ObamHUFuz9l1uGHN6mHiCuHZeeuMiVBY5tKUedHoO84dfoDSaRATPP+tmpQZb
E7SlFqHKujmn4KVnZASMwkhEsBpVdn69m1Bb0qE1dWQZbdSjxp9R9BITxKV73MnKDDYKWlMDoTKvz863
eQeHovolLHi/ZZiVGe0ekZraAO38kRtttffq24fBJSKJCuJSPmgflupttdDOD4HSskpuYPz+QEw/ToKV
74ZQ4sYhl1kNW5IHyZWWmNsGwSMqXARxKaraBlGgLYUtySE4xyzHgdTdH9ePs2B582Aw0Ip15hWwjTvo
XcNU+OTLADjEhKsgrpN3P+PXAhNs40a6kl6MIpX3lzsACrFJRvC2YwCfolekfL4EtiaOVE+ThhpnKPDF
IRlBXEdvOv1iHa2GrYmRqa5bgOP8999++Pj4JCt4o8GPA60Hv0LA9vhINdSJs+XvRwe+OCQriOvAtQ9e
kZY+DttjI8qvmYMCac/HDk5+vASv1ntwoO3ZpHg6F0ZER6y27j9e0hQxUsWCjyCuvUUOD0HSuTAiMtll
ZTPQD/MPxzfOfrwFixgXi773HegUZ8KYsaAwueNgcePYuJwAfAVx5ZjeuAQktR3GjAVFqhabswc+khup
ECyo+41OkXHiVwsYFUJI0pI9plfu6IEqNqkQxLXt4msXoaTEMCqESENZ8GA+BaOCgnyKQC4w6j88SUv7
A1lGiJL4wYWWAAAAAElFTkSuQmCC
</value>
</data>
<data name="button29.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAA8hJREFUWEft
l2tIU2EYx+0eRUREEEH0oS9BEEQEfehDYG1nm3NNkAoSukAGRUUQFRQsiu3sjlbSMMSKLO1imhoWFZXb
zjmblbm0slWWpaal7qrzcnrf9dBw7nZ25uVDP3jgnPM+77MfL2P7n7T/TBUIktoIl6OupwwCtbUaLtOE
pKUKLqcGhJZaIyStI3CLBK2sSGVZC7eTj9zIVGApuA0KZuptFXA7uYg05pVbDYwvXDBDx/jwGjyaPORG
+krx86+BcMFT5a0BqY4phkeTg1jDLJXpaV+vN8CGC95pCrAZWtq3RV23DB5PPDI9lXfh4ad+FhEuWPNx
hD1W5hzI0DN58Hhi2UzaF0p1tKezL+gXUbCssZ+VaGmvRPViESxNHJlaWkFWtniDdohIgrgOlbT4JBrm
DCxNDFKFfV6mnu5r7fKBXnTB66+8+BRdAm3DfFgefyRa6sjpW81ucAsSTRBXbnGzR6yhDsPy+LLOZJ8l
0zNd79s9oPaXWIJX7G70u0h3ZyvezoaW8YNQWXcdveZwgdc/Ygni2l3Y6CY01l3QMk6w7LQsI9P6urUP
tELEEzRZevG/yzeFgp0ObamHUFuz9l1uGHN6mHiCuHZeeuMiVBY5tKUedHoO84dfoDSaRATPP+tmpQZb
E7SlFqHKujmn4KVnZASMwkhEsBpVdn69m1Bb0qE1dWQZbdSjxp9R9BITxKV73MnKDDYKWlMDoTKvz863
eQeHovolLHi/ZZiVGe0ekZraAO38kRtttffq24fBJSKJCuJSPmgflupttdDOD4HSskpuYPz+QEw/ToKV
74ZQ4sYhl1kNW5IHyZWWmNsGwSMqXARxKaraBlGgLYUtySE4xyzHgdTdH9ePs2B582Aw0Ip15hWwjTvo
XcNU+OTLADjEhKsgrpN3P+PXAhNs40a6kl6MIpX3lzsACrFJRvC2YwCfolekfL4EtiaOVE+ThhpnKPDF
IRlBXEdvOv1iHa2GrYmRqa5bgOP8999++Pj4JCt4o8GPA60Hv0LA9vhINdSJs+XvRwe+OCQriOvAtQ9e
kZY+DttjI8qvmYMCac/HDk5+vASv1ntwoO3ZpHg6F0ZER6y27j9e0hQxUsWCjyCuvUUOD0HSuTAiMtll
ZTPQD/MPxzfOfrwFixgXi773HegUZ8KYsaAwueNgcePYuJwAfAVx5ZjeuAQktR3GjAVFqhabswc+khup
ECyo+41OkXHiVwsYFUJI0pI9plfu6IEqNqkQxLXt4msXoaTEMCqESENZ8GA+BaOCgnyKQC4w6j88SUv7
A1lGiJL4wYWWAAAAAElFTkSuQmCC
</value>
</data>
<data name="button31.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABE9JREFUWEft
WF9MWlccNk2Xvm5vfdnjluyxS/awDC1JWxXBtljgIqDO6qSi/JHVdlu3DNc2Grsu2ZY53cNc06HGNK5J
o+nWtBYQmRiVivyZgFKZKFDE/enqUvW3ey7n3tqC+JfELHzJl5twv/N937333HtOyMogg70KgyuUO+SN
OGwPo/+O+qPLepN3QW/yRPUDPimWbBkD7lCLPRBbsXojT3+2BR6TXi690fut3uB7DUs2B5M71OqcjYEr
uMiQLIjp0WHZljE4OX9/refw1CPoMvuQ79KmL9zknlc5Z5+Z0ExHQcQhb5j2ftox4GNh6foY9T/6+0UT
xHQVRLw1MhP3NnoHsTQ5DI7ZQ8kMENNZ0Oiep/1Xu/unD2J5IgyOkDyZAWI6Cw75mMcMHWbP21ieCKM7
qElmgJjOglZfhPG/bvKwsTwRmYKZgpmC/6eCVncAbNNhxmS3C5rt0+AIRLdX8N6wC4iSOqis/hjsM5Hn
Cn7e3vsTlm8Zd0a8DuTV3n0bhBIV6JratlbQ7JzjogG3zQ8og5KKczDuj4A9sMAYKM82ruSxeKV4yKYh
lKqJ9p7+VeTfeu0m5X/+0y+pgoOeEOPfZZh8Aw9JRD/A/gcPo0/QoLtWJ1gcfsrA6JqjBl+754QiXink
ZfOWiwpl8rHp2MupeOnq969yWdxXBIRCThZaVn9wBRy/x0guQJ9xDGxTIcq/bywQLzjgHdcB7MN1kqPf
Ec4fnQovoYH01XWSe7a2W8MgLdPCKUJBXb2gWAUKdQP8YrFTOpojk7Ogqb8EwuJarFNSR5pXv7sB4zPx
uYf2nHcnglS5H+5MTHaZfK/jGhvjs8ZWxely7VIxcQYERRVQJJA/F0STkKmhu9dIBQ65ZkAsTdS8SJFM
A6r6RiiRKUEirn5S8d5HYhy7NeTmFOTksrh/nTj+7jNzbTOIW/uAuNIJQvJFQr9JyDuLpoNccSGljuZJ
fiXkZvOA9H58LJt3BMdtD3lH+PlCSfwxER9+BRLHCkhcQFHc6wJy8lPnvmjpII8b6/inquhy5FzmcnHM
9kFI1W8hY8TiG6NMKE2h+jJ1rkbTQB030vH5FVQ5xKM5nEM4ZvsgZJo36WBxtzUhWFQTL6bUXmQKptLt
ekEOR3mANP4TmYvqmkAy9g8TKu60MKVa2nuYNzeVrrBARhf8g8PhHMAxO4NIor5IBwjlnwDR9COILnzD
hJZWnocRbxDqzsYf43o6gbgG8g4XUgWPvcNtwPY7R1VV1UtkwE0mfA1lp+upjy76zIz7Q1BW/n6CBlEg
roWCowL67vWw2ez92H53oNPp9omkqjIyzCAu1UbPqBqg+evrYJmIrzY0HeSyeLm5DSQlavIjXbsqEFWv
nDhevpR/+GQ4l1VwHy2Tuixd6tVip3DNxdhrS61Hiydso9fYlJuA3Uam4E6x5wv+FlxgkQUWN+KvntAg
uYVaRNzUH0MZZLDnkJX1H2FAn90x0NzDAAAAAElFTkSuQmCC
</value>
</data>
<metadata name="tmDisplay.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>279, 17</value>
</metadata>
</root>

View File

@@ -0,0 +1,869 @@
namespace Project.Dialog
{
partial class Quick_Control
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Quick_Control));
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.panel1 = new System.Windows.Forms.Panel();
this.panBG = new System.Windows.Forms.Panel();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.button60 = new System.Windows.Forms.Button();
this.button57 = new System.Windows.Forms.Button();
this.button51 = new System.Windows.Forms.Button();
this.button52 = new System.Windows.Forms.Button();
this.button58 = new System.Windows.Forms.Button();
this.button41 = new System.Windows.Forms.Button();
this.button44 = new System.Windows.Forms.Button();
this.button3 = new System.Windows.Forms.Button();
this.button54 = new System.Windows.Forms.Button();
this.button53 = new System.Windows.Forms.Button();
this.button5 = new System.Windows.Forms.Button();
this.button6 = new System.Windows.Forms.Button();
this.button4 = new System.Windows.Forms.Button();
this.button59 = new System.Windows.Forms.Button();
this.button8 = new System.Windows.Forms.Button();
this.button14 = new System.Windows.Forms.Button();
this.button15 = new System.Windows.Forms.Button();
this.button16 = new System.Windows.Forms.Button();
this.button17 = new System.Windows.Forms.Button();
this.button19 = new System.Windows.Forms.Button();
this.panel2 = new System.Windows.Forms.Panel();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.button12 = new System.Windows.Forms.Button();
this.button10 = new System.Windows.Forms.Button();
this.button38 = new System.Windows.Forms.Button();
this.button40 = new System.Windows.Forms.Button();
this.button13 = new System.Windows.Forms.Button();
this.button24 = new System.Windows.Forms.Button();
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.button7 = new System.Windows.Forms.Button();
this.button9 = new System.Windows.Forms.Button();
this.button11 = new System.Windows.Forms.Button();
this.button18 = new System.Windows.Forms.Button();
this.btLCyl = new System.Windows.Forms.Button();
this.btRCyl = new System.Windows.Forms.Button();
this.panBG.SuspendLayout();
this.groupBox1.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
this.groupBox3.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
this.SuspendLayout();
//
// timer1
//
this.timer1.Interval = 500;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// panel1
//
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
this.panel1.Location = new System.Drawing.Point(5, 511);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(286, 7);
this.panel1.TabIndex = 72;
//
// panBG
//
this.panBG.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.panBG.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panBG.Controls.Add(this.panel1);
this.panBG.Controls.Add(this.groupBox1);
this.panBG.Controls.Add(this.panel2);
this.panBG.Controls.Add(this.groupBox3);
this.panBG.Dock = System.Windows.Forms.DockStyle.Fill;
this.panBG.Location = new System.Drawing.Point(1, 1);
this.panBG.Name = "panBG";
this.panBG.Padding = new System.Windows.Forms.Padding(5);
this.panBG.Size = new System.Drawing.Size(298, 540);
this.panBG.TabIndex = 73;
//
// groupBox1
//
this.groupBox1.Controls.Add(this.tableLayoutPanel2);
this.groupBox1.Dock = System.Windows.Forms.DockStyle.Top;
this.groupBox1.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.groupBox1.ForeColor = System.Drawing.Color.WhiteSmoke;
this.groupBox1.Location = new System.Drawing.Point(5, 189);
this.groupBox1.Margin = new System.Windows.Forms.Padding(2);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Padding = new System.Windows.Forms.Padding(5, 3, 5, 5);
this.groupBox1.Size = new System.Drawing.Size(286, 322);
this.groupBox1.TabIndex = 78;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "ETC";
//
// tableLayoutPanel2
//
this.tableLayoutPanel2.ColumnCount = 4;
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel2.Controls.Add(this.button60, 0, 3);
this.tableLayoutPanel2.Controls.Add(this.button57, 0, 2);
this.tableLayoutPanel2.Controls.Add(this.button51, 0, 1);
this.tableLayoutPanel2.Controls.Add(this.button52, 1, 1);
this.tableLayoutPanel2.Controls.Add(this.button58, 3, 2);
this.tableLayoutPanel2.Controls.Add(this.button41, 0, 0);
this.tableLayoutPanel2.Controls.Add(this.button44, 1, 0);
this.tableLayoutPanel2.Controls.Add(this.button3, 1, 3);
this.tableLayoutPanel2.Controls.Add(this.button54, 2, 1);
this.tableLayoutPanel2.Controls.Add(this.button53, 3, 1);
this.tableLayoutPanel2.Controls.Add(this.button5, 1, 2);
this.tableLayoutPanel2.Controls.Add(this.button6, 2, 2);
this.tableLayoutPanel2.Controls.Add(this.button4, 2, 3);
this.tableLayoutPanel2.Controls.Add(this.button59, 3, 3);
this.tableLayoutPanel2.Controls.Add(this.button8, 0, 4);
this.tableLayoutPanel2.Controls.Add(this.button14, 1, 4);
this.tableLayoutPanel2.Controls.Add(this.button15, 2, 4);
this.tableLayoutPanel2.Controls.Add(this.button16, 3, 4);
this.tableLayoutPanel2.Controls.Add(this.button17, 0, 5);
this.tableLayoutPanel2.Controls.Add(this.button19, 3, 5);
this.tableLayoutPanel2.Controls.Add(this.btLCyl, 1, 5);
this.tableLayoutPanel2.Controls.Add(this.btRCyl, 2, 5);
this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel2.Location = new System.Drawing.Point(5, 19);
this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(2);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
this.tableLayoutPanel2.RowCount = 6;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66708F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66708F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66708F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66542F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
this.tableLayoutPanel2.Size = new System.Drawing.Size(276, 298);
this.tableLayoutPanel2.TabIndex = 0;
//
// button60
//
this.button60.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.button60.Dock = System.Windows.Forms.DockStyle.Fill;
this.button60.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button60.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button60.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button60.ForeColor = System.Drawing.Color.White;
this.button60.Location = new System.Drawing.Point(4, 151);
this.button60.Margin = new System.Windows.Forms.Padding(4);
this.button60.Name = "button60";
this.button60.Size = new System.Drawing.Size(61, 41);
this.button60.TabIndex = 61;
this.button60.Tag = "0";
this.button60.Text = "LP전진";
this.button60.UseVisualStyleBackColor = false;
this.button60.Click += new System.EventHandler(this.button60_Click);
//
// button57
//
this.button57.BackColor = System.Drawing.Color.Olive;
this.button57.Dock = System.Windows.Forms.DockStyle.Fill;
this.button57.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button57.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button57.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button57.ForeColor = System.Drawing.Color.White;
this.button57.Location = new System.Drawing.Point(4, 102);
this.button57.Margin = new System.Windows.Forms.Padding(4);
this.button57.Name = "button57";
this.button57.Size = new System.Drawing.Size(61, 41);
this.button57.TabIndex = 59;
this.button57.Tag = "2";
this.button57.Text = "LP-AIR";
this.button57.UseVisualStyleBackColor = false;
this.button57.Click += new System.EventHandler(this.button57_Click);
//
// button51
//
this.button51.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(0)))), ((int)(((byte)(64)))));
this.button51.Dock = System.Windows.Forms.DockStyle.Fill;
this.button51.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button51.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button51.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button51.ForeColor = System.Drawing.Color.White;
this.button51.Location = new System.Drawing.Point(4, 53);
this.button51.Margin = new System.Windows.Forms.Padding(4);
this.button51.Name = "button51";
this.button51.Size = new System.Drawing.Size(61, 41);
this.button51.TabIndex = 57;
this.button51.Tag = "1";
this.button51.Text = "LP흡기";
this.button51.UseVisualStyleBackColor = false;
this.button51.Click += new System.EventHandler(this.button51_Click);
//
// button52
//
this.button52.BackColor = System.Drawing.Color.Navy;
this.button52.Dock = System.Windows.Forms.DockStyle.Fill;
this.button52.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button52.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button52.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button52.ForeColor = System.Drawing.Color.White;
this.button52.Location = new System.Drawing.Point(73, 53);
this.button52.Margin = new System.Windows.Forms.Padding(4);
this.button52.Name = "button52";
this.button52.Size = new System.Drawing.Size(61, 41);
this.button52.TabIndex = 57;
this.button52.Tag = "2";
this.button52.Text = "LP배기";
this.button52.UseVisualStyleBackColor = false;
this.button52.Click += new System.EventHandler(this.button51_Click);
//
// button58
//
this.button58.BackColor = System.Drawing.Color.Olive;
this.button58.Dock = System.Windows.Forms.DockStyle.Fill;
this.button58.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button58.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button58.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button58.ForeColor = System.Drawing.Color.White;
this.button58.Location = new System.Drawing.Point(211, 102);
this.button58.Margin = new System.Windows.Forms.Padding(4);
this.button58.Name = "button58";
this.button58.Size = new System.Drawing.Size(61, 41);
this.button58.TabIndex = 59;
this.button58.Tag = "2";
this.button58.Text = "RP-AIR";
this.button58.UseVisualStyleBackColor = false;
this.button58.Click += new System.EventHandler(this.button58_Click);
//
// button41
//
this.button41.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
this.button41.Dock = System.Windows.Forms.DockStyle.Fill;
this.button41.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button41.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button41.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button41.ForeColor = System.Drawing.Color.White;
this.button41.Location = new System.Drawing.Point(4, 4);
this.button41.Margin = new System.Windows.Forms.Padding(4);
this.button41.Name = "button41";
this.button41.Size = new System.Drawing.Size(61, 41);
this.button41.TabIndex = 57;
this.button41.Text = "피커진공";
this.button41.UseVisualStyleBackColor = false;
this.button41.Click += new System.EventHandler(this.button41_Click);
//
// button44
//
this.button44.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
this.tableLayoutPanel2.SetColumnSpan(this.button44, 3);
this.button44.Dock = System.Windows.Forms.DockStyle.Fill;
this.button44.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button44.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button44.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button44.ForeColor = System.Drawing.Color.White;
this.button44.Location = new System.Drawing.Point(72, 3);
this.button44.Name = "button44";
this.button44.Size = new System.Drawing.Size(201, 43);
this.button44.TabIndex = 58;
this.button44.Text = "메인AIR";
this.button44.UseVisualStyleBackColor = false;
this.button44.Click += new System.EventHandler(this.button44_Click);
//
// button3
//
this.button3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
this.button3.Dock = System.Windows.Forms.DockStyle.Fill;
this.button3.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button3.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold);
this.button3.ForeColor = System.Drawing.Color.Gold;
this.button3.Location = new System.Drawing.Point(72, 150);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(63, 43);
this.button3.TabIndex = 58;
this.button3.Text = "프린트";
this.button3.UseVisualStyleBackColor = false;
this.button3.Click += new System.EventHandler(this.button3_Click_1);
//
// button54
//
this.button54.BackColor = System.Drawing.Color.Navy;
this.button54.Dock = System.Windows.Forms.DockStyle.Fill;
this.button54.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button54.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button54.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button54.ForeColor = System.Drawing.Color.White;
this.button54.Location = new System.Drawing.Point(142, 53);
this.button54.Margin = new System.Windows.Forms.Padding(4);
this.button54.Name = "button54";
this.button54.Size = new System.Drawing.Size(61, 41);
this.button54.TabIndex = 57;
this.button54.Tag = "2";
this.button54.Text = "RP배기";
this.button54.UseVisualStyleBackColor = false;
this.button54.Click += new System.EventHandler(this.button53_Click);
//
// button53
//
this.button53.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(0)))), ((int)(((byte)(64)))));
this.button53.Dock = System.Windows.Forms.DockStyle.Fill;
this.button53.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button53.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button53.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button53.ForeColor = System.Drawing.Color.White;
this.button53.Location = new System.Drawing.Point(211, 53);
this.button53.Margin = new System.Windows.Forms.Padding(4);
this.button53.Name = "button53";
this.button53.Size = new System.Drawing.Size(61, 41);
this.button53.TabIndex = 57;
this.button53.Tag = "1";
this.button53.Text = "RP흡기";
this.button53.UseVisualStyleBackColor = false;
this.button53.Click += new System.EventHandler(this.button53_Click);
//
// button5
//
this.button5.BackColor = System.Drawing.Color.Lime;
this.button5.Dock = System.Windows.Forms.DockStyle.Fill;
this.button5.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button5.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button5.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold);
this.button5.ForeColor = System.Drawing.Color.Black;
this.button5.Location = new System.Drawing.Point(72, 101);
this.button5.Name = "button5";
this.button5.Size = new System.Drawing.Size(63, 43);
this.button5.TabIndex = 58;
this.button5.Text = "감지L";
this.button5.UseVisualStyleBackColor = false;
//
// button6
//
this.button6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
this.button6.Dock = System.Windows.Forms.DockStyle.Fill;
this.button6.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button6.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button6.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold);
this.button6.ForeColor = System.Drawing.Color.White;
this.button6.Location = new System.Drawing.Point(141, 101);
this.button6.Name = "button6";
this.button6.Size = new System.Drawing.Size(63, 43);
this.button6.TabIndex = 58;
this.button6.Text = "감지R";
this.button6.UseVisualStyleBackColor = false;
//
// button4
//
this.button4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
this.button4.Dock = System.Windows.Forms.DockStyle.Fill;
this.button4.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button4.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button4.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold);
this.button4.ForeColor = System.Drawing.Color.Gold;
this.button4.Location = new System.Drawing.Point(141, 150);
this.button4.Name = "button4";
this.button4.Size = new System.Drawing.Size(63, 43);
this.button4.TabIndex = 58;
this.button4.Text = "프린트";
this.button4.UseVisualStyleBackColor = false;
this.button4.Click += new System.EventHandler(this.button4_Click_1);
//
// button59
//
this.button59.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.button59.Dock = System.Windows.Forms.DockStyle.Fill;
this.button59.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button59.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button59.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button59.ForeColor = System.Drawing.Color.White;
this.button59.Location = new System.Drawing.Point(211, 151);
this.button59.Margin = new System.Windows.Forms.Padding(4);
this.button59.Name = "button59";
this.button59.Size = new System.Drawing.Size(61, 41);
this.button59.TabIndex = 60;
this.button59.Tag = "0";
this.button59.Text = "RP전진";
this.button59.UseVisualStyleBackColor = false;
this.button59.Click += new System.EventHandler(this.button59_Click);
//
// button8
//
this.button8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.button8.Dock = System.Windows.Forms.DockStyle.Fill;
this.button8.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button8.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button8.Font = new System.Drawing.Font("맑은 고딕", 17F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button8.ForeColor = System.Drawing.Color.Gold;
this.button8.Location = new System.Drawing.Point(4, 200);
this.button8.Margin = new System.Windows.Forms.Padding(4);
this.button8.Name = "button8";
this.button8.Size = new System.Drawing.Size(61, 41);
this.button8.TabIndex = 61;
this.button8.Tag = "0";
this.button8.Text = "Y-";
this.button8.UseVisualStyleBackColor = false;
this.button8.Click += new System.EventHandler(this.button8_Click);
//
// button14
//
this.button14.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.button14.Dock = System.Windows.Forms.DockStyle.Fill;
this.button14.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button14.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button14.Font = new System.Drawing.Font("맑은 고딕", 17F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button14.ForeColor = System.Drawing.Color.Tomato;
this.button14.Location = new System.Drawing.Point(73, 200);
this.button14.Margin = new System.Windows.Forms.Padding(4);
this.button14.Name = "button14";
this.button14.Size = new System.Drawing.Size(61, 41);
this.button14.TabIndex = 61;
this.button14.Tag = "0";
this.button14.Text = "[R]";
this.button14.UseVisualStyleBackColor = false;
this.button14.Click += new System.EventHandler(this.button14_Click);
//
// button15
//
this.button15.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.button15.Dock = System.Windows.Forms.DockStyle.Fill;
this.button15.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button15.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button15.Font = new System.Drawing.Font("맑은 고딕", 17F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button15.ForeColor = System.Drawing.Color.Gold;
this.button15.Location = new System.Drawing.Point(142, 200);
this.button15.Margin = new System.Windows.Forms.Padding(4);
this.button15.Name = "button15";
this.button15.Size = new System.Drawing.Size(61, 41);
this.button15.TabIndex = 61;
this.button15.Tag = "0";
this.button15.Text = "Y-";
this.button15.UseVisualStyleBackColor = false;
this.button15.Click += new System.EventHandler(this.button15_Click_1);
//
// button16
//
this.button16.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.button16.Dock = System.Windows.Forms.DockStyle.Fill;
this.button16.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button16.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button16.Font = new System.Drawing.Font("맑은 고딕", 17F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button16.ForeColor = System.Drawing.Color.Tomato;
this.button16.Location = new System.Drawing.Point(211, 200);
this.button16.Margin = new System.Windows.Forms.Padding(4);
this.button16.Name = "button16";
this.button16.Size = new System.Drawing.Size(61, 41);
this.button16.TabIndex = 61;
this.button16.Tag = "0";
this.button16.Text = "[R]";
this.button16.UseVisualStyleBackColor = false;
this.button16.Click += new System.EventHandler(this.button16_Click_2);
//
// button17
//
this.button17.Dock = System.Windows.Forms.DockStyle.Fill;
this.button17.ForeColor = System.Drawing.Color.Black;
this.button17.Location = new System.Drawing.Point(3, 248);
this.button17.Name = "button17";
this.button17.Size = new System.Drawing.Size(63, 47);
this.button17.TabIndex = 62;
this.button17.Text = "L컨베어";
this.button17.UseVisualStyleBackColor = true;
this.button17.Click += new System.EventHandler(this.button17_Click);
//
// button19
//
this.button19.Dock = System.Windows.Forms.DockStyle.Fill;
this.button19.ForeColor = System.Drawing.Color.Black;
this.button19.Location = new System.Drawing.Point(210, 248);
this.button19.Name = "button19";
this.button19.Size = new System.Drawing.Size(63, 47);
this.button19.TabIndex = 62;
this.button19.Text = "R컨베어";
this.button19.UseVisualStyleBackColor = true;
this.button19.Click += new System.EventHandler(this.button19_Click);
//
// panel2
//
this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
this.panel2.Location = new System.Drawing.Point(5, 182);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(286, 7);
this.panel2.TabIndex = 77;
//
// groupBox3
//
this.groupBox3.Controls.Add(this.tableLayoutPanel1);
this.groupBox3.Dock = System.Windows.Forms.DockStyle.Top;
this.groupBox3.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.groupBox3.ForeColor = System.Drawing.Color.WhiteSmoke;
this.groupBox3.Location = new System.Drawing.Point(5, 5);
this.groupBox3.Margin = new System.Windows.Forms.Padding(2);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Padding = new System.Windows.Forms.Padding(5, 3, 5, 5);
this.groupBox3.Size = new System.Drawing.Size(286, 177);
this.groupBox3.TabIndex = 76;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "PORT Z-MOTOR";
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 4;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel1.Controls.Add(this.button12, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.button10, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.button38, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.button40, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.button13, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.button24, 1, 1);
this.tableLayoutPanel1.Controls.Add(this.button1, 2, 0);
this.tableLayoutPanel1.Controls.Add(this.button2, 2, 1);
this.tableLayoutPanel1.Controls.Add(this.button7, 2, 2);
this.tableLayoutPanel1.Controls.Add(this.button9, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.button11, 1, 3);
this.tableLayoutPanel1.Controls.Add(this.button18, 2, 3);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(5, 19);
this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(2);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 4;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.00062F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.00062F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.00062F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 24.99813F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(276, 153);
this.tableLayoutPanel1.TabIndex = 0;
//
// button12
//
this.button12.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
this.button12.Dock = System.Windows.Forms.DockStyle.Fill;
this.button12.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button12.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button12.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button12.ForeColor = System.Drawing.Color.White;
this.button12.Location = new System.Drawing.Point(73, 80);
this.button12.Margin = new System.Windows.Forms.Padding(4);
this.button12.Name = "button12";
this.button12.Size = new System.Drawing.Size(61, 30);
this.button12.TabIndex = 61;
this.button12.Tag = "1";
this.button12.Text = "▼";
this.button12.UseVisualStyleBackColor = false;
this.button12.Click += new System.EventHandler(this.button10_Click_1);
//
// button10
//
this.button10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
this.button10.Dock = System.Windows.Forms.DockStyle.Fill;
this.button10.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button10.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button10.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button10.ForeColor = System.Drawing.Color.White;
this.button10.Location = new System.Drawing.Point(4, 80);
this.button10.Margin = new System.Windows.Forms.Padding(4);
this.button10.Name = "button10";
this.button10.Size = new System.Drawing.Size(61, 30);
this.button10.TabIndex = 60;
this.button10.Tag = "0";
this.button10.Text = "▼";
this.button10.UseVisualStyleBackColor = false;
this.button10.Click += new System.EventHandler(this.button10_Click_1);
//
// button38
//
this.button38.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
this.button38.Dock = System.Windows.Forms.DockStyle.Fill;
this.button38.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button38.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button38.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button38.ForeColor = System.Drawing.Color.White;
this.button38.Location = new System.Drawing.Point(73, 4);
this.button38.Margin = new System.Windows.Forms.Padding(4);
this.button38.Name = "button38";
this.button38.Size = new System.Drawing.Size(61, 30);
this.button38.TabIndex = 57;
this.button38.Tag = "1";
this.button38.Text = "▲";
this.button38.UseVisualStyleBackColor = false;
this.button38.Click += new System.EventHandler(this.button40_Click);
//
// button40
//
this.button40.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
this.button40.Dock = System.Windows.Forms.DockStyle.Fill;
this.button40.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button40.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button40.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button40.ForeColor = System.Drawing.Color.White;
this.button40.Location = new System.Drawing.Point(4, 4);
this.button40.Margin = new System.Windows.Forms.Padding(4);
this.button40.Name = "button40";
this.button40.Size = new System.Drawing.Size(61, 30);
this.button40.TabIndex = 55;
this.button40.Tag = "0";
this.button40.Text = "▲";
this.button40.UseVisualStyleBackColor = false;
this.button40.Click += new System.EventHandler(this.button40_Click);
//
// button13
//
this.button13.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
this.button13.Dock = System.Windows.Forms.DockStyle.Fill;
this.button13.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button13.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button13.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button13.ForeColor = System.Drawing.Color.White;
this.button13.Location = new System.Drawing.Point(4, 42);
this.button13.Margin = new System.Windows.Forms.Padding(4);
this.button13.Name = "button13";
this.button13.Size = new System.Drawing.Size(61, 30);
this.button13.TabIndex = 62;
this.button13.Tag = "0";
this.button13.Text = "STOP";
this.button13.UseVisualStyleBackColor = false;
this.button13.Click += new System.EventHandler(this.button13_Click_2);
//
// button24
//
this.button24.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
this.button24.Dock = System.Windows.Forms.DockStyle.Fill;
this.button24.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button24.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button24.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button24.ForeColor = System.Drawing.Color.White;
this.button24.Location = new System.Drawing.Point(73, 42);
this.button24.Margin = new System.Windows.Forms.Padding(4);
this.button24.Name = "button24";
this.button24.Size = new System.Drawing.Size(61, 30);
this.button24.TabIndex = 62;
this.button24.Tag = "1";
this.button24.Text = "STOP";
this.button24.UseVisualStyleBackColor = false;
this.button24.Click += new System.EventHandler(this.button13_Click_2);
//
// button1
//
this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
this.button1.Dock = System.Windows.Forms.DockStyle.Fill;
this.button1.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button1.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button1.ForeColor = System.Drawing.Color.White;
this.button1.Location = new System.Drawing.Point(142, 4);
this.button1.Margin = new System.Windows.Forms.Padding(4);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(61, 30);
this.button1.TabIndex = 57;
this.button1.Tag = "2";
this.button1.Text = "▲";
this.button1.UseVisualStyleBackColor = false;
this.button1.Click += new System.EventHandler(this.button40_Click);
//
// button2
//
this.button2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
this.button2.Dock = System.Windows.Forms.DockStyle.Fill;
this.button2.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button2.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button2.ForeColor = System.Drawing.Color.White;
this.button2.Location = new System.Drawing.Point(142, 42);
this.button2.Margin = new System.Windows.Forms.Padding(4);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(61, 30);
this.button2.TabIndex = 62;
this.button2.Tag = "2";
this.button2.Text = "STOP";
this.button2.UseVisualStyleBackColor = false;
this.button2.Click += new System.EventHandler(this.button13_Click_2);
//
// button7
//
this.button7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
this.button7.Dock = System.Windows.Forms.DockStyle.Fill;
this.button7.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button7.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button7.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button7.ForeColor = System.Drawing.Color.White;
this.button7.Location = new System.Drawing.Point(142, 80);
this.button7.Margin = new System.Windows.Forms.Padding(4);
this.button7.Name = "button7";
this.button7.Size = new System.Drawing.Size(61, 30);
this.button7.TabIndex = 60;
this.button7.Tag = "2";
this.button7.Text = "▼";
this.button7.UseVisualStyleBackColor = false;
this.button7.Click += new System.EventHandler(this.button10_Click_1);
//
// button9
//
this.button9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
this.button9.Dock = System.Windows.Forms.DockStyle.Fill;
this.button9.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button9.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button9.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button9.ForeColor = System.Drawing.Color.White;
this.button9.Location = new System.Drawing.Point(4, 118);
this.button9.Margin = new System.Windows.Forms.Padding(4);
this.button9.Name = "button9";
this.button9.Size = new System.Drawing.Size(61, 31);
this.button9.TabIndex = 60;
this.button9.Tag = "0";
this.button9.Text = "MAG";
this.button9.UseVisualStyleBackColor = false;
this.button9.Click += new System.EventHandler(this.button9_Click);
//
// button11
//
this.button11.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
this.button11.Dock = System.Windows.Forms.DockStyle.Fill;
this.button11.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button11.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button11.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button11.ForeColor = System.Drawing.Color.White;
this.button11.Location = new System.Drawing.Point(73, 118);
this.button11.Margin = new System.Windows.Forms.Padding(4);
this.button11.Name = "button11";
this.button11.Size = new System.Drawing.Size(61, 31);
this.button11.TabIndex = 60;
this.button11.Tag = "1";
this.button11.Text = "MAG";
this.button11.UseVisualStyleBackColor = false;
this.button11.Click += new System.EventHandler(this.button9_Click);
//
// button18
//
this.button18.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
this.button18.Dock = System.Windows.Forms.DockStyle.Fill;
this.button18.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.button18.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button18.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.button18.ForeColor = System.Drawing.Color.White;
this.button18.Location = new System.Drawing.Point(142, 118);
this.button18.Margin = new System.Windows.Forms.Padding(4);
this.button18.Name = "button18";
this.button18.Size = new System.Drawing.Size(61, 31);
this.button18.TabIndex = 60;
this.button18.Tag = "2";
this.button18.Text = "MAG";
this.button18.UseVisualStyleBackColor = false;
this.button18.Click += new System.EventHandler(this.button9_Click);
//
// btLCyl
//
this.btLCyl.Dock = System.Windows.Forms.DockStyle.Fill;
this.btLCyl.ForeColor = System.Drawing.Color.Black;
this.btLCyl.Location = new System.Drawing.Point(72, 248);
this.btLCyl.Name = "btLCyl";
this.btLCyl.Size = new System.Drawing.Size(63, 47);
this.btLCyl.TabIndex = 63;
this.btLCyl.Text = "L실린더";
this.btLCyl.UseVisualStyleBackColor = true;
this.btLCyl.Click += new System.EventHandler(this.button20_Click);
//
// btRCyl
//
this.btRCyl.Dock = System.Windows.Forms.DockStyle.Fill;
this.btRCyl.ForeColor = System.Drawing.Color.Black;
this.btRCyl.Location = new System.Drawing.Point(141, 248);
this.btRCyl.Name = "btRCyl";
this.btRCyl.Size = new System.Drawing.Size(63, 47);
this.btRCyl.TabIndex = 63;
this.btRCyl.Text = "R실린더";
this.btRCyl.UseVisualStyleBackColor = true;
this.btRCyl.Click += new System.EventHandler(this.button21_Click);
//
// Quick_Control
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(15)))), ((int)(((byte)(15)))), ((int)(((byte)(15)))));
this.ClientSize = new System.Drawing.Size(300, 542);
this.Controls.Add(this.panBG);
this.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(4);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "Quick_Control";
this.Padding = new System.Windows.Forms.Padding(1);
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "수동조작";
this.TopMost = true;
this.Load += new System.EventHandler(this.@__LoaD);
this.panBG.ResumeLayout(false);
this.groupBox1.ResumeLayout(false);
this.tableLayoutPanel2.ResumeLayout(false);
this.groupBox3.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Timer timer1;
private System.Windows.Forms.Panel panel1;
public System.Windows.Forms.Panel panBG;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.Button button38;
private System.Windows.Forms.Button button40;
public System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.Button button12;
private System.Windows.Forms.Button button10;
private System.Windows.Forms.Button button13;
private System.Windows.Forms.Button button24;
private System.Windows.Forms.Panel panel2;
public System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.Button button41;
private System.Windows.Forms.Button button44;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button7;
private System.Windows.Forms.Button button9;
private System.Windows.Forms.Button button11;
private System.Windows.Forms.Button button18;
private System.Windows.Forms.Button button51;
private System.Windows.Forms.Button button52;
private System.Windows.Forms.Button button53;
private System.Windows.Forms.Button button54;
private System.Windows.Forms.Button button57;
private System.Windows.Forms.Button button58;
private System.Windows.Forms.Button button59;
private System.Windows.Forms.Button button60;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.Button button4;
private System.Windows.Forms.Button button5;
private System.Windows.Forms.Button button6;
private System.Windows.Forms.Button button8;
private System.Windows.Forms.Button button14;
private System.Windows.Forms.Button button15;
private System.Windows.Forms.Button button16;
private System.Windows.Forms.Button button17;
private System.Windows.Forms.Button button19;
private System.Windows.Forms.Button btLCyl;
private System.Windows.Forms.Button btRCyl;
}
}

View File

@@ -0,0 +1,452 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AR;
namespace Project.Dialog
{
public partial class Quick_Control : Form
{
public Quick_Control()
{
InitializeComponent();
this.FormClosing += __Closing;
//this.lbTitle.MouseMove += LbTitle_MouseMove;
//this.lbTitle.MouseUp += LbTitle_MouseUp;
//this.lbTitle.MouseDown += LbTitle_MouseDown;
}
void __Closing(object sender, FormClosingEventArgs e)
{
timer1.Stop();
}
private void __LoaD(object sender, EventArgs e)
{
timer1.Start();
//button31.Text = ((eAxis)0).ToString();
//button32.Text = ((eAxis)1).ToString();
//button33.Text = ((eAxis)2).ToString();
}
#region "Mouse Form Move"
private Boolean fMove = false;
private Point MDownPos;
private void LbTitle_MouseMove(object sender, MouseEventArgs e)
{
if (fMove)
{
Point offset = new Point(e.X - MDownPos.X, e.Y - MDownPos.Y);
this.Left += offset.X;
this.Top += offset.Y;
offset = new Point(0, 0);
}
}
private void LbTitle_MouseUp(object sender, MouseEventArgs e)
{
fMove = false;
}
private void LbTitle_MouseDown(object sender, MouseEventArgs e)
{
MDownPos = new Point(e.X, e.Y);
fMove = true;
}
#endregion
private void button1_Click(object sender, EventArgs e)
{
if (PUB.mot.IsHomeSet((int)eAxis.Z_THETA) == false)
{
UTIL.MsgE("홈 검색이 완료되지 않았으므로 이동할 수 없습니다");
return;
}
var speed = 50.0;
if (PUB.Result != null &&
PUB.Result.mModel != null &&
PUB.Result.mModel.Title != "")
speed = 0;// Pub.Result.mModel.XSpeed;
MOT.Move(eAxis.Z_THETA, 0, speed);
}
private void timer1_Tick(object sender, EventArgs e)
{
//감지센서 상태 210208
button5.BackColor = DIO.GetIOInput(eDIName.L_PICK_VAC) ? Color.Lime : Color.FromArgb(70, 70, 70);
button5.ForeColor = DIO.GetIOInput(eDIName.L_PICK_VAC) ? Color.Black : Color.White;
button6.BackColor = DIO.GetIOInput(eDIName.R_PICK_VAC) ? Color.Lime : Color.FromArgb(70, 70, 70);
button6.ForeColor = DIO.GetIOInput(eDIName.R_PICK_VAC) ? Color.Black : Color.White;
btLCyl.BackColor = DIO.GetIOOutput(eDOName.L_CYLDN) ? Color.Black : Color.White;
btRCyl.BackColor = DIO.GetIOOutput(eDOName.R_CYLDN) ? Color.Black : Color.White;
//메세지업데이트 230830
var lcylup = DIO.GetIOInput(eDIName.L_CYLUP);
var lcyldn = DIO.GetIOInput(eDIName.L_CYLDN);
var rcylup = DIO.GetIOInput(eDIName.R_CYLUP);
var rcyldn = DIO.GetIOInput(eDIName.R_CYLDN);
btLCyl.Text = "L실린더\n" + (lcylup ? "(UP)" : (lcyldn ? "(DN)" : "--"));
btRCyl.Text = "R실린더\n" + (rcylup ? "(UP)" : (rcyldn ? "(DN)" : "--"));
var Lconv = DIO.GetIOOutput(eDOName.LEFT_CONV);
var Rconv = DIO.GetIOOutput(eDOName.RIGHT_CONV);
button17.Text = "L컨베어\n" + (Lconv ? "(RUN)" : "(STOP)");
button19.Text = "R컨베어\n" + (Rconv ? "(RUN)" : "(STOP)");
button17.BackColor = Lconv ? Color.Lime : Color.White;
button19.BackColor = Rconv ? Color.Lime : Color.White;
}
private void button20_Click_1(object sender, EventArgs e)
{
//button zero
var but = sender as Button;
var motidx = short.Parse(but.Tag.ToString());
var axis = (eAxis)motidx;
//전체 이동경로상 오류가 있으면 처리 하지 않는다.
var ermsg = new System.Text.StringBuilder();
if (PUB.mot.IsHomeSet((int)axis) == false)
{
ermsg.AppendLine("해당 축은 홈 검색이 완료되지 않았습니다");
}
if (ermsg.Length > 0)
{
UTIL.MsgE("이동을 할 수 없습니다\n" + ermsg.ToString());
return;
}
var dlg = UTIL.MsgQ(string.Format("모션 축 ({0})의 위치를 0으로 이동하시겠습까?\n" +
"위치 0은 일반적으로 홈 위치 입니다", axis));
if (dlg != DialogResult.Yes) return;
PUB.log.Add("user:move to zero axis=" + axis.ToString());
PUB.mot.Move(motidx, 0);
}
private void button16_Click_1(object sender, EventArgs e)
{
//button stop
var but = sender as Button;
var motidx = short.Parse(but.Tag.ToString());
var axis = (eAxis)motidx;
//var dlg = Util.MsgQ("모션 {0}({1}) 을 위치 '0'으로 이동 할까요?\n" +
// "경로 상 충돌가능성을 확인 한 후 실행하세요");
//if (dlg != System.Windows.Forms.DialogResult.Yes) return;
PUB.log.Add("user:motion stop axis=" + axis.ToString());
PUB.mot.MoveStop("user stop", motidx);
}
private void button3_Click(object sender, EventArgs e)
{
//ccw
var but = sender as Button;
var motidx = short.Parse(but.Tag.ToString());
var axis = (eAxis)motidx;
PUB.log.Add("user:motion move -3.0 axis=" + axis.ToString());
PUB.mot.Move(motidx, -3.0, true);
}
private void button4_Click(object sender, EventArgs e)
{
//cw
var but = sender as Button;
var motidx = short.Parse(but.Tag.ToString());
var axis = (eAxis)motidx;
PUB.log.Add("user:motion move +3.0 axis=" + axis.ToString());
PUB.mot.Move(motidx, 3.0, true);
}
private void button40_Click(object sender, EventArgs e)
{
var but = sender as Button;
var butindex = int.Parse(but.Tag.ToString());
DIO.SetPortMotor(butindex, eMotDir.CW, true, "UC");
}
private void tbClose_Click_1(object sender, EventArgs e)
{
this.Close();
}
private void button10_Click_1(object sender, EventArgs e)
{
var but = sender as Button;
var butindex = int.Parse(but.Tag.ToString());
DIO.SetPortMotor(butindex, eMotDir.CCW, true, "UC");
}
private void button13_Click_2(object sender, EventArgs e)
{
var but = sender as Button;
var butindex = int.Parse(but.Tag.ToString());
DIO.SetPortMotor(butindex, eMotDir.CCW, false, "UC");
}
private void button41_Click(object sender, EventArgs e)
{
//front
var cur = DIO.GetIOOutput(eDOName.PICK_VAC1);
DIO.SetPickerVac(!cur, true);
}
private void button39_Click(object sender, EventArgs e)
{
}
private void button44_Click(object sender, EventArgs e)
{
var cur = DIO.GetIOOutput(eDOName.SOL_AIR);
DIO.SetAIR(!cur);
}
private void button9_Click(object sender, EventArgs e)
{
var but = sender as Button;
var butindex = int.Parse(but.Tag.ToString());
Boolean current = false;
if (butindex == 0) current = DIO.GetIOOutput(eDOName.CART_MAG0);
else if (butindex == 1) current = DIO.GetIOOutput(eDOName.CART_MAG1);
else current = DIO.GetIOOutput(eDOName.CART_MAG2);
DIO.SetPortMagnet(butindex, !current);
}
private void button51_Click(object sender, EventArgs e)
{
var but = sender as Button;
var tagstr = but.Tag.ToString();
if (tagstr == "1")
{
if (DIO.GetIOOutput(eDOName.PRINTL_VACI) == true)
DIO.SetPrintLVac(ePrintVac.off, true);
else
DIO.SetPrintLVac(ePrintVac.inhalation, true);
}
else if (tagstr == "2")
if (DIO.GetIOOutput(eDOName.PRINTL_VACO) == true)
DIO.SetPrintLVac(ePrintVac.off, true);
else
DIO.SetPrintLVac(ePrintVac.exhaust, true);
else
DIO.SetPrintLVac(ePrintVac.off, true);
}
private void button53_Click(object sender, EventArgs e)
{
var but = sender as Button;
var tagstr = but.Tag.ToString();
if (tagstr == "1")
{
if (DIO.GetIOOutput(eDOName.PRINTR_VACI) == true)
DIO.SetPrintRVac(ePrintVac.off, true);
else
DIO.SetPrintRVac(ePrintVac.inhalation, true);
}
else if (tagstr == "2")
if (DIO.GetIOOutput(eDOName.PRINTR_VACO) == true)
DIO.SetPrintRVac(ePrintVac.off, true);
else
DIO.SetPrintRVac(ePrintVac.exhaust, true);
else
DIO.SetPrintRVac(ePrintVac.off, true);
}
private void button57_Click(object sender, EventArgs e)
{
//바닥바람
var curvalu = DIO.GetIOOutput(eDOName.PRINTL_AIRON);
DIO.SetOutput(eDOName.PRINTL_AIRON, !curvalu);
}
private void button58_Click(object sender, EventArgs e)
{
//바닥바람
var curvalu = DIO.GetIOOutput(eDOName.PRINTR_AIRON);
DIO.SetOutput(eDOName.PRINTR_AIRON, !curvalu);
}
private void button60_Click(object sender, EventArgs e)
{
var cur = DIO.GetIOOutput(eDOName.PRINTL_FWD);
if (cur == false)
{
var dlg = UTIL.MsgQ("프린터(좌) 피커를 전진할까요?"); //210209
if (dlg != DialogResult.Yes) return;
//준비위치에서는 전진하면 충돌한다
var ReadyPos = MOT.GetLMPos(eLMLoc.READY);
if (MOT.getPositionMatch(ReadyPos))
{
if (UTIL.MsgQ("현재 위치에서는 충돌위험이 있습니다. 그래도 진행 할까요?") != DialogResult.Yes)
return;
}
}
DIO.SetOutput(eDOName.PRINTL_FWD, !cur);
}
private void button59_Click(object sender, EventArgs e)
{
var cur = DIO.GetIOOutput(eDOName.PRINTR_FWD);
if (cur == false)
{
var dlg = UTIL.MsgQ("프린터(우) 피커를 전진할까요?");
if (dlg != DialogResult.Yes) return;
//준비위치에서는 전진하면 충돌한다
var ReadyPos = MOT.GetRMPos(eRMLoc.READY);
if (MOT.getPositionMatch(ReadyPos))
{
if (UTIL.MsgQ("현재 위치에서는 충돌위험이 있습니다. 그래도 진행 할까요?") != DialogResult.Yes)
return;
}
}
DIO.SetOutput(eDOName.PRINTR_FWD, !cur);
}
private void button3_Click_1(object sender, EventArgs e)
{
PUB.PrinterL.TestPrint(AR.SETTING.Data.DrawOutbox, "ATK4EE1", "");
var zpl = PUB.PrinterL.LastPrintZPL;
PUB.log.Add("임시프린트L:" + PUB.PrinterL.LastPrintZPL);
}
private void button4_Click_1(object sender, EventArgs e)
{
PUB.PrinterR.TestPrint(AR.SETTING.Data.DrawOutbox, "ATK4EE1", "");
var zpl = PUB.PrinterR.LastPrintZPL;
PUB.log.Add("임시프린트R:" + PUB.PrinterR.LastPrintZPL);
}
private void button15_Click(object sender, EventArgs e)
{
//왼쪽검증취소
if (PUB.flag.get(eVarBool.FG_PRC_VISIONL) == false) return;
var dlg = UTIL.MsgQ("LEFT-QR코드 검증을 취소할까요?");
if (dlg != DialogResult.Yes) return;
PUB.flag.set(eVarBool.FG_PRC_VISIONL, false, "CANCEL");
PUB.flag.set(eVarBool.FG_PORTL_ITEMON, false, "CANCEL");
PUB.flag.set(eVarBool.FG_END_VISIONL, false, "CANCEL");
/// PUB.sm.seq.Clear(eSMStep.RUN_VISION0);
//PUB.sm.seq.UpdateTime(eSMStep.RUN_COM_VS0);
PUB.log.Add(string.Format("LEFT-QR검증({0}) 취소 JGUID={1}", "L", PUB.Result.ItemDataL.guid));
}
private void button16_Click(object sender, EventArgs e)
{
if (PUB.flag.get(eVarBool.FG_PRC_VISIONR) == false) return;
var dlg = UTIL.MsgQ("RIGHT-QR코드 검증을 취소할까요?");
if (dlg != DialogResult.Yes) return;
PUB.flag.set(eVarBool.FG_PRC_VISIONR, false, "CANCEL");
PUB.flag.set(eVarBool.FG_PORTR_ITEMON, false, "CANCEL");
PUB.flag.set(eVarBool.FG_END_VISIONR, false, "CANCEL");
//PUB.sm.seq.Clear(eSMStep.RUN_VISION2);
//PUB.sm.seq.UpdateTime(eSMStep.RUN_COM_VS2);
PUB.log.Add(string.Format("RIGHT-QR검증({0}) 취소 JGUID={1}", "R", PUB.Result.ItemDataR.guid));
}
private void button8_Click(object sender, EventArgs e)
{
//왼쪽 -5mm
var pos = MOT.GetLMPos(eLMLoc.READY);
var vel = AR.SETTING.Data.MoveYForPaperVaccumeVel;
var acc = AR.SETTING.Data.MoveYForPaperVaccumeAcc;
MOT.Move(eAxis.PL_MOVE, pos.Position + AR.SETTING.Data.MoveYForPaperVaccumeValue, vel, acc, false, false, false);
}
private void button14_Click(object sender, EventArgs e)
{
//왼쪽 +5mm
var pos = MOT.GetLMPos(eLMLoc.READY);
MOT.Move(eAxis.PL_MOVE, pos.Position, 50, 200, false, false, false);
}
private void button15_Click_1(object sender, EventArgs e)
{
//오른쪽 -5mm
var pos = MOT.GetRMPos(eRMLoc.READY);
var vel = AR.SETTING.Data.MoveYForPaperVaccumeVel;
var acc = AR.SETTING.Data.MoveYForPaperVaccumeAcc;
MOT.Move(eAxis.PR_MOVE, pos.Position + AR.SETTING.Data.MoveYForPaperVaccumeValue, vel, acc, false, false, false);
}
private void button16_Click_2(object sender, EventArgs e)
{
//오른쪽 +5mm
var pos = MOT.GetRMPos(eRMLoc.READY);
MOT.Move(eAxis.PR_MOVE, pos.Position, 50, 200, false, false, false);
}
private void button17_Click(object sender, EventArgs e)
{
var cur = DIO.GetIOOutput(eDOName.LEFT_CONV);
DIO.SetOutput(eDOName.LEFT_CONV, !cur);
}
private void button19_Click(object sender, EventArgs e)
{
var cur = DIO.GetIOOutput(eDOName.RIGHT_CONV);
DIO.SetOutput(eDOName.RIGHT_CONV, !cur);
}
private void button20_Click(object sender, EventArgs e)
{
var cur = DIO.GetIOOutput(eDOName.L_CYLDN);
if (cur == false)
{
//내려도되는지 검사해야한다.
if(PUB.mot.IsHomeSet((int)eAxis.PL_MOVE))
{
var pos = MOT.GetLMPos(eLMLoc.READY);
if(MOT.getPositionMatch(pos))
{
PUB.log.AddE($"대기위치이므로 실린더(L)를 내릴 수 없습니다");
}
}
}
DIO.SetOutput(eDOName.L_CYLDN, !cur);
}
private void button21_Click(object sender, EventArgs e)
{
var cur = DIO.GetIOOutput(eDOName.R_CYLDN);
if (cur == false)
{
//내려도되는지 검사해야한다.
if (PUB.mot.IsHomeSet((int)eAxis.PR_MOVE))
{
var pos = MOT.GetRMPos(eRMLoc.READY);
if (MOT.getPositionMatch(pos))
{
PUB.log.AddE($"대기위치이므로 실린더(R)를 내릴 수 없습니다");
}
}
}
DIO.SetOutput(eDOName.R_CYLDN, !cur);
}
}
}

View File

@@ -0,0 +1,380 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAMAMDAAAAEAIACoJQAANgAAACAgAAABACAAqBAAAN4lAAAQEAAAAQAgAGgEAACGNgAAKAAAADAA
AABgAAAAAQAgAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgaZsA5C1
fwOTuIIDkbaAA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3
gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3
gQOSt4EDkreBA5G2gAOTuIIDkLV/A4GmbAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAfaJmBAAAAAB6n2IdfaJmkoescoeIrnSDh61zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIit
c4SIrXOEiK1zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIit
c4SIrXOEiK1zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIetc4SIrnSDh6xyh32iZpJ6n2IdAAAAAH2i
ZgQAAAAAAAAAAAAAAAAAAAAAiKx0BwAAAACApWk1ia52/6DElP+kyJn9osaW/qLGl/+ixpf/osaX/6LG
l/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LG
l/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LGlv6kyJn9oMSU/4mu
dv+ApWk1AAAAAIisdAcAAAAAAAAAAAAAAAAAAAAAl7uIBgAAAACIrXQrmr6M47/ivf3E58P8weS/+sLk
wPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvB5MD7wuTA+8Lk
wPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8Hk
v/rE58P8v+K9/Zq+jOOIrXQrAAAAAJe7iAYAAAAAAAAAAAAAAAAAAAAAlLiEBgAAAACHq3Itl7uH67nc
tf++4bz+u964/bzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzf
uf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzf
uf6837n+vN+5/rveuP2+4bz+udy1/5e7h+uHq3ItAAAAAJS4hAYAAAAAAAAAAAAAAAAAAAAAlLiEBgAA
AACHq3Isl7uI67rdtv+/4r3/vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzf
uf694Lr+vN+5/r3guv694Lr+vN+5/rzfuf694Lr+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzf
uf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJS4hAYAAAAAAAAAAAAA
AAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+94Lr/veC6/73g
uv+837n/veC6/73guv+73rf/weO//7ndtf+z163/weTA/7zfuf+837n/veC6/7zfuf+94Lr/veC6/73g
uv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5
hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73g
uv+94Lr/veC6/7zfuf+94Lr/vN+5/7veuP/C5MH/stet/6bHm/+oxpz/qc6h/7/ivf++4bz/u964/73g
uv+837n/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7
iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3g
uv+94Lr/veC6/73guv+94Lr/vN+5/73guv+837n/vd+5/8Djvv+02bD/p8ic/8LTt//R3cn/q8ef/67R
p/+94bv/v+K9/7veuP+94Lr/vN+5/73guv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/7zf
uf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rd
tv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+837n/veC6/7zfuf+94Lr/vuG8/7fasv+mx5v/xte8//b4
9P/9/f3/3ObW/6zHoP+u0qf/veG7/77hvP+837n/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/73g
uv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAA
AACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+94Lr/vN+5/73guv++4bz/uNu0/6XH
mv/I2b7/9Pfy/////////////f39/9zm1v+tyKD/rtGm/7/ivf+94Lr/vN+5/7zfuf+94Lr/veC6/73g
uv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAA
AAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/7zfuf+94Lr/u964/8Hj
v/+22bH/o8SX/83exv/2+fX///////39/P/+/f3///////7+/f/h69z/rsmh/6nNn//C5cH/vN+4/7zf
uf+94Lr/vN+5/73guv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5
hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73g
uv+837j/wuTA/7LXrf+nx5z/zNvE//b49P//////+/v6/8bWvP+uxaH/7vLr//7+/v/+////4Oja/7LK
pv+ozJ//wuXB/73guv+837n/veC6/7zfuf+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7
iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3g
uv+94Lr/vN+5/7zfuf++4Lv/t9uz/6rLoP/C1Lj//Pz7///////4+ff/zNvF/6fInP+kyJr/uM6t/+zw
6P/+/v7///7//+Do2v+yy6f/qc2h/7/ivf++4bz/u964/73guv+837n/veC6/73guv+94Lr/veC6/7zf
uf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rd
tv+/4r3/vN+5/r3guv+94Lr/vN+5/7zfuf++4Lv/t9uz/6rKn//C07j//v7+//z8+//N28T/qMec/7ba
sv/B47//p8qd/7nOrv/q8Of///////7+/v/g6dv/rcih/63Rpf+94bv/v+K9/7veuP+94Lr/vN+5/73g
uv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAA
AACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+73rj/wuXB/7HVq/+pyJ7/z97I/9Pg
zf+ryZ//stas/8LkwP+94Lr/vuG8/6PGmP+90rT/6/Dn///////8/fv/3+rb/6/Ko/+u0ab/vOC5/7/h
vP+837n/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAA
AAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/7zfuf+94Lr/u964/7/j
vf+53LX/o8SY/6PFmP+53LX/wOO+/7veuP+837n/veC6/8Djvv+lyZv/uc+v/+rv5////////f79/+bs
4f+tx6H/rNCl/8Djvv+837n/vN+5/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5
hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73g
uv+94Lr/vN+5/73guv+84Lr/ut22/7rdtv+84Lr/veC6/7zfuf+837n/veC6/73guv+/4rz/p8ue/7bO
q//r8ej///////7+/v/l7OH/ssun/6jNoP/B47//vN+5/7zfuf+94Lr/veC6/7zfuf6/4r3/ut22/5e7
iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlLiEBgAAAACHq3Itl7uI67rdtv+/4r3/vN+5/r3g
uv+94Lr/veC6/73guv+837n/veC6/7zfuf+94Lr/vuG8/77hvP+94Lr/vN+5/73guv+94Lr/vN+5/7zf
uf+/4bz/vOC5/6jLnv+zy6j/7/Ps///////09vL/tcup/6PImf/C5MD/vN+5/7zfuf+94Lr/veC6/7zf
uf6/4r3/ut22/5e7iOuHq3ItAAAAAJS4hAYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3MsmLuI57rd
tv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+94Lr/vN+5/73guv+837n/vN+5/7zfuf+837n/veC6/7zf
uf+837n/veC6/73guv+73rj/weO//7ndtf+qzKH/uc6t/9bhzv/A07b/sM+n/7fbs/++4Lv/vN+5/7zf
uf+94Lr/veC6/7zfuf6/4r3/ut22/5i7iOeHq3MsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAk7eDBgAA
AACGqnEwlbmG9rrdtv+/4r3+vN+5/r3guv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/73g
uv+94Lr/veC6/73guv+94Lr/veC6/7zfuf+94Lr/u963/8Djvv+94Lr/qMqe/6vHnv+nyJv/ttqy/8Hk
v/+83rj/veC6/73guv+94Lr/veC6/7zfuf6/4r3+ut22/5W5hvaGqnEwAAAAAJO3gwYAAAAAAAAAAAAA
AAAAAAAAkraCBwAAAACFqnI1lLiF/7nctf+/4r39vN+4/r3guv+94Lr/veC6/73guv+94Lr/veC6/73g
uv+94Lr/veC6/73guv+837n/veC6/7zfuf+837n/vN+5/7zfuf+837n/veC6/7veuP++4Lv/wOK+/7HV
q/+94Lr/v+K9/7veuP+94Lr/vN+5/73guv+94Lr/veC6/7zfuP6/4r39udy1/5S4hf+FqnI1AAAAAJK2
ggcAAAAAAAAAAAAAAAAAAAAAlLmFBwAAAACIrXU0lruI/7ndtv+/4r39vN+5/r3guv+94Lr/veC6/73g
uv+94Lr/veC6/73guv+94Lr/veC6/73guv+84Lr/vN+5/73guv+94Lr/veC6/73guv+94Lr/veC6/73g
uv+837n/vN+5/73gu/+837n/vN+5/73guv+837n/veC6/73guv+94Lr/veC6/7zfuf6/4r39ud22/5a7
iP+IrXU0AAAAAJS5hQcAAAAAAAAAAAAAAAAAAAAAlLmFBwAAAACHrXU0lruI/7ndtv+/4r39vN+5/r3g
uv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Ln/veC6/73guv+837n/vN+5/7zfuf+94Lv/vuG8/77h
vP+94Lv/vN+5/7zfuf+837n/veC6/73guv+94Lr/vN+5/73guv+94Lr/veC6/73guv+94Lr/veC6/7zf
uf6/4r39ud22/5a7iP+HrXU0AAAAAJS5hQcAAAAAAAAAAAAAAAAAAAAAk7iEBwAAAACHrXU0lruH/7nd
tv+/4r39vN+5/r3guv+94Lr/veC6/73guv+94Lr/veC6/7zfuf+94Lr/vN+5/7zfuf+837n/weS//7zf
uf+sz6P/oMWW/6DFlv+sz6T/vN+5/8Hkv/+837n/vN+5/7zfuf+94Lr/veC6/7zfuf+94Lr/veC6/73g
uv+94Lr/veC6/7zfuf6/4r39ud22/5a7h/+HrXU0AAAAAJO4hAcAAAAAAAAAAAAAAAAAAAAAlLmFBwAA
AACHrXU0lruH/7ndtv+/4r39vN+5/r3guv+94Lr/veC6/73guv+94Lr/veC6/73guv+837n/veC6/77h
u/+63bf/qMyg/5vBkP+awpD/mMGP/5fBj/+awpH/m8GQ/6jMn/+63rf/vuG7/73guv+837n/veC6/73g
uv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r39ud22/5a7h/+HrXU0AAAAAJS5hQcAAAAAAAAAAAAA
AAAAAAAAlLmFBwAAAACHrXU0lruH/7ndtv+/4r39vN+5/r3guv+94Lr/veC6/73guv+94Lr/vN+5/7zf
uf+837n/veC5/7rdtv+kyJr/krmF/5G7h/+ZxJL/n8qa/57Kmv+ZxJL/kbqG/5K5hf+kyZr/ut23/7zg
uf+84Ln/vN+5/7zfuf+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r39ud22/5a7h/+HrXU0AAAAAJS5
hQcAAAAAAAAAAAAAAAAAAAAAk7iEBwAAAACHrXU0lruH/7nctf+/4r39u9+4/rzfuf+837n/vN+5/7zf
uf+837n/vN+5/7zfuP++4bv/vN+5/6XJm/+QuIL/mMOR/6POoP+eyZn/nciY/57ImP+eyZn/o86g/5jD
kf+QuIP/psmd/7zfuf++4bv/vN+4/7zfuf+837n/vN+5/7zfuf+837n/vN+5/7vfuP6/4r39udy1/5a7
h/+HrXU0AAAAAJO4hAcAAAAAAAAAAAAAAAAAAAAAlLmFBwAAAACIrXU0lruI/7rdtv/A4779vN+5/r3g
uv+94Lr/veC6/73guv+94Lr/veC6/73guv/A4r7/uNu0/4+1gP+Yw5H/oMyd/53Hl/+dyJj/nciY/53I
mP+dyJj/nceX/6DMnf+Yw5H/j7WA/7nbtf/A4r7/vOC5/73guv+94Lr/veC6/73guv+94Lr/veC6/7zf
uf7A4779ut22/5a7iP+IrXU0AAAAAJS5hQcAAAAAAAAAAAAAAAAAAAAAlLmGBwAAAACIrnY0l7yJ/7ve
uP/B5MD9veG7/r7hvP++4bz/vuG8/77hvP++4bz/vuG7/8Djvv+837n/qc6h/5S9iv+axZT/n8qb/53I
mP+eyZn/nsmZ/57Jmf+eyZn/nciY/5/Km/+axZT/lLyJ/6rOof+837n/wOO+/77hu/++4bz/vuG8/77h
vP++4bz/vuG8/77hu/7B5MD9u964/5e8if+IrnY0AAAAAJS5hgcAAAAAAAAAAAAAAAAAAAAAh6tyBwAA
AACApGk1iKx0/53BkP+hxZX9n8OT/6DElP+gxJT/oMSU/6DElP+gxJT/n8OT/6LGl/+avo3/i7F7/5nE
kv+eyZn/nciY/53ImP+dyJj/nsmZ/57Jmf+dyJj/nciY/53ImP+eyZn/mcOS/4uxev+avo3/osaX/5/D
k/+gxJT/oMSU/6DElP+gxJT/oMSU/5/Dk/+gxJX9ncGQ/4isdP+ApGk1AAAAAIercwcAAAAAAAAAAAAA
AAAAAAAAia12BgAAAAB9oWYtjK957qrOov+iyZr+mMCO/pjBj/6YwY//mMGP/5jBj/+YwY//mMGP/5nC
kP+Wv4z/kruI/5zHl/+eyZn/nciY/53ImP+eyZn/nsmZ/57Jmf+eyZn/nciY/53ImP+eyZr/nMiX/5K7
h/+Wv4z/mcKQ/5jBj/+YwY//mMGP/5jBj/+YwY//mMGP/pjBjv6jypr+qs6i/4yvee59oWUtAAAAAImt
dQYAAAAAAAAAAAAAAAAAAAAAjbJ8BQAAAAB1mlwhkraCwr/ivf613LT/os2e/Z7Kmv+gy5z/n8ub/5/L
m/+fy5v/n8ub/5/Lm/+gy5z/ocye/57Jmf+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+dyJj/nsmZ/6HMnv+gy5z/n8ub/5/Lm/+fy5v/n8ub/5/Lm/+gy5z/nsqa/6LNnv223LT/v+K9/pK2
gcJ1mlwhAAAAAI6yfAUAAAAAAAAAAAAAAAAAAAAAgadsAwAAAABTfC8Phqxzfq7Sp/W427T/p8+i/JrG
lf6eyZn/nciY/53ImP+dyJj/nciY/53ImP+dyJj/nciY/53ImP+eyZn/nciY/57JmP+eyZn/nsmZ/57J
mf+eyZn/nsmY/53ImP+eyZn/nciY/53Il/+dyJj/nciY/53ImP+dyJj/nciY/53ImP+eyZn/msaV/qfP
ovy427P/rtGm9YetdH1UfDIPAAAAAIKobQMAAAAAAAAAAAAAAAAAAAAAAAAAANT33wEAAAAAfKFlIpe7
itm32bH/r9ar/ZvGlf6eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/m8aV/q/Wq/232bH/lruH2XimZiEAAAAA1efOAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyw
ewMAAAAAdZpeComtd7S016/9tty0/6HLnP2dyJj+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/nsmZ/57Jmf+dyJj+ocuc/bfdtP+01679ia11tXWaWwoAAAAAjLB5AwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAIOpcAIAAAAAWYE6BX6kaXyv0afuut23/6nRpfubx5b/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+bx5b/qdGk+7rdtv+u0abugKRqeluAOwUAAAAAhalxAgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHebWySbv47GtNau/7LYsPubx5b+nsmZ/p7I
mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciZ/57Jmf6bx5b+stiv+7PWrf+bv43FeppfIwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMs3wBAAAAAAAAAACDq3GgrNGl/7vg
uf6gypv9nsmZ/53ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/57Jmf+gypv9u+C5/q3Q
pf+FqXCfAAAAAAAAAACOsnwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIq3IBAAAAAAAA
AAB7oWR0qM2f6Lzguf+q0aX8nciX/53ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/53I
l/+q0qX8u+C5/6nNoOd8oGZzAAAAAAAAAACIqnMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABojlAoncGRuLPWrf+02rH6nMeX/pzIl/6dyJj+nciY/p3ImP6dyJj+nciY/p3I
mP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3I
mP6dyJj+nMiX/pzHl/602rH6s9at/53BkbhpjEsnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJm6iAIAAAAAh6x0f6bJm/+74Lr8oMqc/pvHlv6bx5b+nMeW/pzH
lv6cx5b+nMeW/pzHlv6cx5b+nMeW/pzHlv6cx5b+nMeW/pzHlv6cx5b+nMeW/pzHlv6cx5b+nMeW/pzH
lv6cx5b+nMeW/pzHlv6bx5b+m8eW/qDLnP674Lr8psmb/4esdH8AAAAAmbqIAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIisdQIAAAAAd5xfZaHElebF6MX8u9+5+brf
uPq637j6ut+4+rrfuPq637j6ut+4+rrfuPq637j6ut+4+rrfuPq637j6ut+4+rrfuPq637j6ut+4+rrf
uPq637j6ut+4+rrfuPq637j6ut+4+rrfuPq637j6ut+4+rvgufnF6MX8ocSV5necXmQAAAAAiKx0AgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH+obAEAAAAAapRRJpG3
gamixpb/qMuf/KnMn/6py5//qcuf/6nLn/+py5//qcuf/6nLn/+py5//qcuf/6nLn/+py5//qcuf/6nL
n/+py5//qcuf/6nLn/+py5//qcuf/6nLn/+py5//qcuf/6nLn/+py5//qcyf/qjLn/yixpb/kbaBqGuS
UCUAAAAAgKdsAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACet4sCAAAAAH2lZ0KGq3KVjrN+ho6yfYiNsn2IjrJ9iI6yfYiOsn2IjrJ9iI6yfYiOsn2IjrJ9iI6y
fYiOsn2IjrJ9iI6yfYiOsn2IjrJ9iI6yfYiOsn2IjrJ9iI6yfYiOsn2IjrJ9iI6yfYiNsn2IjrJ9iI6z
foaGq3KVfqRoQgAAAACWuoQCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIatcgGQtX8DmLyKA5i8igOXu4kDmLyKA5i8
igOYvIoDmLyKA5i8igOYvIoDmLyKA5i8igOYvIoDmLyKA5i8igOYvIoDmLyKA5i8igOYvIoDmLyKA5i8
igOYvIoDmLyKA5i8igOXu4kDmLyKA5i8igOQtX8DhqxzAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP///////wAA////////AAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgA
AAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAf
AAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgA
AAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAf
AAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA/AAAAAA/AAD8AAAAAD8AAPwA
AAAAPwAA/gAAAAB/AAD+AAAAAH8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/4AAAAH/
AAD/gAAAAf8AAP/AAAAD/wAA////////AAD///////8AACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/pGgBAAAAAHugZE6DqG1jhKpvW4Spbl2EqW5dhKluXYSp
bl2EqW5dhKluXYSpbl2EqW5dhKluXYSpbl2EqW5dhKluXYSpbl2EqW5dhKluXYSpbl2EqW5dhKluXYSp
bl2EqW5dhKpvW4OobWN7oGROAAAAAH+kaAEAAAAAAAAAAJq+jQQAAAAAjbF7vqjLnv+s0KP7qs6h/qvO
ov+rzqL/q86i/6vOov+rzqL/q86i/6vOov+qzqL/qs6i/6vOov+rzqL/q86i/6vOov+rzqL/q86i/6vO
ov+rzqL/q86i/6rOof6s0KP7qMue/42xe74AAAAAmr6NBAAAAAAAAAAArM+jBAAAAACZvYqtveC6/8Ll
wfjA4777weO//MDjv/vA47/7weO/+8Djv/vB47/7wOO++8Hjv/vA4777weO/+8Hjv/vB47/7wOO/+8Dj
v/vA47/7wOO/+8Djv/vB47/8wOO++8Llwfi94Lr/mb2KrQAAAACsz6MEAAAAAAAAAACny54EAAAAAJa6
hrK427P/veC6+7ret/673rj+u964/rveuP673rf+u964/rrdt/6937r+u9+4/r3guv673rj+u963/rve
t/673rj+u964/rveuP673rj+u964/rveuP663rf+veC6+7jbs/+WuoayAAAAAKfLngQAAAAAAAAAAKjM
nwQAAAAAlrqHsbnctf++4bz7vN+5/r3guv+94Lr+veC6/7zfuf+73rj/vuG8/7ndtv+oyp7/rdCl/77i
vP+837r/vN+5/7zfuv+94Lr/veC6/73guv+94Lr+veC6/7zfuf6+4bz7udy1/5a6h7EAAAAAqMyfBAAA
AAAAAAAAqMyfBAAAAACWuoexudy0/77hu/u837n+veC6/7zfuf6837n+u964/r/hvP643bX+qsqg/tXf
zf7C1Lj+q8+j/r/ivf6837n+vN+5/r3guv6837n+vN+5/rzfuf694Lr/vN+5/r7hu/u53LT/lrqHsQAA
AACozJ8EAAAAAAAAAACozJ8EAAAAAJa6h7G53LT/vuG8+7zfuf694Lr/vN+5/rveuP+/4bz/uNy1/6vL
of/b5dX///////n6+f/C1bn/q8+j/7/ivf+837n/vN+5/73guv+94Lr/vN+5/r3guv+837n+vuG8+7nc
tP+WuoexAAAAAKjMnwQAAAAAAAAAAKjMnwQAAAAAlrqHsbnctP++4bz7vN+5/r3guv+837j+vuG8/7jc
tf+qyaD/3+nb///////n7eP/9ff0//3+/f/F17v/q86h/7/jvf+837n/vN+5/7zfuf+94Lr+veC6/7zf
uf6+4bz7udy0/5a6h7EAAAAAqMyfBAAAAAAAAAAAqMyfBAAAAACWuoexudy0/77hu/u837n+vN+5/73f
uv663rf/q8uh/+Ho2///////4ure/6TEmf+50K//9/j1//39/f/G1r3/q86j/7/ivf+837r/vN+4/7zf
uf694Lr/vN+5/r7hvPu53LT/lrqHsQAAAACozJ8EAAAAAAAAAACozJ8EAAAAAJa6h7G53LT/vuG7+7zf
uf6837n/vd+6/rret/+qyaD/5uzh/+ju5P+ryaD/u9+5/7DUqv+5z6//+Pn3//39/P/D1rr/q8+j/77i
vP+837n/vN+5/r3guv+837n+vuG8+7nctP+WuoexAAAAAKjMnwQAAAAAAAAAAKjMnwQAAAAAlrqHsbnc
tP++4bz7vN+5/r3guv+837j+vuG7/7jdtf+tzKT/rsyl/7ndtf++4Lv/v+K9/6/TqP+70bH/9ffz//3+
/f/H177/rM+k/7/ivP+83rj+veC6/7zfuf6+4bz7udy0/5a6h7EAAAAAqMyfBAAAAAAAAAAAqMyfBAAA
AACWuoexudy0/77hu/u837n+veC6/7zfuf673rj/vuG7/7ndtv+53bb/vuG7/7veuP+837n/wOO+/67T
qP+40K7/9vn1///////A0rb/q9Ck/8Djvv673rj/vN+5/r7hu/u53LT/lrqHsQAAAACozJ8EAAAAAAAA
AACpzJ8EAAAAAJe6h6+53LX/vuG8+7zfuf694Lr/vN+5/rzfuf+837j/veC6/73gu/+837j/vN+5/7zf
uf+83rj/wOO+/63Spv+90rP/3+fY/7jRr/+z167/vuG8/rvfuP+837n+vuG8+7nctf+XuoevAAAAAKnM
nwQAAAAAAAAAAKfKngQAAAAAlLiFu7jbtP++4bv6vN+5/r3guv+94Lr+vN+5/7zguv+837n/vN+5/73f
uv+837n/vN+4/7veuP+73rj/wOO+/7LUq/+oyJz/tdiw/7/ivf+73rj+veC6/7zfuf6+4bv6uNu0/5S4
hbsAAAAAp8qeBAAAAAAAAAAApsudBAAAAAGUuYbBuNu0/77hu/q837n/veC6/rzfuf694Lr/veC5/73g
uv+84Lr/u964/7zfuf++4bz/vuG8/7zfuf+73rj/vuG8/7vfuf++4bv/u964/7zfuf694Lr+vN+5/77h
u/q427T/lLmGwQAAAAGmy50EAAAAAAAAAACny50EAAAAAJW7h8G43LT/vuG8+rzfuf+94Lr+vN+5/rzf
uf+837n/vN+5/7veuP+/4rz/vuC7/7XYsP+12LD/veC7/7/ivf+73rj/vd+6/7zfuf+837n/veC6/r3g
uv6837n/vuG8+rjctP+Vu4fBAAAAAKfLnQQAAAAAAAAAAKfLnQQAAAAAlbqGwbjctP++4bz6vN+5/73g
uv694Lr+veC6/7zfuf+837n/vuG7/7LWrf+ix5j/mcGP/5nBkP+ix5j/stas/77hu/+837n/vN+5/7zf
uf+94Lr+veC6/rzfuf++4bz6uNy0/5W6hsEAAAAAp8udBAAAAAAAAAAAp8ucBAAAAACVuobBt9uz/73g
u/q73rj/vN+4/rzfuP673rj/u963/73guv+u0qf/k7uH/5XAjv+dyJj/nciY/5XAjf+Tu4f/r9Ko/73g
uv+73rf/u964/7zfuP6837j+u964/73gu/q327P/lbqGwQAAAACny5wEAAAAAAAAAACozKAEAAAAAJa7
iMG73rf/wOO/+r7hu/++4bz/vuG8/r7hu//A477/vN64/5O6h/+axpX/oMuc/53Hl/+dx5f/oMuc/5rG
lf+Uuof/vN65/8Djvv++4bv/vuG8/r7hvP++4bv/wOO/+rvet/+Wu4jBAAAAAKjMnwQAAAAAAAAAAKDE
lAQAAAABkbWBwa/SqP+22bH6tNeu/7TXr/6016//tNeu/7bZsf+jx5n/lb+N/57Jmv+cx5f/nciY/53I
mP+cx5f/nsma/5W/jP+jx5n/ttmx/7TXrv+016//tNev/rTXrv+22bH6r9Ko/5G2gcEAAAABn8SVBAAA
AAAAAAAAl7uIBAAAAACKrXe5ocaX/5rBkPqYv43+mMCO/5jAjf6YwI7/mMCO/5C4hP+bxpb/nciY/53I
mP+dyJj/nciY/53ImP+dyJj/m8eW/5C4g/+YwI7/mMCO/5jAjf6YwI7/mL+N/prCkPqhxpf/iq13uQAA
AACXu4kEAAAAAAAAAACny58DAAAAAJC0f4i43LX/qNGl+5zIl/6eypr/ncmZ/p3Jmf+eyZn/n8qc/53I
mP+dyJj/nsmY/57Jmf+eyZn/nsmY/53ImP+dyJj/n8qb/57Jmf+dyZn/ncmZ/p7Kmv+cyJf+qNGl+7nc
tf+QtH6HAAAAAKjMngMAAAAAAAAAAJa7iQEAAAAAdZxeLKfKneix163/m8aV/Z7Imf+dyJj+nciY/53I
mP+dyJj/nciY/53ImP+dyJj/nsmZ/57Jmf+dyJj/nciY/53ImP+dyJj/nciY/53ImP+dyJj+nsiZ/5vG
lf2x163/psmb6HSeXiwAAAAAlryIAQAAAAAAAAAAAAAAAAAAAAAAAAADmLuKvbjctf+hy5z7nMiX/p7J
mf+eyZn+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/p7J
mf+cyJf+ocuc+7jctf+Yu4m9AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAu924AgAAAACNsntlsdOq/arS
p/yaxpX9nsmZ/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3I
mP6dyJj+nsmZ/prGlf2q0qb8sNOp/I6yfGQAAAAAt9yzAgAAAAAAAAAAAAAAAAAAAACBqG0CAAAAAGWP
Syiix5jntduz/5zHl/yeyJn/nsmZ/p7Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/nsmZ/57Jmf6eyJn/nMeX/LXbs/+jxpjnZ4xKKAAAAACDp20CAAAAAAAAAAAAAAAAAAAAAHSZ
WwEAAAAABC4AB5q/jZ+12bD/oMqb+5jEk/6bxpX+msaV/prGlf6axpX+msaV/prGlf6axpX+msaV/prG
lf6axpX+msaV/prGlf6axpX+m8aV/pjEk/6gy5v7tdmw/5u/jp4CJgAHAAAAAHSYWwEAAAAAAAAAAAAA
AAAAAAAAAAAAAIqudwIAAAAAfqNoWK7Rpv+027T6pM6g+6fRo/un0KP7p9Cj+6fQo/un0KP7p9Cj+6fQ
o/un0KP7p9Cj+6fQo/un0KP7p9Cj+6fQo/un0KP7pM6g+7TctPqu0ab/fqNoWAAAAACKrncCAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAeaBjAQAAAABnj0wmncGQz6/SqP+v0qf9r9Gn/6/Rp/+v0af/r9Gn/6/R
p/+v0af/r9Gn/6/Rp/+v0af/r9Gn/6/Rp/+v0af/r9Gn/6/Rp/+v0qf9r9Ko/53BkM9njUolAAAAAHqf
YgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8o2Y+iK12Zoywe12Lr3pfjK96X4yv
el+Mr3pfjK96X4yvel+Mr3pfjK96X4yvel+Mr3pfjK96X4yvel+Mr3pfi696X4ywe12IrXZmfaNmPgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////gAAAH4AAAB+AAAAfgAAAH4AAAB+AA
AAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AA
AAfwAAAP8AAAD/gAAB/4AAAf+AAAH/wAAD/8AAA///////////8oAAAAEAAAACAAAAABACAAAAAAAAAE
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH2iZxiGq3E8iK1zNoesczeHrHM3h6xyN4arcTeHrHM3h6xzN4es
czeHrHM3iK1zNoarcTx9omcYAAAAAAAAAACUuIRer9Oo/7TXrvaz1q35s9at+bTXrvm12LD5s9at+bPW
rfmz1q35s9at+bTXrvav06j/lLiEXgAAAAAAAAAAm7+NXbrdtv+/4r77vuG7/r/ivf+737j/stas/73h
u/+/4b3/vuG8/77hvP6/4r77ut22/5u/jV0AAAAAAAAAAJm9i12427P/veC6+73guv623LP+wNq5/ubs
4f631rH+ud63/r3guv6837n+veC7+7jbs/+ZvYtdAAAAAAAAAACZvYtduNu0/77hvPu43bX+wdq7/u3x
6f7a5tX+6/Dn/rjWsf653rb+veC6/r3gu/u427T/mb2LXQAAAAAAAAAAmb2LXbjbtP++4bz7uN21/sLa
vP7F3L//rdSn/87gyf/t8er/vNm3/rret/6+4bv7uNu0/5m9i10AAAAAAAAAAJm9i12427T/veC7+73g
uv653bX+uN21/7/ivf+y2K3/z+HJ/9PgzP6z2K/+v+K9+7jbs/+ZvYtdAAAAAAAAAACXvIpjt9uz/77h
u/u837n/veC6/r7gu/++4bv/wOO+/7fbs/+117D+veC6/77hu/u327P/l7yKYwAAAAAAAAAAmL2KZbfa
s/+94Lv7u9+4/73guv663bb/qs+k/6rPo/+73rj/vuG7/rveuP+94Lv7t9qz/5i9imUAAAAAAAAAAJi9
i2W53LX/wOK++7/hvP+937n+nsWV/5nEk/+ZxJL/nsWV/73fuf6/4bz/wOK++7nctf+YvYtlAAAAAAAA
AACTtoJlp8yf/6fNoPupzqH/oceY/pnEk/+fypr/n8qa/5nEk/+hx5j+qM6h/6fNoPuozJ//k7aCZQAA
AAAAAAAAkbN/NKjOovubx5b/msaV/pvHlv6eyJn+nciY/p3ImP6eyZn+m8eW/prGlf6bx5b/qM6i+5G0
fjQAAAAAAAAAAAAAAACpzaHBpM2g/53ImPyeyZn+nsmZ/p7Jmf6eyZn+nsmZ/p7Jmf6dyJj8pM2f/6nN
oMEAAAAAAAAAAKvPowMAAAAAn8OTcKnRpf+bx5b8ncmY/p3ImP+dyJj/nciY/53ImP+dyJj+m8eW/KnR
pf+gwpNvAAAAAKvPowOMsXsBAAAAAIKlayKozaDrqc+j/ajOofmozqH6qM6h+qjOofqozqH6qM6h+anP
o/2ozaDqgqVrIgAAAACNsXsBAAAAAAAAAAAAAAAAiq93LZq7ijuauok4mrqJOZq6iTmauok5mrqJOZq6
iTiau4o7iq53LQAAAAAAAAAAAAAAAP//AADAAwAAwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMAD
AADAAwAAwAMAAMADAADgBwAA4AcAAP//AAA=
</value>
</data>
</root>

View File

@@ -0,0 +1,451 @@
namespace Project.Dialog
{
partial class RegExPrintRule
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RegExPrintRule));
this.dataSet1 = new Project.DataSet1();
this.bs = new System.Windows.Forms.BindingSource(this.components);
this.tam = new Project.DataSet1TableAdapters.TableAdapterManager();
this.ta = new Project.DataSet1TableAdapters.Component_Reel_PrintRegExRuleTableAdapter();
this.bn = new System.Windows.Forms.BindingNavigator(this.components);
this.bindingNavigatorAddNewItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorCountItem = new System.Windows.Forms.ToolStripLabel();
this.bindingNavigatorDeleteItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorMoveFirstItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorMovePreviousItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorSeparator = new System.Windows.Forms.ToolStripSeparator();
this.bindingNavigatorPositionItem = new System.Windows.Forms.ToolStripTextBox();
this.bindingNavigatorSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.bindingNavigatorMoveNextItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorMoveLastItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.component_Reel_RegExRuleBindingNavigatorSaveItem = new System.Windows.Forms.ToolStripButton();
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
this.component_Reel_RegExRuleDataGridView = new System.Windows.Forms.DataGridView();
this.idDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.seqDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.custCodeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.descriptionDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.symbolDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.patternDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.groupsDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.isEnableDataGridViewCheckBoxColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.isTrustDataGridViewCheckBoxColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.isAmkStdDataGridViewCheckBoxColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.isIgnoreDataGridViewCheckBoxColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox();
((System.ComponentModel.ISupportInitialize)(this.dataSet1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bs)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bn)).BeginInit();
this.bn.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.component_Reel_RegExRuleDataGridView)).BeginInit();
this.tableLayoutPanel1.SuspendLayout();
this.SuspendLayout();
//
// dataSet1
//
this.dataSet1.DataSetName = "DataSet1";
this.dataSet1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
//
// bs
//
this.bs.DataMember = "Component_Reel_PrintRegExRule";
this.bs.DataSource = this.dataSet1;
this.bs.Sort = "CustCode,Seq";
//
// tam
//
this.tam.BackupDataSetBeforeUpdate = false;
this.tam.Component_Reel_CustInfoTableAdapter = null;
this.tam.Component_Reel_PreSetTableAdapter = null;
this.tam.Component_Reel_Print_InformationTableAdapter = null;
this.tam.Component_Reel_PrintRegExRuleTableAdapter = this.ta;
this.tam.Component_Reel_RegExRuleTableAdapter = null;
this.tam.Component_Reel_ResultTableAdapter = null;
this.tam.Component_Reel_SID_ConvertTableAdapter = null;
this.tam.Component_Reel_SID_InformationTableAdapter = null;
this.tam.UpdateOrder = Project.DataSet1TableAdapters.TableAdapterManager.UpdateOrderOption.InsertUpdateDelete;
//
// ta
//
this.ta.ClearBeforeFill = true;
//
// bn
//
this.bn.AddNewItem = this.bindingNavigatorAddNewItem;
this.bn.BindingSource = this.bs;
this.bn.CountItem = this.bindingNavigatorCountItem;
this.bn.DeleteItem = this.bindingNavigatorDeleteItem;
this.bn.Dock = System.Windows.Forms.DockStyle.Bottom;
this.bn.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.bindingNavigatorMoveFirstItem,
this.bindingNavigatorMovePreviousItem,
this.bindingNavigatorSeparator,
this.bindingNavigatorPositionItem,
this.bindingNavigatorCountItem,
this.bindingNavigatorSeparator1,
this.bindingNavigatorMoveNextItem,
this.bindingNavigatorMoveLastItem,
this.bindingNavigatorSeparator2,
this.bindingNavigatorAddNewItem,
this.bindingNavigatorDeleteItem,
this.component_Reel_RegExRuleBindingNavigatorSaveItem,
this.toolStripButton1});
this.bn.Location = new System.Drawing.Point(0, 536);
this.bn.MoveFirstItem = this.bindingNavigatorMoveFirstItem;
this.bn.MoveLastItem = this.bindingNavigatorMoveLastItem;
this.bn.MoveNextItem = this.bindingNavigatorMoveNextItem;
this.bn.MovePreviousItem = this.bindingNavigatorMovePreviousItem;
this.bn.Name = "bn";
this.bn.PositionItem = this.bindingNavigatorPositionItem;
this.bn.Size = new System.Drawing.Size(784, 25);
this.bn.TabIndex = 0;
this.bn.Text = "bindingNavigator1";
//
// bindingNavigatorAddNewItem
//
this.bindingNavigatorAddNewItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.bindingNavigatorAddNewItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorAddNewItem.Image")));
this.bindingNavigatorAddNewItem.Name = "bindingNavigatorAddNewItem";
this.bindingNavigatorAddNewItem.RightToLeftAutoMirrorImage = true;
this.bindingNavigatorAddNewItem.Size = new System.Drawing.Size(23, 22);
this.bindingNavigatorAddNewItem.Text = "새로 추가";
//
// bindingNavigatorCountItem
//
this.bindingNavigatorCountItem.Name = "bindingNavigatorCountItem";
this.bindingNavigatorCountItem.Size = new System.Drawing.Size(27, 22);
this.bindingNavigatorCountItem.Text = "/{0}";
this.bindingNavigatorCountItem.ToolTipText = "전체 항목 수";
//
// bindingNavigatorDeleteItem
//
this.bindingNavigatorDeleteItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.bindingNavigatorDeleteItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorDeleteItem.Image")));
this.bindingNavigatorDeleteItem.Name = "bindingNavigatorDeleteItem";
this.bindingNavigatorDeleteItem.RightToLeftAutoMirrorImage = true;
this.bindingNavigatorDeleteItem.Size = new System.Drawing.Size(23, 22);
this.bindingNavigatorDeleteItem.Text = "삭제";
//
// bindingNavigatorMoveFirstItem
//
this.bindingNavigatorMoveFirstItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.bindingNavigatorMoveFirstItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveFirstItem.Image")));
this.bindingNavigatorMoveFirstItem.Name = "bindingNavigatorMoveFirstItem";
this.bindingNavigatorMoveFirstItem.RightToLeftAutoMirrorImage = true;
this.bindingNavigatorMoveFirstItem.Size = new System.Drawing.Size(23, 22);
this.bindingNavigatorMoveFirstItem.Text = "처음으로 이동";
//
// bindingNavigatorMovePreviousItem
//
this.bindingNavigatorMovePreviousItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.bindingNavigatorMovePreviousItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMovePreviousItem.Image")));
this.bindingNavigatorMovePreviousItem.Name = "bindingNavigatorMovePreviousItem";
this.bindingNavigatorMovePreviousItem.RightToLeftAutoMirrorImage = true;
this.bindingNavigatorMovePreviousItem.Size = new System.Drawing.Size(23, 22);
this.bindingNavigatorMovePreviousItem.Text = "이전으로 이동";
//
// bindingNavigatorSeparator
//
this.bindingNavigatorSeparator.Name = "bindingNavigatorSeparator";
this.bindingNavigatorSeparator.Size = new System.Drawing.Size(6, 25);
//
// bindingNavigatorPositionItem
//
this.bindingNavigatorPositionItem.AccessibleName = "위치";
this.bindingNavigatorPositionItem.AutoSize = false;
this.bindingNavigatorPositionItem.Font = new System.Drawing.Font("맑은 고딕", 9F);
this.bindingNavigatorPositionItem.Name = "bindingNavigatorPositionItem";
this.bindingNavigatorPositionItem.Size = new System.Drawing.Size(50, 23);
this.bindingNavigatorPositionItem.Text = "0";
this.bindingNavigatorPositionItem.ToolTipText = "현재 위치";
//
// bindingNavigatorSeparator1
//
this.bindingNavigatorSeparator1.Name = "bindingNavigatorSeparator1";
this.bindingNavigatorSeparator1.Size = new System.Drawing.Size(6, 25);
//
// bindingNavigatorMoveNextItem
//
this.bindingNavigatorMoveNextItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.bindingNavigatorMoveNextItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveNextItem.Image")));
this.bindingNavigatorMoveNextItem.Name = "bindingNavigatorMoveNextItem";
this.bindingNavigatorMoveNextItem.RightToLeftAutoMirrorImage = true;
this.bindingNavigatorMoveNextItem.Size = new System.Drawing.Size(23, 22);
this.bindingNavigatorMoveNextItem.Text = "다음으로 이동";
//
// bindingNavigatorMoveLastItem
//
this.bindingNavigatorMoveLastItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.bindingNavigatorMoveLastItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveLastItem.Image")));
this.bindingNavigatorMoveLastItem.Name = "bindingNavigatorMoveLastItem";
this.bindingNavigatorMoveLastItem.RightToLeftAutoMirrorImage = true;
this.bindingNavigatorMoveLastItem.Size = new System.Drawing.Size(23, 22);
this.bindingNavigatorMoveLastItem.Text = "마지막으로 이동";
//
// bindingNavigatorSeparator2
//
this.bindingNavigatorSeparator2.Name = "bindingNavigatorSeparator2";
this.bindingNavigatorSeparator2.Size = new System.Drawing.Size(6, 25);
//
// component_Reel_RegExRuleBindingNavigatorSaveItem
//
this.component_Reel_RegExRuleBindingNavigatorSaveItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.component_Reel_RegExRuleBindingNavigatorSaveItem.Image = ((System.Drawing.Image)(resources.GetObject("component_Reel_RegExRuleBindingNavigatorSaveItem.Image")));
this.component_Reel_RegExRuleBindingNavigatorSaveItem.Name = "component_Reel_RegExRuleBindingNavigatorSaveItem";
this.component_Reel_RegExRuleBindingNavigatorSaveItem.Size = new System.Drawing.Size(23, 22);
this.component_Reel_RegExRuleBindingNavigatorSaveItem.Text = "데이터 저장";
this.component_Reel_RegExRuleBindingNavigatorSaveItem.Click += new System.EventHandler(this.component_Reel_RegExRuleBindingNavigatorSaveItem_Click);
//
// toolStripButton1
//
this.toolStripButton1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButton1.Name = "toolStripButton1";
this.toolStripButton1.Size = new System.Drawing.Size(66, 22);
this.toolStripButton1.Text = "Refresh";
this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click);
//
// component_Reel_RegExRuleDataGridView
//
this.component_Reel_RegExRuleDataGridView.AutoGenerateColumns = false;
this.component_Reel_RegExRuleDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.component_Reel_RegExRuleDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.idDataGridViewTextBoxColumn,
this.seqDataGridViewTextBoxColumn,
this.custCodeDataGridViewTextBoxColumn,
this.descriptionDataGridViewTextBoxColumn,
this.symbolDataGridViewTextBoxColumn,
this.patternDataGridViewTextBoxColumn,
this.groupsDataGridViewTextBoxColumn,
this.isEnableDataGridViewCheckBoxColumn,
this.isTrustDataGridViewCheckBoxColumn,
this.isAmkStdDataGridViewCheckBoxColumn,
this.isIgnoreDataGridViewCheckBoxColumn});
this.component_Reel_RegExRuleDataGridView.DataSource = this.bs;
this.component_Reel_RegExRuleDataGridView.Dock = System.Windows.Forms.DockStyle.Fill;
this.component_Reel_RegExRuleDataGridView.Location = new System.Drawing.Point(0, 0);
this.component_Reel_RegExRuleDataGridView.Name = "component_Reel_RegExRuleDataGridView";
this.component_Reel_RegExRuleDataGridView.RowTemplate.Height = 23;
this.component_Reel_RegExRuleDataGridView.Size = new System.Drawing.Size(784, 486);
this.component_Reel_RegExRuleDataGridView.TabIndex = 2;
//
// idDataGridViewTextBoxColumn
//
this.idDataGridViewTextBoxColumn.DataPropertyName = "Id";
this.idDataGridViewTextBoxColumn.HeaderText = "Id";
this.idDataGridViewTextBoxColumn.Name = "idDataGridViewTextBoxColumn";
this.idDataGridViewTextBoxColumn.ReadOnly = true;
//
// seqDataGridViewTextBoxColumn
//
this.seqDataGridViewTextBoxColumn.DataPropertyName = "Seq";
this.seqDataGridViewTextBoxColumn.HeaderText = "Seq";
this.seqDataGridViewTextBoxColumn.Name = "seqDataGridViewTextBoxColumn";
//
// custCodeDataGridViewTextBoxColumn
//
this.custCodeDataGridViewTextBoxColumn.DataPropertyName = "CustCode";
this.custCodeDataGridViewTextBoxColumn.HeaderText = "CustCode";
this.custCodeDataGridViewTextBoxColumn.Name = "custCodeDataGridViewTextBoxColumn";
//
// descriptionDataGridViewTextBoxColumn
//
this.descriptionDataGridViewTextBoxColumn.DataPropertyName = "Description";
this.descriptionDataGridViewTextBoxColumn.HeaderText = "Description";
this.descriptionDataGridViewTextBoxColumn.Name = "descriptionDataGridViewTextBoxColumn";
//
// symbolDataGridViewTextBoxColumn
//
this.symbolDataGridViewTextBoxColumn.DataPropertyName = "Symbol";
this.symbolDataGridViewTextBoxColumn.HeaderText = "Symbol";
this.symbolDataGridViewTextBoxColumn.Name = "symbolDataGridViewTextBoxColumn";
//
// patternDataGridViewTextBoxColumn
//
this.patternDataGridViewTextBoxColumn.DataPropertyName = "Pattern";
this.patternDataGridViewTextBoxColumn.HeaderText = "Pattern";
this.patternDataGridViewTextBoxColumn.Name = "patternDataGridViewTextBoxColumn";
//
// groupsDataGridViewTextBoxColumn
//
this.groupsDataGridViewTextBoxColumn.DataPropertyName = "Groups";
this.groupsDataGridViewTextBoxColumn.HeaderText = "Groups";
this.groupsDataGridViewTextBoxColumn.Name = "groupsDataGridViewTextBoxColumn";
//
// isEnableDataGridViewCheckBoxColumn
//
this.isEnableDataGridViewCheckBoxColumn.DataPropertyName = "IsEnable";
this.isEnableDataGridViewCheckBoxColumn.HeaderText = "IsEnable";
this.isEnableDataGridViewCheckBoxColumn.Name = "isEnableDataGridViewCheckBoxColumn";
//
// isTrustDataGridViewCheckBoxColumn
//
this.isTrustDataGridViewCheckBoxColumn.DataPropertyName = "IsTrust";
this.isTrustDataGridViewCheckBoxColumn.HeaderText = "IsTrust";
this.isTrustDataGridViewCheckBoxColumn.Name = "isTrustDataGridViewCheckBoxColumn";
//
// isAmkStdDataGridViewCheckBoxColumn
//
this.isAmkStdDataGridViewCheckBoxColumn.DataPropertyName = "IsAmkStd";
this.isAmkStdDataGridViewCheckBoxColumn.HeaderText = "IsAmkStd";
this.isAmkStdDataGridViewCheckBoxColumn.Name = "isAmkStdDataGridViewCheckBoxColumn";
//
// isIgnoreDataGridViewCheckBoxColumn
//
this.isIgnoreDataGridViewCheckBoxColumn.DataPropertyName = "IsIgnore";
this.isIgnoreDataGridViewCheckBoxColumn.HeaderText = "IsIgnore";
this.isIgnoreDataGridViewCheckBoxColumn.Name = "isIgnoreDataGridViewCheckBoxColumn";
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 122F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Controls.Add(this.label1, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.label2, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.textBox1, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.textBox2, 1, 1);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 486);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 2;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(784, 50);
this.tableLayoutPanel1.TabIndex = 4;
//
// label1
//
this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
this.label1.Location = new System.Drawing.Point(3, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(116, 25);
this.label1.TabIndex = 0;
this.label1.Text = "Pattern";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label2
//
this.label2.Dock = System.Windows.Forms.DockStyle.Fill;
this.label2.Location = new System.Drawing.Point(3, 25);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(116, 25);
this.label2.TabIndex = 0;
this.label2.Text = "Groups";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// textBox1
//
this.textBox1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bs, "Pattern", true));
this.textBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.textBox1.Location = new System.Drawing.Point(125, 3);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(656, 21);
this.textBox1.TabIndex = 1;
//
// textBox2
//
this.textBox2.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bs, "Groups", true));
this.textBox2.Dock = System.Windows.Forms.DockStyle.Fill;
this.textBox2.Location = new System.Drawing.Point(125, 28);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(656, 21);
this.textBox2.TabIndex = 1;
//
// RegExPrintRule
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(784, 561);
this.Controls.Add(this.component_Reel_RegExRuleDataGridView);
this.Controls.Add(this.tableLayoutPanel1);
this.Controls.Add(this.bn);
this.Name = "RegExPrintRule";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "RegExRule";
this.Load += new System.EventHandler(this.RegExRule_Load);
((System.ComponentModel.ISupportInitialize)(this.dataSet1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bs)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bn)).EndInit();
this.bn.ResumeLayout(false);
this.bn.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.component_Reel_RegExRuleDataGridView)).EndInit();
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private DataSet1 dataSet1;
private System.Windows.Forms.BindingSource bs;
private DataSet1TableAdapters.TableAdapterManager tam;
private System.Windows.Forms.BindingNavigator bn;
private System.Windows.Forms.ToolStripButton bindingNavigatorAddNewItem;
private System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem;
private System.Windows.Forms.ToolStripButton bindingNavigatorDeleteItem;
private System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem;
private System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem;
private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator;
private System.Windows.Forms.ToolStripTextBox bindingNavigatorPositionItem;
private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator1;
private System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem;
private System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem;
private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator2;
private System.Windows.Forms.ToolStripButton component_Reel_RegExRuleBindingNavigatorSaveItem;
private System.Windows.Forms.DataGridView component_Reel_RegExRuleDataGridView;
private System.Windows.Forms.ToolStripButton toolStripButton1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private DataSet1TableAdapters.Component_Reel_PrintRegExRuleTableAdapter ta;
private System.Windows.Forms.DataGridViewTextBoxColumn idDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn seqDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn custCodeDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn descriptionDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn symbolDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn patternDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn groupsDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewCheckBoxColumn isEnableDataGridViewCheckBoxColumn;
private System.Windows.Forms.DataGridViewCheckBoxColumn isTrustDataGridViewCheckBoxColumn;
private System.Windows.Forms.DataGridViewCheckBoxColumn isAmkStdDataGridViewCheckBoxColumn;
private System.Windows.Forms.DataGridViewCheckBoxColumn isIgnoreDataGridViewCheckBoxColumn;
}
}

View File

@@ -0,0 +1,58 @@
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 RegExPrintRule : Form
{
public RegExPrintRule()
{
InitializeComponent();
}
private void RegExRule_Load(object sender, EventArgs e)
{
RefreshList();
}
private void component_Reel_RegExRuleBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.bs.EndEdit();
this.tam.UpdateAll(this.dataSet1);
var modelName = PUB.Result.vModel.Title;
PUB.Result.BCDPrintPattern = PUB.GetPrintPatterns();
PUB.log.Add($"모델프린트패턴로딩:{PUB.Result.BCDPrintPattern.Count}");
}
private void RefreshList()
{
try
{
this.ta.Fill(this.dataSet1.Component_Reel_PrintRegExRule);
component_Reel_RegExRuleDataGridView.AutoResizeColumns();
}
catch (System.Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
RefreshList();
}
}
}

View File

@@ -0,0 +1,222 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="dataSet1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="bs.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>117, 17</value>
</metadata>
<metadata name="tam.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>181, 17</value>
</metadata>
<metadata name="ta.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>320, 17</value>
</metadata>
<metadata name="bn.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>254, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="bindingNavigatorAddNewItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC
pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++
Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ
/5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA
zpX/v6RC8f/fWzFAjeH/p+Zp/J+QpfW/O0P3f3uq/v/mREPCYTIb6E+Qc//dCPjfk6FDWAM6APnz3w1/
IPb735qsT7oB3em6YP+CcH2cEekGtCQZ/G+IN/xfE2v8vzLahHQD6AQYGAAkI9iedfyIaQAAAABJRU5E
rkJggg==
</value>
</data>
<data name="bindingNavigatorDeleteItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC
DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC
rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV
i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG
86CNhdrsX9a/uQZTPhQl4rMY4OLofbl3aX7I8uwPC7y/g1YdjyVJuEvT8e1tfwUYteHUxCCfHChDeHmG
QQvokjlOU+PbWA0x3pZnILVVI3uvQyHsbiLnqnGmRCF1NYD8pDhpRxOH7HQoAKZGkFKjceszQbpSrumX
bO+G80MFwKUTxgfgcO/b8D9IpXoFiiMDHIQm0skAAAAASUVORK5CYII=
</value>
</data>
<data name="bindingNavigatorMoveFirstItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77
wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0
v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg
UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA
Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu
lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII=
</value>
</data>
<data name="bindingNavigatorMovePreviousItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w
5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f
Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+
08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC
</value>
</data>
<data name="bindingNavigatorMoveNextItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78
n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI
N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f
oAc0QjgAAAAASUVORK5CYII=
</value>
</data>
<data name="bindingNavigatorMoveLastItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+//
h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B
twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA
kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG
WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9
8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg==
</value>
</data>
<data name="component_Reel_RegExRuleBindingNavigatorSaveItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAAExJREFUOE9joAr49u3bf1IxVCsEgAWC58Dxh/cf4RhZDETHTNiHaQgpBoAwzBCo
dtINAGGiDUDGyGpoawAxeNSAQWkAORiqnRLAwAAA9EMMU8Daa3MAAAAASUVORK5CYII=
</value>
</data>
<data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
</root>

View File

@@ -0,0 +1,469 @@
namespace Project.Dialog
{
partial class RegExRule
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RegExRule));
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
this.bn = new System.Windows.Forms.BindingNavigator(this.components);
this.bindingNavigatorAddNewItem = new System.Windows.Forms.ToolStripButton();
this.bs = new System.Windows.Forms.BindingSource(this.components);
this.dataSet1 = new Project.DataSet1();
this.bindingNavigatorCountItem = new System.Windows.Forms.ToolStripLabel();
this.bindingNavigatorDeleteItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorMoveFirstItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorMovePreviousItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorSeparator = new System.Windows.Forms.ToolStripSeparator();
this.bindingNavigatorPositionItem = new System.Windows.Forms.ToolStripTextBox();
this.bindingNavigatorSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.bindingNavigatorMoveNextItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorMoveLastItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.component_Reel_RegExRuleBindingNavigatorSaveItem = new System.Windows.Forms.ToolStripButton();
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
this.dv1 = new System.Windows.Forms.DataGridView();
this.dataGridViewCheckBoxColumn1 = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.IsIgnore = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.dataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn5 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn4 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewCheckBoxColumn2 = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.dataGridViewCheckBoxColumn3 = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox();
this.ta = new Project.DataSet1TableAdapters.Component_Reel_RegExRuleTableAdapter();
this.tam = new Project.DataSet1TableAdapters.TableAdapterManager();
this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
((System.ComponentModel.ISupportInitialize)(this.bn)).BeginInit();
this.bn.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.bs)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dataSet1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dv1)).BeginInit();
this.tableLayoutPanel1.SuspendLayout();
this.SuspendLayout();
//
// bn
//
this.bn.AddNewItem = this.bindingNavigatorAddNewItem;
this.bn.BindingSource = this.bs;
this.bn.CountItem = this.bindingNavigatorCountItem;
this.bn.DeleteItem = this.bindingNavigatorDeleteItem;
this.bn.Dock = System.Windows.Forms.DockStyle.Bottom;
this.bn.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.bindingNavigatorMoveFirstItem,
this.bindingNavigatorMovePreviousItem,
this.bindingNavigatorSeparator,
this.bindingNavigatorPositionItem,
this.bindingNavigatorCountItem,
this.bindingNavigatorSeparator1,
this.bindingNavigatorMoveNextItem,
this.bindingNavigatorMoveLastItem,
this.bindingNavigatorSeparator2,
this.bindingNavigatorAddNewItem,
this.bindingNavigatorDeleteItem,
this.component_Reel_RegExRuleBindingNavigatorSaveItem,
this.toolStripButton1,
this.toolStripButton2});
this.bn.Location = new System.Drawing.Point(0, 736);
this.bn.MoveFirstItem = this.bindingNavigatorMoveFirstItem;
this.bn.MoveLastItem = this.bindingNavigatorMoveLastItem;
this.bn.MoveNextItem = this.bindingNavigatorMoveNextItem;
this.bn.MovePreviousItem = this.bindingNavigatorMovePreviousItem;
this.bn.Name = "bn";
this.bn.PositionItem = this.bindingNavigatorPositionItem;
this.bn.Size = new System.Drawing.Size(967, 25);
this.bn.TabIndex = 0;
this.bn.Text = "bindingNavigator1";
//
// bindingNavigatorAddNewItem
//
this.bindingNavigatorAddNewItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorAddNewItem.Image")));
this.bindingNavigatorAddNewItem.Name = "bindingNavigatorAddNewItem";
this.bindingNavigatorAddNewItem.RightToLeftAutoMirrorImage = true;
this.bindingNavigatorAddNewItem.Size = new System.Drawing.Size(79, 22);
this.bindingNavigatorAddNewItem.Text = "새로 추가";
//
// bs
//
this.bs.DataMember = "Component_Reel_RegExRule";
this.bs.DataSource = this.dataSet1;
this.bs.Sort = "CustCode,Seq";
this.bs.CurrentChanged += new System.EventHandler(this.bs_CurrentChanged);
//
// dataSet1
//
this.dataSet1.DataSetName = "DataSet1";
this.dataSet1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
//
// bindingNavigatorCountItem
//
this.bindingNavigatorCountItem.Name = "bindingNavigatorCountItem";
this.bindingNavigatorCountItem.Size = new System.Drawing.Size(27, 22);
this.bindingNavigatorCountItem.Text = "/{0}";
this.bindingNavigatorCountItem.ToolTipText = "전체 항목 수";
//
// bindingNavigatorDeleteItem
//
this.bindingNavigatorDeleteItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorDeleteItem.Image")));
this.bindingNavigatorDeleteItem.Name = "bindingNavigatorDeleteItem";
this.bindingNavigatorDeleteItem.RightToLeftAutoMirrorImage = true;
this.bindingNavigatorDeleteItem.Size = new System.Drawing.Size(51, 22);
this.bindingNavigatorDeleteItem.Text = "삭제";
//
// bindingNavigatorMoveFirstItem
//
this.bindingNavigatorMoveFirstItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.bindingNavigatorMoveFirstItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveFirstItem.Image")));
this.bindingNavigatorMoveFirstItem.Name = "bindingNavigatorMoveFirstItem";
this.bindingNavigatorMoveFirstItem.RightToLeftAutoMirrorImage = true;
this.bindingNavigatorMoveFirstItem.Size = new System.Drawing.Size(23, 22);
this.bindingNavigatorMoveFirstItem.Text = "처음으로 이동";
//
// bindingNavigatorMovePreviousItem
//
this.bindingNavigatorMovePreviousItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.bindingNavigatorMovePreviousItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMovePreviousItem.Image")));
this.bindingNavigatorMovePreviousItem.Name = "bindingNavigatorMovePreviousItem";
this.bindingNavigatorMovePreviousItem.RightToLeftAutoMirrorImage = true;
this.bindingNavigatorMovePreviousItem.Size = new System.Drawing.Size(23, 22);
this.bindingNavigatorMovePreviousItem.Text = "이전으로 이동";
//
// bindingNavigatorSeparator
//
this.bindingNavigatorSeparator.Name = "bindingNavigatorSeparator";
this.bindingNavigatorSeparator.Size = new System.Drawing.Size(6, 25);
//
// bindingNavigatorPositionItem
//
this.bindingNavigatorPositionItem.AccessibleName = "위치";
this.bindingNavigatorPositionItem.AutoSize = false;
this.bindingNavigatorPositionItem.Font = new System.Drawing.Font("맑은 고딕", 9F);
this.bindingNavigatorPositionItem.Name = "bindingNavigatorPositionItem";
this.bindingNavigatorPositionItem.Size = new System.Drawing.Size(50, 23);
this.bindingNavigatorPositionItem.Text = "0";
this.bindingNavigatorPositionItem.ToolTipText = "현재 위치";
//
// bindingNavigatorSeparator1
//
this.bindingNavigatorSeparator1.Name = "bindingNavigatorSeparator1";
this.bindingNavigatorSeparator1.Size = new System.Drawing.Size(6, 25);
//
// bindingNavigatorMoveNextItem
//
this.bindingNavigatorMoveNextItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.bindingNavigatorMoveNextItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveNextItem.Image")));
this.bindingNavigatorMoveNextItem.Name = "bindingNavigatorMoveNextItem";
this.bindingNavigatorMoveNextItem.RightToLeftAutoMirrorImage = true;
this.bindingNavigatorMoveNextItem.Size = new System.Drawing.Size(23, 22);
this.bindingNavigatorMoveNextItem.Text = "다음으로 이동";
//
// bindingNavigatorMoveLastItem
//
this.bindingNavigatorMoveLastItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.bindingNavigatorMoveLastItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveLastItem.Image")));
this.bindingNavigatorMoveLastItem.Name = "bindingNavigatorMoveLastItem";
this.bindingNavigatorMoveLastItem.RightToLeftAutoMirrorImage = true;
this.bindingNavigatorMoveLastItem.Size = new System.Drawing.Size(23, 22);
this.bindingNavigatorMoveLastItem.Text = "마지막으로 이동";
//
// bindingNavigatorSeparator2
//
this.bindingNavigatorSeparator2.Name = "bindingNavigatorSeparator2";
this.bindingNavigatorSeparator2.Size = new System.Drawing.Size(6, 25);
//
// component_Reel_RegExRuleBindingNavigatorSaveItem
//
this.component_Reel_RegExRuleBindingNavigatorSaveItem.Image = ((System.Drawing.Image)(resources.GetObject("component_Reel_RegExRuleBindingNavigatorSaveItem.Image")));
this.component_Reel_RegExRuleBindingNavigatorSaveItem.Name = "component_Reel_RegExRuleBindingNavigatorSaveItem";
this.component_Reel_RegExRuleBindingNavigatorSaveItem.Size = new System.Drawing.Size(91, 22);
this.component_Reel_RegExRuleBindingNavigatorSaveItem.Text = "데이터 저장";
this.component_Reel_RegExRuleBindingNavigatorSaveItem.Click += new System.EventHandler(this.component_Reel_RegExRuleBindingNavigatorSaveItem_Click);
//
// toolStripButton1
//
this.toolStripButton1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButton1.Name = "toolStripButton1";
this.toolStripButton1.Size = new System.Drawing.Size(66, 22);
this.toolStripButton1.Text = "Refresh";
this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click);
//
// dv1
//
this.dv1.AutoGenerateColumns = false;
this.dv1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
this.dv1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dv1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.dataGridViewCheckBoxColumn1,
this.IsIgnore,
this.dataGridViewTextBoxColumn1,
this.dataGridViewTextBoxColumn2,
this.dataGridViewTextBoxColumn5,
this.dataGridViewTextBoxColumn3,
this.dataGridViewTextBoxColumn4,
this.dataGridViewCheckBoxColumn2,
this.dataGridViewCheckBoxColumn3});
this.dv1.DataSource = this.bs;
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle4.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle4.Padding = new System.Windows.Forms.Padding(0, 3, 0, 3);
dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dv1.DefaultCellStyle = dataGridViewCellStyle4;
this.dv1.Dock = System.Windows.Forms.DockStyle.Fill;
this.dv1.Location = new System.Drawing.Point(0, 0);
this.dv1.Name = "dv1";
this.dv1.RowTemplate.Height = 23;
this.dv1.Size = new System.Drawing.Size(967, 557);
this.dv1.TabIndex = 2;
//
// dataGridViewCheckBoxColumn1
//
this.dataGridViewCheckBoxColumn1.DataPropertyName = "IsEnable";
this.dataGridViewCheckBoxColumn1.HeaderText = "사용";
this.dataGridViewCheckBoxColumn1.Name = "dataGridViewCheckBoxColumn1";
//
// IsIgnore
//
this.IsIgnore.DataPropertyName = "IsIgnore";
this.IsIgnore.HeaderText = "제외";
this.IsIgnore.Name = "IsIgnore";
//
// dataGridViewTextBoxColumn1
//
this.dataGridViewTextBoxColumn1.DataPropertyName = "Id";
dataGridViewCellStyle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
this.dataGridViewTextBoxColumn1.DefaultCellStyle = dataGridViewCellStyle1;
this.dataGridViewTextBoxColumn1.HeaderText = "Id";
this.dataGridViewTextBoxColumn1.Name = "dataGridViewTextBoxColumn1";
this.dataGridViewTextBoxColumn1.ReadOnly = true;
//
// dataGridViewTextBoxColumn2
//
this.dataGridViewTextBoxColumn2.DataPropertyName = "Seq";
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.dataGridViewTextBoxColumn2.DefaultCellStyle = dataGridViewCellStyle2;
this.dataGridViewTextBoxColumn2.HeaderText = "Seq";
this.dataGridViewTextBoxColumn2.Name = "dataGridViewTextBoxColumn2";
//
// dataGridViewTextBoxColumn5
//
this.dataGridViewTextBoxColumn5.DataPropertyName = "Symbol";
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.dataGridViewTextBoxColumn5.DefaultCellStyle = dataGridViewCellStyle3;
this.dataGridViewTextBoxColumn5.HeaderText = "Symbol";
this.dataGridViewTextBoxColumn5.Name = "dataGridViewTextBoxColumn5";
//
// dataGridViewTextBoxColumn3
//
this.dataGridViewTextBoxColumn3.DataPropertyName = "CustCode";
this.dataGridViewTextBoxColumn3.HeaderText = "CustCode";
this.dataGridViewTextBoxColumn3.Name = "dataGridViewTextBoxColumn3";
//
// dataGridViewTextBoxColumn4
//
this.dataGridViewTextBoxColumn4.DataPropertyName = "Description";
this.dataGridViewTextBoxColumn4.HeaderText = "Description";
this.dataGridViewTextBoxColumn4.Name = "dataGridViewTextBoxColumn4";
//
// dataGridViewCheckBoxColumn2
//
this.dataGridViewCheckBoxColumn2.DataPropertyName = "IsTrust";
this.dataGridViewCheckBoxColumn2.HeaderText = "Trust";
this.dataGridViewCheckBoxColumn2.Name = "dataGridViewCheckBoxColumn2";
//
// dataGridViewCheckBoxColumn3
//
this.dataGridViewCheckBoxColumn3.DataPropertyName = "IsAmkStd";
this.dataGridViewCheckBoxColumn3.HeaderText = "AmkStd";
this.dataGridViewCheckBoxColumn3.Name = "dataGridViewCheckBoxColumn3";
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 122F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Controls.Add(this.label1, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.label2, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.textBox1, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.textBox2, 1, 1);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 557);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 2;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(967, 179);
this.tableLayoutPanel1.TabIndex = 4;
//
// label1
//
this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
this.label1.Location = new System.Drawing.Point(3, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(116, 89);
this.label1.TabIndex = 0;
this.label1.Text = "Pattern";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label2
//
this.label2.Dock = System.Windows.Forms.DockStyle.Fill;
this.label2.Location = new System.Drawing.Point(3, 89);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(116, 90);
this.label2.TabIndex = 0;
this.label2.Text = "Groups";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// textBox1
//
this.textBox1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bs, "Pattern", true));
this.textBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.textBox1.Font = new System.Drawing.Font("Consolas", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.textBox1.ForeColor = System.Drawing.Color.Black;
this.textBox1.Location = new System.Drawing.Point(125, 3);
this.textBox1.Multiline = true;
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(839, 83);
this.textBox1.TabIndex = 1;
//
// textBox2
//
this.textBox2.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bs, "Groups", true));
this.textBox2.Dock = System.Windows.Forms.DockStyle.Fill;
this.textBox2.Font = new System.Drawing.Font("Consolas", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.textBox2.ForeColor = System.Drawing.Color.Black;
this.textBox2.Location = new System.Drawing.Point(125, 92);
this.textBox2.Multiline = true;
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(839, 84);
this.textBox2.TabIndex = 1;
//
// ta
//
this.ta.ClearBeforeFill = true;
//
// tam
//
this.tam.BackupDataSetBeforeUpdate = false;
this.tam.Component_Reel_CustInfoTableAdapter = null;
this.tam.Component_Reel_PreSetTableAdapter = null;
this.tam.Component_Reel_Print_InformationTableAdapter = null;
this.tam.Component_Reel_PrintRegExRuleTableAdapter = null;
this.tam.Component_Reel_RegExRuleTableAdapter = this.ta;
this.tam.Component_Reel_ResultTableAdapter = null;
this.tam.Component_Reel_SID_ConvertTableAdapter = null;
this.tam.Component_Reel_SID_InformationTableAdapter = null;
this.tam.UpdateOrder = Project.DataSet1TableAdapters.TableAdapterManager.UpdateOrderOption.InsertUpdateDelete;
//
// toolStripButton2
//
this.toolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton2.Image")));
this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButton2.Name = "toolStripButton2";
this.toolStripButton2.Size = new System.Drawing.Size(83, 22);
this.toolStripButton2.Text = "Export List";
this.toolStripButton2.Click += new System.EventHandler(this.toolStripButton2_Click);
//
// RegExRule
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(967, 761);
this.Controls.Add(this.dv1);
this.Controls.Add(this.tableLayoutPanel1);
this.Controls.Add(this.bn);
this.Name = "RegExRule";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "RegExRule";
this.Load += new System.EventHandler(this.RegExRule_Load);
((System.ComponentModel.ISupportInitialize)(this.bn)).EndInit();
this.bn.ResumeLayout(false);
this.bn.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.bs)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dataSet1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dv1)).EndInit();
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private DataSet1 dataSet1;
private System.Windows.Forms.BindingSource bs;
private DataSet1TableAdapters.Component_Reel_RegExRuleTableAdapter ta;
private DataSet1TableAdapters.TableAdapterManager tam;
private System.Windows.Forms.BindingNavigator bn;
private System.Windows.Forms.ToolStripButton bindingNavigatorAddNewItem;
private System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem;
private System.Windows.Forms.ToolStripButton bindingNavigatorDeleteItem;
private System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem;
private System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem;
private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator;
private System.Windows.Forms.ToolStripTextBox bindingNavigatorPositionItem;
private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator1;
private System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem;
private System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem;
private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator2;
private System.Windows.Forms.ToolStripButton component_Reel_RegExRuleBindingNavigatorSaveItem;
private System.Windows.Forms.DataGridView dv1;
private System.Windows.Forms.ToolStripButton toolStripButton1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.DataGridViewCheckBoxColumn dataGridViewCheckBoxColumn1;
private System.Windows.Forms.DataGridViewCheckBoxColumn IsIgnore;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn1;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn2;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn5;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn3;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn4;
private System.Windows.Forms.DataGridViewCheckBoxColumn dataGridViewCheckBoxColumn2;
private System.Windows.Forms.DataGridViewCheckBoxColumn dataGridViewCheckBoxColumn3;
private System.Windows.Forms.ToolStripButton toolStripButton2;
}
}

View File

@@ -0,0 +1,102 @@
using AR;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Project.Dialog
{
public partial class RegExRule : Form
{
public RegExRule()
{
InitializeComponent();
this.dataSet1.Component_Reel_RegExRule.TableNewRow += (s1, e1) => {
if(PUB.Result.isSetvModel)
e1.Row["CustCode"] = PUB.Result.vModel.Title;
};
}
private void RegExRule_Load(object sender, EventArgs e)
{
RefreshList(PUB.Result.vModel.Title);
}
private void component_Reel_RegExRuleBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.bs.EndEdit();
this.tam.UpdateAll(this.dataSet1);
var modelName = PUB.Result.vModel.Title;
PUB.Result.BCDPattern = PUB.GetPatterns(modelName, false);
PUB.Result.BCDIgnorePattern = PUB.GetPatterns(modelName, true);
PUB.log.Add($"모델패턴로딩:{PUB.Result.BCDPattern.Count}/{PUB.Result.BCDIgnorePattern.Count}");
}
private void RefreshList(string cust)
{
try
{
this.ta.FillByWithSample(this.dataSet1.Component_Reel_RegExRule, cust);
foreach(DataGridViewRow drow in this.dv1.Rows)
{
var drv = drow.DataBoundItem as DataRowView;
if (drv == null) continue;
var dr = drv.Row as DataSet1.Component_Reel_RegExRuleRow;
if (dr.IsCustCodeNull() || dr.CustCode.isEmpty())
drow.DefaultCellStyle.BackColor = Color.DimGray;
else
drow.DefaultCellStyle.BackColor = Color.WhiteSmoke;
}
dv1.AutoResizeColumns();
}
catch (System.Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
RefreshList(PUB.Result.vModel.Title);
}
private void bs_CurrentChanged(object sender, EventArgs e)
{
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.Component_Reel_RegExRuleRow;
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
try
{
DataSet1 ds1 = new DataSet1();
this.ta.FillAll(ds1.Component_Reel_RegExRule);
var path = UTIL.MakePath("Export", "BarcodeRule.xml");
var fi = new System.IO.FileInfo(path);
if (fi.Directory.Exists == false) fi.Directory.Create();
ds1.Component_Reel_RegExRule.WriteXml(path);
UTIL.MsgI($"Export list File = {path},count={ds1.Component_Reel_RegExRule.Count}");
}
catch (System.Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
}
}
}

View File

@@ -0,0 +1,240 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="bn.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>316, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="bindingNavigatorAddNewItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wAAADsABataJCQAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC
pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++
Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ
/5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA
zpX/v6RC8f/fWzFAjeH/p+Zp/J+QpfW/O0P3f3uq/v/mREPCYTIb6E+Qc//dCPjfk6FDWAM6APnz3w1/
IPb735qsT7oB3em6YP+CcH2cEekGtCQZ/G+IN/xfE2v8vzLahHQD6AQYGAAkI9iedfyIaQAAAABJRU5E
rkJggg==
</value>
</data>
<metadata name="bs.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>117, 17</value>
</metadata>
<metadata name="dataSet1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="bindingNavigatorDeleteItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wAAADsABataJCQAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC
DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC
rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV
i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG
86CNhdrsX9a/uQZTPhQl4rMY4OLofbl3aX7I8uwPC7y/g1YdjyVJuEvT8e1tfwUYteHUxCCfHChDeHmG
QQvokjlOU+PbWA0x3pZnILVVI3uvQyHsbiLnqnGmRCF1NYD8pDhpRxOH7HQoAKZGkFKjceszQbpSrumX
bO+G80MFwKUTxgfgcO/b8D9IpXoFiiMDHIQm0skAAAAASUVORK5CYII=
</value>
</data>
<data name="bindingNavigatorMoveFirstItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wAAADsABataJCQAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77
wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0
v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg
UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA
Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu
lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII=
</value>
</data>
<data name="bindingNavigatorMovePreviousItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wAAADsABataJCQAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w
5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f
Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+
08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC
</value>
</data>
<data name="bindingNavigatorMoveNextItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wAAADsABataJCQAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78
n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI
N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f
oAc0QjgAAAAASUVORK5CYII=
</value>
</data>
<data name="bindingNavigatorMoveLastItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wAAADsABataJCQAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+//
h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B
twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA
kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG
WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9
8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg==
</value>
</data>
<data name="component_Reel_RegExRuleBindingNavigatorSaveItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wAAADsABataJCQAAAExJREFUOE9joAr49u3bf1IxVCsEgAWC58Dxh/cf4RhZDETHTNiHaQgpBoAwzBCo
dtINAGGiDUDGyGpoawAxeNSAQWkAORiqnRLAwAAA9EMMU8Daa3MAAAAASUVORK5CYII=
</value>
</data>
<data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
<data name="toolStripButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
<metadata name="IsIgnore.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ta.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>181, 17</value>
</metadata>
<metadata name="tam.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>243, 17</value>
</metadata>
</root>

View File

@@ -0,0 +1,142 @@
namespace Project.Dialog
{
partial class RegExTest
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RegExTest));
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.button1 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox();
this.button2 = new System.Windows.Forms.Button();
this.progressBar1 = new System.Windows.Forms.ProgressBar();
this.rtLog = new System.Windows.Forms.RichTextBox();
this.SuspendLayout();
//
// richTextBox1
//
this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Top;
this.richTextBox1.Location = new System.Drawing.Point(0, 0);
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.Size = new System.Drawing.Size(800, 224);
this.richTextBox1.TabIndex = 0;
this.richTextBox1.Text = resources.GetString("richTextBox1.Text");
//
// button1
//
this.button1.Dock = System.Windows.Forms.DockStyle.Top;
this.button1.Location = new System.Drawing.Point(0, 245);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(800, 52);
this.button1.TabIndex = 1;
this.button1.Text = "Run List";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// textBox1
//
this.textBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
this.textBox1.Dock = System.Windows.Forms.DockStyle.Top;
this.textBox1.Location = new System.Drawing.Point(0, 224);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(800, 21);
this.textBox1.TabIndex = 2;
this.textBox1.Text = "\\b(\\d{9});(\\w+)\\b";
this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// textBox2
//
this.textBox2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
this.textBox2.Dock = System.Windows.Forms.DockStyle.Top;
this.textBox2.Location = new System.Drawing.Point(0, 297);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(800, 21);
this.textBox2.TabIndex = 3;
this.textBox2.Text = "5000";
this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// button2
//
this.button2.Dock = System.Windows.Forms.DockStyle.Top;
this.button2.Location = new System.Drawing.Point(0, 318);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(800, 52);
this.button2.TabIndex = 4;
this.button2.Text = "Run";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// progressBar1
//
this.progressBar1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.progressBar1.Location = new System.Drawing.Point(0, 550);
this.progressBar1.Name = "progressBar1";
this.progressBar1.Size = new System.Drawing.Size(800, 23);
this.progressBar1.TabIndex = 5;
//
// rtLog
//
this.rtLog.BackColor = System.Drawing.Color.Silver;
this.rtLog.Dock = System.Windows.Forms.DockStyle.Fill;
this.rtLog.Location = new System.Drawing.Point(0, 370);
this.rtLog.Name = "rtLog";
this.rtLog.Size = new System.Drawing.Size(800, 180);
this.rtLog.TabIndex = 6;
this.rtLog.Text = "";
//
// RegExTest
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 573);
this.Controls.Add(this.rtLog);
this.Controls.Add(this.progressBar1);
this.Controls.Add(this.button2);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.richTextBox1);
this.Name = "RegExTest";
this.Text = "RegExTest";
this.Load += new System.EventHandler(this.RegExTest_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.RichTextBox richTextBox1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.ProgressBar progressBar1;
private System.Windows.Forms.RichTextBox rtLog;
}
}

View File

@@ -0,0 +1,116 @@
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;
using System.Text.RegularExpressions;
namespace Project.Dialog
{
public partial class RegExTest : Form
{
Regex regex = null;
public RegExTest()
{
InitializeComponent();
}
private void RegExTest_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
bool retval = false;
//이 데이터가 정규식에 match 가되는지 확인하.ㄴㄷ
var ucnt = 0;
var MatchEx = textBox1.Text.Trim();
var lines = this.richTextBox1.Text.Replace("\r", "").Split('\n');
foreach (var line in lines)
{
var vdata = line.Split(':')[1];
if (vdata.isEmpty()) continue;
regex = new Regex(MatchEx); //한글 3글자
if (regex.IsMatch(vdata))
{
var MatchIndex = 0;
var GroupIndex = 0;
var matchlist = regex.Matches(vdata);
var match0 = matchlist[MatchIndex];
var grpval = match0.Groups[GroupIndex].Value;
var result = grpval.Trim();
//if (dr.ReplaceEx.isEmpty() == false && dr.ReplaceStr.isEmpty() == false)
//{
// regex = new Regex(dr.ReplaceEx);
// if (regex.IsMatch(result)) result = regex.Replace(result, dr.ReplaceStr);
//}
//ucnt += 1;
//switch (dr.varName)
//{
// case "QTY0":
// vdata.QTY0 = result;
// vdata.QTYRQ = vdata.StartsWith("RQ");
// break;
// case "SID":
// vdata.SID = result;
// break;
// case "LOT":
// vdata.VLOT = result;
// break;
// case "PART":
// vdata.PARTNO = result;
// break;
// case "MFGDATE":
// vdata.MFGDATE = result;
// break;
// case "QTY":
// vdata.QTY = result;
// break;
// default:
// ucnt -= 1;
// PUB.log.AddAT($"RegEx 대상 VarName을 찾을 수 없습니다. 값:{dr.varName}");
// break;
//}
}
}
}
private void button2_Click(object sender, EventArgs e)
{
var pattern = textBox1.Text.Trim();
try
{
regex = new Regex(pattern); //한글 3글자
if (regex.IsMatch(textBox2.Text.Trim()))
{
setlog("match");
}
else setlog($"no match\npattern:{pattern}\nValue:{textBox2.Text}");
}
catch (Exception ex)
{
setlog(ex.Message);
}
}
void addlog(string m)
{
this.rtLog.AppendText(m + "\r\n");
}
void setlog(string m)
{
this.rtLog.Text = m;
}
}
}

View File

@@ -0,0 +1,306 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="richTextBox1.Text" xml:space="preserve">
<value>11:101410655; 0459497206:1202 / 569:1305 / 643:1300 / 651:1195 / 579:1250 / 610
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1437 / 673:1482 / 705:1450 / 752:1405 / 719:1444 / 712
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1437 / 673:1482 / 705:1450 / 752:1405 / 719:1443 / 712
11:RM TMK021 CG1R9BK - W JDQ 1:1023 / 922:1193 / 1064:1186 / 1074:1008 / 944:1102 / 1001
11:045949720600000500002003AJ1001W: 997 / 993:1138 / 1108:1126 / 1124:986 / 1009:1062 / 1059
11:101410655:1235 / 517:1300 / 550:1287 / 569:1212 / 551:1258 / 547
11:101410655:1233 / 521:1300 / 550:1287 / 569:1212 / 551:1258 / 548
11:RM TMK021 CG1R9BK - W JDQ 1:1023 / 922:1194 / 1063:1186 / 1073:1009 / 943:1103 / 1000
11:045949720600000500002003AJ1001W: 997 / 992:1138 / 1109:1127 / 1124:987 / 1008:1062 / 1058
11:04594972060003:1353 / 704:1420 / 755:1408 / 771:1340 / 723:1380 / 738
11:101410655; 0459497206:1205 / 562:1304 / 644:1300 / 651:1194 / 577:1251 / 608
11:045949720600000500002003AJ1001W: 999 / 992:1138 / 1108:1126 / 1124:986 / 1009:1062 / 1058
11:RM TMK021 CG1R9BK - W JDQ 1:1023 / 920:1193 / 1064:1179 / 1084:1008 / 942:1101 / 1003
11:101410655:1235 / 517:1300 / 550:1286 / 570:1228 / 527:1262 / 541
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1437 / 673:1482 / 705:1450 / 751:1405 / 719:1443 / 712
11:045949720600000500002003AJ1001W: 999 / 994:1138 / 1109:1126 / 1125:988 / 1009:1063 / 1059
11:RM TMK021 CG1R9BK - W JDQ 1:1023 / 922:1194 / 1064:1186 / 1073:1009 / 943:1103 / 1001
11:101410655; 0459497206:1206 / 563:1305 / 643:1299 / 652:1195 / 578:1252 / 609
11:04594972060003:1351 / 706:1419 / 754:1408 / 771:1324 / 745:1376 / 744
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1437 / 673:1482 / 705:1450 / 752:1405 / 719:1443 / 712
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1437 / 673:1482 / 705:1450 / 752:1405 / 719:1444 / 712
11:RM TMK021 CG1R9BK - W JDQ 1:1022 / 920:1193 / 1063:1186 / 1074:1007 / 942:1102 / 1000
11:045949720600000500002003AJ1001W: 998 / 994:1138 / 1109:1126 / 1125:988 / 1008:1063 / 1059
11:0459497206:1226 / 534:1271 / 579:1244 / 614:1211 / 553:1238 / 570
11:045949720600000500002003AJ1001W: 997 / 992:1138 / 1109:1127 / 1123:986 / 1007:1062 / 1058
11:RM TMK021 CG1R9BK - W JDQ 1:1023 / 922:1194 / 1064:1186 / 1074:1009 / 943:1103 / 1001
11:045949720600000500002003AJ1001W: 999 / 995:1138 / 1108:1127 / 1124:988 / 1010:1063 / 1059
11:045949720600000500002003AJ1001W: 997 / 993:1138 / 1108:1126 / 1124:986 / 1009:1062 / 1059
11:RM TMK021 CG1R9BK - W JDQ 1:1023 / 922:1195 / 1062:1186 / 1073:1009 / 943:1103 / 1000
11:101410655; 0459497206:1202 / 566:1306 / 640:1299 / 650:1197 / 574:1251 / 607
11:04594972060003:1334 / 711:1401 / 762:1396 / 768:1313 / 740:1361 / 746
11:0459497206:1197 / 527:1244 / 573:1239 / 581:1187 / 543:1217 / 556
11:RM TMK021 CG1R9BK - W JDQ 1:980 / 906:1151 / 1049:1143 / 1059:972 / 918:1062 / 983
11:04594972060003:1300 / 701:1367 / 751:1361 / 759:1295 / 708:1330 / 729
11:045949720600000500002003AJ1001W: 940 / 972:1079 / 1089:1066 / 1105:929 / 988:1003 / 1038
11:101410655; 0459497206:1194 / 552:1291 / 636:1284 / 646:1178 / 576:1237 / 603
11:045949720600000500002003AJ1001W: 953 / 979:1092 / 1094:1080 / 1110:943 / 993:1017 / 1044
11:RM TMK021 CG1R9BK - W JDQ 1:957 / 888:1123 / 1036:1113 / 1049:943 / 907:1034 / 970
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1413 / 663:1458 / 696:1425 / 742:1380 / 710:1419 / 703
11:04594972060003:1331 / 711:1407 / 749:1395 / 768:1326 / 718:1365 / 737
11:RM TMK021 CG1R9BK - W JDQ 1:1011 / 917:1181 / 1059:1168 / 1076:1001 / 932:1090 / 996
11:045949720600000500002003AJ1001W: 983 / 990:1123 / 1108:1112 / 1123:973 / 1005:1048 / 1056
11:101410655; 0459497206:1189 / 565:1300 / 630:1287 / 648:1183 / 573:1240 / 604
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1424 / 670:1469 / 702:1437 / 749:1392 / 716:1431 / 709
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1424 / 670:1469 / 702:1437 / 749:1392 / 716:1431 / 709
11:RM TMK021 CG1R9BK - W JDQ 1:1012 / 917:1182 / 1059:1172 / 1071:1001 / 932:1092 / 995
11:045949720600000500002003AJ1001W: 984 / 992:1125 / 1104:1112 / 1122:973 / 1006:1049 / 1056
11:20200328:1334 / 712:1372 / 759:1358 / 778:1310 / 744:1343 / 748
11:04594972060003:1340 / 701:1402 / 759:1395 / 769:1329 / 716:1367 / 736
11:RM TMK021 CG1R9BK - W JDQ 1:1012 / 918:1181 / 1059:1172 / 1071:1002 / 932:1092 / 995
11:045949720600000500002003AJ1001W: 985 / 992:1125 / 1105:1113 / 1122:970 / 1011:1048 / 1058
11:101410655; 0459497206:1190 / 568:1293 / 643:1287 / 652:1183 / 578:1238 / 610
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1425 / 671:1470 / 703:1438 / 749:1392 / 717:1431 / 710
11:RM TMK021 CG1R9BK - W JDQ 1:1012 / 924:1183 / 1064:1174 / 1076:1003 / 937:1093 / 1000
11:045949720600000500002003AJ1001W: 986 / 997:1124 / 1114:1113 / 1128:972 / 1016:1049 / 1064
11:04594972060003:1342 / 711:1407 / 764:1399 / 775:1323 / 738:1368 / 747
11:101410655; 0459497206:1190 / 575:1299 / 644:1289 / 658:1185 / 583:1241 / 615
11:101410655; 0459497206:1193 / 574:1302 / 641:1289 / 658:1186 / 584:1243 / 614
11:RM TMK021 CG1R9BK - W JDQ 1:1014 / 926:1186 / 1066:1177 / 1078:999 / 949:1094 / 1005
11:045949720600000500002003AJ1001W: 989 / 1000:1128 / 1113:1118 / 1127:978 / 1014:1053 / 1063
11:04594972060003:1337 / 713:1407 / 752:1395 / 778:1323 / 733:1365 / 744
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1426 / 672:1471 / 705:1438 / 751:1393 / 719:1432 / 712
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1425 / 672:1470 / 704:1437 / 751:1393 / 719:1431 / 711
11:045949720600000500002003AJ1001W: 984 / 992:1124 / 1107:1111 / 1123:973 / 1006:1048 / 1057
11:RM TMK021 CG1R9BK - W JDQ 1:1006 / 910:1173 / 1058:1164 / 1071:990 / 931:1083 / 993
11:RM TMK021 CG1R9BK - W JDQ 1:1000 / 927:1173 / 1061:1164 / 1073:991 / 939:1082 / 1000
11:045949720600000500002003AJ1001W: 985 / 992:1122 / 1109:1111 / 1123:970 / 1012:1047 / 1059
11:04594972060003:1335 / 712:1402 / 760:1395 / 771:1327 / 722:1365 / 741
11:101410655; 0459497206:1189 / 568:1298 / 635:1287 / 651:1183 / 578:1239 / 608
11:101410655:1230 / 506:1288 / 550:1276 / 566:1211 / 531:1251 / 538
11:045949720600000500002003AJ1001W: 986 / 992:1125 / 1107:1113 / 1123:974 / 1008:1050 / 1058
11:RM TMK021 CG1R9BK - W JDQ 1:1013 / 921:1182 / 1061:1172 / 1075:1004 / 935:1093 / 998
11:045949720600000500002003AJ1001W: 985 / 991:1134 / 1096:1114 / 1121:973 / 1008:1052 / 1054
11:101410655:1231 / 507:1281 / 558:1275 / 568:1215 / 526:1251 / 540
11:0459497206:1212 / 532:1263 / 569:1250 / 588:1201 / 547:1232 / 559
11:101410655:1229 / 506:1282 / 557:1276 / 566:1216 / 525:1251 / 539
11:TAIYOYUDEN: 1179 / 583:1263 / 643:1250 / 661:1166 / 603:1215 / 623
11:4200139801002J1002AS: 1141 / 637:1256 / 723:1252 / 729:1135 / 646:1196 / 684
11:20200328:1319 / 732:1365 / 769:1358 / 778:1309 / 745:1338 / 756
11:045949720600000500002003AJ1001W: 985 / 991:1125 / 1107:1113 / 1123:973 / 1008:1049 / 1057
11:RM TMK021 CG1R9BK - W JDQ 1:1013 / 924:1186 / 1064:1175 / 1078:1005 / 937:1095 / 1001
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1426 / 672:1471 / 704:1438 / 751:1393 / 718:1432 / 711
11:045949720600000500002003AJ1001W: 987 / 994:1127 / 1108:1116 / 1123:976 / 1008:1052 / 1058
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1426 / 672:1471 / 705:1439 / 751:1393 / 719:1432 / 712
11:RM TMK021 CG1R9BK - W JDQ 1:1012 / 921:1183 / 1061:1174 / 1074:997 / 943:1091 / 1000
11:045949720600000500002003AJ1001W: 986 / 991:1135 / 1096:1115 / 1121:974 / 1007:1052 / 1054
11:0459497206:1230 / 506:1264 / 568:1252 / 588:1199 / 550:1236 / 553
11:04594972060003:1341 / 701:1402 / 760:1395 / 770:1326 / 721:1366 / 738
11:RM TMK021 CG1R9BK - W JDQ 1:1012 / 922:1182 / 1061:1174 / 1073:1005 / 932:1093 / 997
11:045949720600000500002003AJ1001W: 983 / 999:1126 / 1106:1114 / 1123:975 / 1010:1049 / 1059
11:0459497206:1224 / 517:1258 / 578:1251 / 588:1199 / 551:1233 / 558
11:TAIYOYUDEN: 1171 / 596:1258 / 652:1251 / 662:1167 / 603:1212 / 628
11:RM TMK021 CG1R9BK - W JDQ 1:1012 / 919:1182 / 1061:1173 / 1073:1004 / 932:1093 / 997
11:045949720600000500002003AJ1001W: 985 / 994:1125 / 1108:1113 / 1123:976 / 1007:1050 / 1058
11:04594972060003:1335 / 712:1404 / 758:1391 / 781:1327 / 723:1364 / 743
11:TAIYOYUDEN: 1173 / 592:1260 / 648:1250 / 661:1167 / 601:1212 / 626
11:0459497206:1211 / 536:1258 / 578:1251 / 588:1201 / 548:1231 / 563
11:045949720600000500002003AJ1001W: 986 / 992:1134 / 1097:1114 / 1122:974 / 1008:1052 / 1055
11:101410655; 0459497206:1190 / 569:1299 / 636:1288 / 650:1185 / 576:1240 / 608
11:RM TMK021 CG1R9BK - W JDQ 1:1012 / 919:1182 / 1060:1173 / 1073:1002 / 932:1092 / 996
11:04594972060003:1336 / 708:1402 / 760:1395 / 771:1327 / 722:1365 / 740
11:TAIYOYUDEN: 1177 / 590:1263 / 647:1231 / 692:1146 / 634:1204 / 641
11:045949720600000500002003AJ1001W: 987 / 992:1134 / 1096:1109 / 1127:975 / 1009:1051 / 1056
11:RM TMK021 CG1R9BK - W JDQ 1:1012 / 919:1182 / 1061:1173 / 1074:1003 / 932:1092 / 996
11:101410655; 0459497206:1197 / 557:1299 / 635:1287 / 650:1167 / 601:1238 / 611
11:04594972060003:1336 / 708:1402 / 760:1395 / 770:1327 / 721:1365 / 740
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1425 / 671:1470 / 704:1438 / 750:1393 / 718:1431 / 711
11:045949720600000500002003AJ1001W: 985 / 993:1134 / 1097:1113 / 1123:975 / 1006:1052 / 1055
11:20200328:1341 / 701:1367 / 766:1359 / 778:1310 / 746:1344 / 747
11:RM TMK021 CG1R9BK - W JDQ 1:1008 / 926:1183 / 1059:1173 / 1073:994 / 952:1089 / 1003
11:04594972060003:1335 / 711:1402 / 761:1396 / 771:1328 / 721:1365 / 741
11:RM TMK021 CG1R9BK - W JDQ 1:1012 / 919:1182 / 1061:1167 / 1079:1003 / 932:1091 / 998
11:045949720600000500002003AJ1001W: 986 / 992:1124 / 1108:1113 / 1123:970 / 1012:1048 / 1059
11:101410655; 0459497206:1192 / 564:1294 / 640:1287 / 651:1184 / 575:1239 / 607
11:04594972060003:1333 / 713:1409 / 753:1395 / 770:1328 / 721:1366 / 739
11:101410655:1229 / 506:1281 / 558:1276 / 566:1216 / 525:1251 / 539
11:RM TMK021 CG1R9BK - W JDQ 1:1011 / 920:1182 / 1061:1173 / 1073:1003 / 932:1092 / 996
11:045949720600000500002003AJ1001W: 985 / 992:1135 / 1096:1114 / 1123:974 / 1008:1052 / 1055
11:04594972060003:1336 / 707:1402 / 760:1395 / 770:1327 / 720:1365 / 740
11:101410655; 0459497206:1190 / 567:1299 / 635:1286 / 652:1183 / 578:1239 / 608
11:0459497206:1229 / 506:1264 / 569:1251 / 588:1199 / 550:1236 / 553
11:RM TMK021 CG1R9BK - W JDQ 1:1010 / 918:1183 / 1059:1172 / 1074:1001 / 930:1091 / 995
11:045949720600000500002003AJ1001W: 986 / 992:1135 / 1096:1114 / 1121:971 / 1012:1051 / 1055
11:101410655; 0459497206:1190 / 565:1294 / 641:1287 / 650:1184 / 575:1239 / 608
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1425 / 670:1470 / 703:1438 / 749:1393 / 717:1432 / 710
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1425 / 670:1471 / 703:1438 / 749:1393 / 717:1432 / 710
11:RM TMK021 CG1R9BK - W JDQ 1:1014 / 917:1185 / 1056:1177 / 1068:996 / 943:1093 / 996
11:045949720600000500002003AJ1001W: 988 / 989:1128 / 1104:1116 / 1119:978 / 1004:1053 / 1054
11:04594972060003:1335 / 705:1404 / 753:1397 / 763:1328 / 715:1366 / 734
11:04594972060003:1343 / 703:1409 / 751:1398 / 766:1332 / 716:1370 / 734
11:045949720600000500002003AJ1001W: 989 / 985:1131 / 1101:1117 / 1118:979 / 1000:1054 / 1051
11:RM TMK021 CG1R9BK - W JDQ 1:1017 / 912:1186 / 1054:1177 / 1066:1002 / 934:1096 / 991
11:101410655:1227 / 510:1291 / 544:1279 / 560:1203 / 543:1250 / 539
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1432 / 656:1477 / 689:1445 / 735:1400 / 703:1439 / 696
11:045949720600000500002003AJ1001W: 988 / 979:1129 / 1092:1117 / 1108:978 / 993:1053 / 1043
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1193 / 658:1238 / 691:1205 / 737:1161 / 704:1199 / 697
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1728 / 650:1774 / 683:1741 / 730:1695 / 697:1734 / 690
11:RM TMK021 CG1R9BK - W JDQ 1:1480 / 907:1654 / 1051:1645 / 1064:1466 / 929:1561 / 988
11:045949720600000500002003AJ1001W: 1453 / 981:1595 / 1099:1584 / 1113:1439 / 1001:1518 / 1049
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1192 / 650:1236 / 682:1204 / 728:1160 / 695:1198 / 689
11:04594972060003:1360 / 681:1420 / 741:1414 / 748:1346 / 701:1385 / 718
11:RM TMK021 CG1R9BK - W JDQ 1:1280 / 906:1458 / 1043:1445 / 1058:1266 / 928:1362 / 984
11:045949720600000500002003AJ1001W: 1257 / 977:1399 / 1094:1388 / 1108:1246 / 992:1322 / 1043
11:RM TMK021 CG1R9BK - W JDQ 1:1458 / 905:1634 / 1051:1624 / 1063:1449 / 917:1541 / 984
11:045949720600000500002003AJ1001W: 1431 / 981:1575 / 1098:1559 / 1118:1415 / 1005:1495 / 1050
11:0459497206:1663 / 516:1712 / 558:1705 / 568:1652 / 529:1683 / 543
11:101410655; 0459497206:1641 / 549:1748 / 623:1742 / 631:1636 / 556:1692 / 590
11:04594972060003:1796 / 688:1861 / 744:1854 / 753:1784 / 703:1824 / 722
11:RM TMK021 CG1R9BK - W JDQ 1:1456 / 908:1631 / 1049:1620 / 1064:1439 / 930:1536 / 987
11:045949720600000500002003AJ1001W: 1430 / 979:1569 / 1098:1558 / 1113:1419 / 994:1494 / 1046
11:04594972060003:1787 / 697:1859 / 744:1852 / 753:1782 / 703:1820 / 724
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1884 / 653:1931 / 686:1897 / 734:1850 / 701:1891 / 693
11:045949720600000500002003AJ1001W: 1431 / 982:1573 / 1099:1561 / 1113:1420 / 996:1496 / 1047
11:04594972060003:1796 / 686:1868 / 736:1845 / 761:1773 / 717:1821 / 725
11:RM TMK021 CG1R9BK - W JDQ 1:1459 / 908:1634 / 1048:1624 / 1062:1444 / 929:1540 / 987
11:101410655; 0459497206:1641 / 543:1751 / 615:1740 / 630:1634 / 554:1691 / 586
11:TAIYOYUDEN: 1616 / 562:1698 / 631:1693 / 638:1603 / 581:1653 / 603
11:045949720600000500002003AJ1001W: 1428 / 980:1572 / 1099:1559 / 1115:1416 / 997:1494 / 1048
11:RM TMK021 CG1R9BK - W JDQ 1:1450 / 906:1627 / 1049:1615 / 1065:1435 / 928:1532 / 987
11:101410655:1674 / 486:1729 / 537:1723 / 546:1644 / 530:1693 / 525
11:101410655; 0459497206:1635 / 549:1743 / 623:1735 / 635:1628 / 560:1685 / 592
1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1877 / 653:1925 / 686:1891 / 735:1844 / 701:1884 / 694
11:045949720600000500002003AJ1001W: 1426 / 987:1570 / 1102:1557 / 1118:1417 / 998:1493 / 1051
11:RM TMK021 CG1R9BK - W JDQ 1:1453 / 910:1627 / 1054:1618 / 1066:1437 / 934:1534 / 991
11:04594972060003:1791 / 686:1854 / 749:1849 / 756:1761 / 731:1814 / 730
11:045949720600000500002003AJ1001W: 1424 / 975:1576 / 1087:1554 / 1113:1409 / 1006:1491 / 1045
11:RM TMK021 CG1R9BK - W JDQ 1:1452 / 907:1625 / 1051:1616 / 1064:1434 / 933:1532 / 989
11:TAIYOYUDEN: 1616 / 573:1709 / 626:1695 / 645:1610 / 581:1658 / 606
11:101410655; 0459497206:1631 / 549:1748 / 615:1733 / 634:1625 / 559:1684 / 589
11:04594972060003:1783 / 696:1854 / 746:1849 / 754:1777 / 705:1816 / 725
11:045949720600000500002003AJ1001W: 1424 / 981:1573 / 1089:1556 / 1114:1414 / 996:1492 / 1045
11:RM TMK021 CG1R9BK - W JDQ 1:1452 / 907:1625 / 1051:1616 / 1064:1443 / 919:1534 / 985
11:101410655; 0459497206:1640 / 543:1744 / 620:1734 / 634:1627 / 558:1686 / 589
11:0459497206:1657 / 516:1705 / 559:1698 / 569:1647 / 528:1677 / 543
11:04594972060003:1789 / 686:1855 / 742:1847 / 753:1760 / 725:1813 / 727
11:RM TMK021 CG1R9BK - W JDQ 1:1449 / 911:1628 / 1049:1617 / 1063:1440 / 923:1533 / 986
11:045949720600000500002003AJ1001W: 1424 / 979:1565 / 1096:1549 / 1118:1414 / 994:1488 / 1047
11:101410655:1671 / 489:1733 / 529:1717 / 553:1655 / 512:1694 / 521
11:RM TMK021 CG1R9BK - W JDQ 1:1450 / 909:1626 / 1048:1614 / 1063:1443 / 919:1533 / 985
11:045949720600000500002003AJ1001W: 1423 / 982:1565 / 1098:1546 / 1122:1408 / 1001:1486 / 1051
11:101410655; 0459497206:1632 / 548:1740 / 624:1733 / 634:1625 / 558:1682 / 591
11:04594972060003:1783 / 696:1853 / 746:1846 / 755:1775 / 707:1814 / 726
11:101410655; 0459497206:1632 / 551:1742 / 620:1733 / 633:1626 / 559:1683 / 591
11:101410655:1672 / 486:1727 / 536:1721 / 546:1642 / 530:1690 / 524</value>
</data>
</root>

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
namespace Project
{
public partial class FMain
{
}
}

View File

@@ -0,0 +1,77 @@
namespace Project.Dialog
{
partial class UserControl1
{
/// <summary>
/// 필수 디자이너 변수입니다.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 사용 중인 모든 리소스를 정리합니다.
/// </summary>
/// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region
/// <summary>
/// 디자이너 지원에 필요한 메서드입니다.
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.numericUpDown1 = new System.Windows.Forms.NumericUpDown();
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit();
this.SuspendLayout();
//
// label1
//
this.label1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.label1.Dock = System.Windows.Forms.DockStyle.Left;
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
this.label1.ForeColor = System.Drawing.Color.White;
this.label1.Location = new System.Drawing.Point(0, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(105, 29);
this.label1.TabIndex = 0;
this.label1.Text = "label1";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// numericUpDown1
//
this.numericUpDown1.Dock = System.Windows.Forms.DockStyle.Fill;
this.numericUpDown1.Font = new System.Drawing.Font("Consolas", 14F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.numericUpDown1.Location = new System.Drawing.Point(105, 0);
this.numericUpDown1.Name = "numericUpDown1";
this.numericUpDown1.Size = new System.Drawing.Size(58, 29);
this.numericUpDown1.TabIndex = 1;
this.numericUpDown1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// UserControl1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.numericUpDown1);
this.Controls.Add(this.label1);
this.Name = "UserControl1";
this.Size = new System.Drawing.Size(163, 29);
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit();
this.ResumeLayout(false);
}
#endregion
public System.Windows.Forms.Label label1;
public System.Windows.Forms.NumericUpDown numericUpDown1;
}
}

View File

@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Project.Dialog
{
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,89 @@
namespace Project.Dialog
{
partial class fDataBufferSIDRef
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.lvSID = new System.Windows.Forms.ListView();
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.SuspendLayout();
//
// lvSID
//
this.lvSID.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1,
this.columnHeader2,
this.columnHeader3});
this.lvSID.Dock = System.Windows.Forms.DockStyle.Fill;
this.lvSID.FullRowSelect = true;
this.lvSID.GridLines = true;
this.lvSID.Location = new System.Drawing.Point(0, 0);
this.lvSID.Name = "lvSID";
this.lvSID.Size = new System.Drawing.Size(335, 457);
this.lvSID.TabIndex = 2;
this.lvSID.UseCompatibleStateImageBehavior = false;
this.lvSID.View = System.Windows.Forms.View.Details;
//
// columnHeader1
//
this.columnHeader1.Text = "SID";
this.columnHeader1.Width = 200;
//
// columnHeader2
//
this.columnHeader2.Text = "KPC";
this.columnHeader2.Width = 50;
//
// columnHeader3
//
this.columnHeader3.Text = "Unit";
//
// fDataBufferSID
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(335, 457);
this.Controls.Add(this.lvSID);
this.Name = "fDataBufferSID";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "SID Reference Buffer";
this.TopMost = true;
this.Load += new System.EventHandler(this.fDataBuffer_Load);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.ListView lvSID;
private System.Windows.Forms.ColumnHeader columnHeader1;
private System.Windows.Forms.ColumnHeader columnHeader2;
private System.Windows.Forms.ColumnHeader columnHeader3;
}
}

View File

@@ -0,0 +1,91 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Project.Dialog
{
public partial class fDataBufferSIDRef : Form
{
Boolean useMonitor = false;
public fDataBufferSIDRef()
{
InitializeComponent();
this.lvSID.Items.Clear();
var list = PUB.Result.SIDReference.Items;
foreach (var item in list)
{
var lv = this.lvSID.Items.Add(item.sid, string.Format("[{0}] {1}", lvSID.Items.Count + 1, item.sid), 0); //sid
lv.SubItems.Add(item.kpc.ToString()); //count
lv.SubItems.Add(item.unit);
}
PUB.Result.SIDReference.PropertyChanged += sidreflist_PropertyChanged;
useMonitor = true;
}
public fDataBufferSIDRef(List<Class.SIDDataRef> items)
{
InitializeComponent();
this.lvSID.Items.Clear();
foreach (var item in items)
{
var lv = this.lvSID.Items.Add(item.sid, string.Format("[{0}] {1}", lvSID.Items.Count + 1, item.sid), 0); //sid
lv.SubItems.Add(item.kpc.ToString()); //count
lv.SubItems.Add(item.unit);
}
}
void fDataBufferSID_FormClosed(object sender, FormClosedEventArgs e)
{
if (useMonitor)
PUB.Result.SIDReference.PropertyChanged -= sidreflist_PropertyChanged;
}
private void fDataBuffer_Load(object sender, EventArgs e)
{
this.FormClosed += fDataBufferSID_FormClosed;
}
void sidreflist_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (this.InvokeRequired)
{
var p = new PropertyChangedEventArgs(e.PropertyName);
this.BeginInvoke(new PropertyChangedEventHandler(sidreflist_PropertyChanged), new object[] { sender, p });
return;
}
var pname = e.PropertyName.Split(':');
if (pname[0].ToLower() == "add")
{
var sid = pname[1];
var item = PUB.Result.SIDReference.Get(pname[1]);
var lv = this.lvSID.Items.Add(sid, string.Format("[{0}] {1}", lvSID.Items.Count + 1, sid), 0);
lv.SubItems.Add(item.kpc.ToString());
lv.SubItems.Add(item.unit);//
lv.EnsureVisible();
}
else if (pname[0].ToLower() == "clear")
{
this.lvSID.Items.Clear();
}
else if (pname[0].ToLower() == "set")
{
var sid = pname[1];
var cnt = PUB.Result.SIDReference.Get(sid);
var items = this.lvSID.Items.Find(sid, false);
if (items != null && items.Length > 0)
{
foreach (var item in items)
{
item.SubItems[1].Text = cnt.ToString();
}
}
}
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

324
Handler/Project/Dialog/fDebug.Designer.cs generated Normal file
View File

@@ -0,0 +1,324 @@
namespace Project.Dialog
{
partial class fDebug
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.tbBcd = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.button2 = new System.Windows.Forms.Button();
this.button3 = new System.Windows.Forms.Button();
this.textBox3 = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.textBox4 = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.button4 = new System.Windows.Forms.Button();
this.button5 = new System.Windows.Forms.Button();
this.button6 = new System.Windows.Forms.Button();
this.button7 = new System.Windows.Forms.Button();
this.button8 = new System.Windows.Forms.Button();
this.button9 = new System.Windows.Forms.Button();
this.textBox5 = new System.Windows.Forms.TextBox();
this.button10 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// timer1
//
this.timer1.Interval = 150;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// tbBcd
//
this.tbBcd.Location = new System.Drawing.Point(12, 381);
this.tbBcd.Name = "tbBcd";
this.tbBcd.Size = new System.Drawing.Size(335, 21);
this.tbBcd.TabIndex = 44;
this.tbBcd.Text = "101409576;FF8N03FA2;MURATA;10000;8N09AFQPF;20181109;";
this.tbBcd.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(10, 360);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(97, 12);
this.label2.TabIndex = 45;
this.label2.Text = "Manual barcode";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// button1
//
this.button1.Location = new System.Drawing.Point(12, 408);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(335, 24);
this.button1.TabIndex = 46;
this.button1.Text = "send";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(14, 29);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(335, 21);
this.textBox1.TabIndex = 47;
this.textBox1.Text = "101409930;L99294875498;KYOCERA;30000;037920827134011M001;2020-08-27;ABCDEFGHIJ123" +
"4567890ABCDEFGHIJ";
this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(12, 81);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(335, 21);
this.textBox2.TabIndex = 47;
this.textBox2.Text = "101409930;L99294875498;KYOCERA;30000;037920827134011M001;2020-08-27;ABCDEFGHIJ123" +
"4567890ABCDEFGHIJ";
this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(10, 14);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(93, 12);
this.label1.TabIndex = 45;
this.label1.Text = "Print Command";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(10, 66);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(93, 12);
this.label3.TabIndex = 45;
this.label3.Text = "Print Command";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// button2
//
this.button2.Location = new System.Drawing.Point(252, 2);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(95, 24);
this.button2.TabIndex = 48;
this.button2.Text = "Print";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// button3
//
this.button3.Location = new System.Drawing.Point(252, 54);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(95, 24);
this.button3.TabIndex = 48;
this.button3.Text = "Print";
this.button3.UseVisualStyleBackColor = true;
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// textBox3
//
this.textBox3.Location = new System.Drawing.Point(12, 135);
this.textBox3.Name = "textBox3";
this.textBox3.Size = new System.Drawing.Size(151, 21);
this.textBox3.TabIndex = 50;
this.textBox3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(10, 120);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(41, 12);
this.label4.TabIndex = 49;
this.label4.Text = "manu\'";
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// textBox4
//
this.textBox4.Location = new System.Drawing.Point(12, 178);
this.textBox4.Name = "textBox4";
this.textBox4.Size = new System.Drawing.Size(151, 21);
this.textBox4.TabIndex = 52;
this.textBox4.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(10, 163);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(26, 12);
this.label5.TabIndex = 51;
this.label5.Text = "mfg";
this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// button4
//
this.button4.Location = new System.Drawing.Point(169, 135);
this.button4.Name = "button4";
this.button4.Size = new System.Drawing.Size(49, 24);
this.button4.TabIndex = 53;
this.button4.Text = "n/a";
this.button4.UseVisualStyleBackColor = true;
this.button4.Click += new System.EventHandler(this.button4_Click);
//
// button5
//
this.button5.Location = new System.Drawing.Point(169, 178);
this.button5.Name = "button5";
this.button5.Size = new System.Drawing.Size(49, 24);
this.button5.TabIndex = 53;
this.button5.Text = "n/a";
this.button5.UseVisualStyleBackColor = true;
this.button5.Click += new System.EventHandler(this.button5_Click);
//
// button6
//
this.button6.Location = new System.Drawing.Point(12, 205);
this.button6.Name = "button6";
this.button6.Size = new System.Drawing.Size(95, 24);
this.button6.TabIndex = 54;
this.button6.Text = "print L";
this.button6.UseVisualStyleBackColor = true;
this.button6.Click += new System.EventHandler(this.button6_Click);
//
// button7
//
this.button7.Location = new System.Drawing.Point(123, 205);
this.button7.Name = "button7";
this.button7.Size = new System.Drawing.Size(95, 24);
this.button7.TabIndex = 55;
this.button7.Text = "print R";
this.button7.UseVisualStyleBackColor = true;
this.button7.Click += new System.EventHandler(this.button7_Click);
//
// button8
//
this.button8.Location = new System.Drawing.Point(224, 178);
this.button8.Name = "button8";
this.button8.Size = new System.Drawing.Size(49, 24);
this.button8.TabIndex = 56;
this.button8.Text = "clr";
this.button8.UseVisualStyleBackColor = true;
this.button8.Click += new System.EventHandler(this.button8_Click);
//
// button9
//
this.button9.Location = new System.Drawing.Point(224, 135);
this.button9.Name = "button9";
this.button9.Size = new System.Drawing.Size(49, 24);
this.button9.TabIndex = 57;
this.button9.Text = "clr";
this.button9.UseVisualStyleBackColor = true;
this.button9.Click += new System.EventHandler(this.button9_Click);
//
// textBox5
//
this.textBox5.Location = new System.Drawing.Point(14, 250);
this.textBox5.Name = "textBox5";
this.textBox5.Size = new System.Drawing.Size(459, 21);
this.textBox5.TabIndex = 58;
this.textBox5.Text = "101416868;01A3KX;KYOCERA;20000;RC00014A225001I;20220511;N/A";
this.textBox5.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// button10
//
this.button10.Location = new System.Drawing.Point(12, 277);
this.button10.Name = "button10";
this.button10.Size = new System.Drawing.Size(461, 24);
this.button10.TabIndex = 59;
this.button10.Text = "Parser Amkor STD Barcode";
this.button10.UseVisualStyleBackColor = true;
this.button10.Click += new System.EventHandler(this.button10_Click);
//
// fDebug
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(495, 444);
this.Controls.Add(this.button10);
this.Controls.Add(this.textBox5);
this.Controls.Add(this.button8);
this.Controls.Add(this.button9);
this.Controls.Add(this.button6);
this.Controls.Add(this.button7);
this.Controls.Add(this.button5);
this.Controls.Add(this.button4);
this.Controls.Add(this.textBox4);
this.Controls.Add(this.label5);
this.Controls.Add(this.textBox3);
this.Controls.Add(this.label4);
this.Controls.Add(this.button3);
this.Controls.Add(this.button2);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.button1);
this.Controls.Add(this.label3);
this.Controls.Add(this.label1);
this.Controls.Add(this.label2);
this.Controls.Add(this.tbBcd);
this.Name = "fDebug";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "fDebug";
this.Load += new System.EventHandler(this.fDebug_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Timer timer1;
private System.Windows.Forms.TextBox tbBcd;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.TextBox textBox3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox textBox4;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Button button4;
private System.Windows.Forms.Button button5;
private System.Windows.Forms.Button button6;
private System.Windows.Forms.Button button7;
private System.Windows.Forms.Button button8;
private System.Windows.Forms.Button button9;
private System.Windows.Forms.TextBox textBox5;
private System.Windows.Forms.Button button10;
}
}

View File

@@ -0,0 +1,124 @@
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 fDebug : Form
{
public fDebug()
{
InitializeComponent();
this.FormClosed += fDebug_FormClosed;
this.tbBcd.KeyDown += tbBcd_KeyDown;
}
void tbBcd_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
// manualbcd();
}
}
void fDebug_FormClosed(object sender, FormClosedEventArgs e)
{
this.tbBcd.KeyDown -= tbBcd_KeyDown;
timer1.Stop();
}
private void fDebug_Load(object sender, EventArgs e)
{
timer1.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
}
private void lb4_Click(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
//manualbcd();
}
private void button2_Click(object sender, EventArgs e)
{
var reel = new Class.Reel(textBox1.Text);
PUB.PrinterL.Print(reel, true, AR.SETTING.Data.DrawOutbox);
PUB.log.Add("임시프린트L:" + textBox1.Text);
}
private void button3_Click(object sender, EventArgs e)
{
var reel = new Class.Reel(textBox2.Text);
PUB.PrinterR.Print(reel, true, AR.SETTING.Data.DrawOutbox);
PUB.log.Add("임시프린트R:" + textBox2.Text);
}
private void button4_Click(object sender, EventArgs e)
{
textBox3.Text = "N/A";
}
private void button5_Click(object sender, EventArgs e)
{
textBox4.Text = "N/A";
}
private void button9_Click(object sender, EventArgs e)
{
textBox3.Text = string.Empty;
}
private void button8_Click(object sender, EventArgs e)
{
textBox4.Text = string.Empty;
}
private void button6_Click(object sender, EventArgs e)
{
PUB.PrinterL.TestPrint(false, textBox3.Text, textBox4.Text);
var zpl = PUB.PrinterL.LastPrintZPL;
//PUB.PrintSend(true, zpl);
}
private void button7_Click(object sender, EventArgs e)
{
PUB.PrinterR.TestPrint(false, textBox3.Text, textBox4.Text);
var zpl = PUB.PrinterR.LastPrintZPL;
//PUB.PrintSend(false, zpl);
}
private void button10_Click(object sender, EventArgs e)
{
var amk = new StdLabelPrint.CAmkorSTDBarcode();
amk.SetBarcode(textBox5.Text);
}
//void manualbcd()
//{
// if (tbBcd.Text.isEmpty())
// {
// tbBcd.Focus();
// return;
// }
// else
// {
// //Pub.manualbcd.RaiseRecvData(tbBcd.Text + "\n");
// tbBcd.Focus();
// tbBcd.SelectAll();
// }
//}
}
}

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -0,0 +1,517 @@
namespace Project.Dialog
{
partial class fFinishJob
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fFinishJob));
this.button1 = new System.Windows.Forms.Button();
this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column5 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column6 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column4 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.label2 = new System.Windows.Forms.Label();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.dataGridView2 = new System.Windows.Forms.DataGridView();
this.dataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column7 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column8 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn4 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.label3 = new System.Windows.Forms.Label();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.dataGridView3 = new System.Windows.Forms.DataGridView();
this.dataGridViewTextBoxColumn5 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn6 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column9 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column10 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn7 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn8 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridView4 = new System.Windows.Forms.DataGridView();
this.dataGridViewTextBoxColumn9 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn10 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column11 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column12 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn11 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewTextBoxColumn12 = new System.Windows.Forms.DataGridViewTextBoxColumn();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
this.tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).BeginInit();
this.tableLayoutPanel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dataGridView4)).BeginInit();
this.SuspendLayout();
//
// button1
//
this.button1.BackColor = System.Drawing.Color.Gold;
this.button1.Dock = System.Windows.Forms.DockStyle.Top;
this.button1.Font = new System.Drawing.Font("맑은 고딕", 50F, System.Drawing.FontStyle.Bold);
this.button1.Location = new System.Drawing.Point(10, 10);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(1164, 105);
this.button1.TabIndex = 3;
this.button1.Text = "작업 완료";
this.button1.UseVisualStyleBackColor = false;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// dataGridView1
//
this.dataGridView1.AllowUserToAddRows = false;
this.dataGridView1.AllowUserToDeleteRows = false;
this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Column1,
this.Column2,
this.Column5,
this.Column6,
this.Column3,
this.Column4});
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle2.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle2;
this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.dataGridView1.Location = new System.Drawing.Point(3, 3);
this.dataGridView1.MultiSelect = false;
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.ReadOnly = true;
this.dataGridView1.RowHeadersVisible = false;
this.dataGridView1.RowTemplate.Height = 23;
this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dataGridView1.Size = new System.Drawing.Size(576, 354);
this.dataGridView1.TabIndex = 5;
//
// Column1
//
this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
this.Column1.DefaultCellStyle = dataGridViewCellStyle1;
this.Column1.HeaderText = "SID";
this.Column1.Name = "Column1";
this.Column1.ReadOnly = true;
//
// Column2
//
this.Column2.HeaderText = "REEL";
this.Column2.Name = "Column2";
this.Column2.ReadOnly = true;
this.Column2.Width = 66;
//
// Column5
//
this.Column5.HeaderText = "L";
this.Column5.Name = "Column5";
this.Column5.ReadOnly = true;
this.Column5.Width = 41;
//
// Column6
//
this.Column6.HeaderText = "R";
this.Column6.Name = "Column6";
this.Column6.ReadOnly = true;
this.Column6.Width = 43;
//
// Column3
//
this.Column3.HeaderText = "KPC";
this.Column3.Name = "Column3";
this.Column3.ReadOnly = true;
this.Column3.Width = 61;
//
// Column4
//
this.Column4.HeaderText = "LIMIT";
this.Column4.Name = "Column4";
this.Column4.ReadOnly = true;
this.Column4.Width = 71;
//
// label2
//
this.label2.Dock = System.Windows.Forms.DockStyle.Top;
this.label2.Font = new System.Drawing.Font("맑은 고딕", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.label2.Location = new System.Drawing.Point(10, 115);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(1164, 44);
this.label2.TabIndex = 6;
this.label2.Text = "현 작업 정보";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Controls.Add(this.dataGridView1, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.dataGridView2, 1, 0);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top;
this.tableLayoutPanel1.Location = new System.Drawing.Point(10, 159);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 1;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(1164, 360);
this.tableLayoutPanel1.TabIndex = 7;
//
// dataGridView2
//
this.dataGridView2.AllowUserToAddRows = false;
this.dataGridView2.AllowUserToDeleteRows = false;
this.dataGridView2.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
this.dataGridView2.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView2.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.dataGridViewTextBoxColumn1,
this.dataGridViewTextBoxColumn2,
this.Column7,
this.Column8,
this.dataGridViewTextBoxColumn3,
this.dataGridViewTextBoxColumn4});
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle4.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dataGridView2.DefaultCellStyle = dataGridViewCellStyle4;
this.dataGridView2.Dock = System.Windows.Forms.DockStyle.Fill;
this.dataGridView2.Location = new System.Drawing.Point(585, 3);
this.dataGridView2.MultiSelect = false;
this.dataGridView2.Name = "dataGridView2";
this.dataGridView2.ReadOnly = true;
this.dataGridView2.RowHeadersVisible = false;
this.dataGridView2.RowTemplate.Height = 23;
this.dataGridView2.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dataGridView2.Size = new System.Drawing.Size(576, 354);
this.dataGridView2.TabIndex = 5;
//
// dataGridViewTextBoxColumn1
//
this.dataGridViewTextBoxColumn1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
this.dataGridViewTextBoxColumn1.DefaultCellStyle = dataGridViewCellStyle3;
this.dataGridViewTextBoxColumn1.HeaderText = "BATCH";
this.dataGridViewTextBoxColumn1.Name = "dataGridViewTextBoxColumn1";
this.dataGridViewTextBoxColumn1.ReadOnly = true;
//
// dataGridViewTextBoxColumn2
//
this.dataGridViewTextBoxColumn2.HeaderText = "REEL";
this.dataGridViewTextBoxColumn2.Name = "dataGridViewTextBoxColumn2";
this.dataGridViewTextBoxColumn2.ReadOnly = true;
this.dataGridViewTextBoxColumn2.Width = 66;
//
// Column7
//
this.Column7.HeaderText = "L";
this.Column7.Name = "Column7";
this.Column7.ReadOnly = true;
this.Column7.Width = 41;
//
// Column8
//
this.Column8.HeaderText = "R";
this.Column8.Name = "Column8";
this.Column8.ReadOnly = true;
this.Column8.Width = 43;
//
// dataGridViewTextBoxColumn3
//
this.dataGridViewTextBoxColumn3.HeaderText = "KPC";
this.dataGridViewTextBoxColumn3.Name = "dataGridViewTextBoxColumn3";
this.dataGridViewTextBoxColumn3.ReadOnly = true;
this.dataGridViewTextBoxColumn3.Width = 61;
//
// dataGridViewTextBoxColumn4
//
this.dataGridViewTextBoxColumn4.HeaderText = "LIMIT";
this.dataGridViewTextBoxColumn4.Name = "dataGridViewTextBoxColumn4";
this.dataGridViewTextBoxColumn4.ReadOnly = true;
this.dataGridViewTextBoxColumn4.Width = 71;
//
// label3
//
this.label3.Dock = System.Windows.Forms.DockStyle.Top;
this.label3.Font = new System.Drawing.Font("맑은 고딕", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.label3.Location = new System.Drawing.Point(10, 519);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(1164, 44);
this.label3.TabIndex = 8;
this.label3.Text = "당일(1982-11-23) 작업 정보";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.label3.Click += new System.EventHandler(this.label3_Click);
//
// tableLayoutPanel2
//
this.tableLayoutPanel2.ColumnCount = 2;
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel2.Controls.Add(this.dataGridView3, 0, 0);
this.tableLayoutPanel2.Controls.Add(this.dataGridView4, 1, 0);
this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel2.Location = new System.Drawing.Point(10, 563);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
this.tableLayoutPanel2.RowCount = 1;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel2.Size = new System.Drawing.Size(1164, 338);
this.tableLayoutPanel2.TabIndex = 9;
//
// dataGridView3
//
this.dataGridView3.AllowUserToAddRows = false;
this.dataGridView3.AllowUserToDeleteRows = false;
this.dataGridView3.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
this.dataGridView3.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView3.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.dataGridViewTextBoxColumn5,
this.dataGridViewTextBoxColumn6,
this.Column9,
this.Column10,
this.dataGridViewTextBoxColumn7,
this.dataGridViewTextBoxColumn8});
dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle6.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
dataGridViewCellStyle6.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle6.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle6.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dataGridView3.DefaultCellStyle = dataGridViewCellStyle6;
this.dataGridView3.Dock = System.Windows.Forms.DockStyle.Fill;
this.dataGridView3.Location = new System.Drawing.Point(3, 3);
this.dataGridView3.MultiSelect = false;
this.dataGridView3.Name = "dataGridView3";
this.dataGridView3.ReadOnly = true;
this.dataGridView3.RowHeadersVisible = false;
this.dataGridView3.RowTemplate.Height = 23;
this.dataGridView3.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dataGridView3.Size = new System.Drawing.Size(576, 332);
this.dataGridView3.TabIndex = 5;
//
// dataGridViewTextBoxColumn5
//
this.dataGridViewTextBoxColumn5.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
this.dataGridViewTextBoxColumn5.DefaultCellStyle = dataGridViewCellStyle5;
this.dataGridViewTextBoxColumn5.HeaderText = "SID";
this.dataGridViewTextBoxColumn5.Name = "dataGridViewTextBoxColumn5";
this.dataGridViewTextBoxColumn5.ReadOnly = true;
//
// dataGridViewTextBoxColumn6
//
this.dataGridViewTextBoxColumn6.HeaderText = "REEL";
this.dataGridViewTextBoxColumn6.Name = "dataGridViewTextBoxColumn6";
this.dataGridViewTextBoxColumn6.ReadOnly = true;
this.dataGridViewTextBoxColumn6.Width = 66;
//
// Column9
//
this.Column9.HeaderText = "L";
this.Column9.Name = "Column9";
this.Column9.ReadOnly = true;
this.Column9.Width = 41;
//
// Column10
//
this.Column10.HeaderText = "R";
this.Column10.Name = "Column10";
this.Column10.ReadOnly = true;
this.Column10.Width = 43;
//
// dataGridViewTextBoxColumn7
//
this.dataGridViewTextBoxColumn7.HeaderText = "KPC";
this.dataGridViewTextBoxColumn7.Name = "dataGridViewTextBoxColumn7";
this.dataGridViewTextBoxColumn7.ReadOnly = true;
this.dataGridViewTextBoxColumn7.Width = 61;
//
// dataGridViewTextBoxColumn8
//
this.dataGridViewTextBoxColumn8.HeaderText = "LIMIT";
this.dataGridViewTextBoxColumn8.Name = "dataGridViewTextBoxColumn8";
this.dataGridViewTextBoxColumn8.ReadOnly = true;
this.dataGridViewTextBoxColumn8.Width = 71;
//
// dataGridView4
//
this.dataGridView4.AllowUserToAddRows = false;
this.dataGridView4.AllowUserToDeleteRows = false;
this.dataGridView4.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
this.dataGridView4.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView4.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.dataGridViewTextBoxColumn9,
this.dataGridViewTextBoxColumn10,
this.Column11,
this.Column12,
this.dataGridViewTextBoxColumn11,
this.dataGridViewTextBoxColumn12});
dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle8.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
dataGridViewCellStyle8.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dataGridView4.DefaultCellStyle = dataGridViewCellStyle8;
this.dataGridView4.Dock = System.Windows.Forms.DockStyle.Fill;
this.dataGridView4.Location = new System.Drawing.Point(585, 3);
this.dataGridView4.MultiSelect = false;
this.dataGridView4.Name = "dataGridView4";
this.dataGridView4.ReadOnly = true;
this.dataGridView4.RowHeadersVisible = false;
this.dataGridView4.RowTemplate.Height = 23;
this.dataGridView4.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dataGridView4.Size = new System.Drawing.Size(576, 332);
this.dataGridView4.TabIndex = 5;
//
// dataGridViewTextBoxColumn9
//
this.dataGridViewTextBoxColumn9.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
this.dataGridViewTextBoxColumn9.DefaultCellStyle = dataGridViewCellStyle7;
this.dataGridViewTextBoxColumn9.HeaderText = "BATCH";
this.dataGridViewTextBoxColumn9.Name = "dataGridViewTextBoxColumn9";
this.dataGridViewTextBoxColumn9.ReadOnly = true;
//
// dataGridViewTextBoxColumn10
//
this.dataGridViewTextBoxColumn10.HeaderText = "REEL";
this.dataGridViewTextBoxColumn10.Name = "dataGridViewTextBoxColumn10";
this.dataGridViewTextBoxColumn10.ReadOnly = true;
this.dataGridViewTextBoxColumn10.Width = 66;
//
// Column11
//
this.Column11.HeaderText = "L";
this.Column11.Name = "Column11";
this.Column11.ReadOnly = true;
this.Column11.Width = 41;
//
// Column12
//
this.Column12.HeaderText = "R";
this.Column12.Name = "Column12";
this.Column12.ReadOnly = true;
this.Column12.Width = 43;
//
// dataGridViewTextBoxColumn11
//
this.dataGridViewTextBoxColumn11.HeaderText = "KPC";
this.dataGridViewTextBoxColumn11.Name = "dataGridViewTextBoxColumn11";
this.dataGridViewTextBoxColumn11.ReadOnly = true;
this.dataGridViewTextBoxColumn11.Width = 61;
//
// dataGridViewTextBoxColumn12
//
this.dataGridViewTextBoxColumn12.HeaderText = "LIMIT";
this.dataGridViewTextBoxColumn12.Name = "dataGridViewTextBoxColumn12";
this.dataGridViewTextBoxColumn12.ReadOnly = true;
this.dataGridViewTextBoxColumn12.Width = 71;
//
// fFinishJob
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.White;
this.ClientSize = new System.Drawing.Size(1184, 911);
this.Controls.Add(this.tableLayoutPanel2);
this.Controls.Add(this.label3);
this.Controls.Add(this.tableLayoutPanel1);
this.Controls.Add(this.label2);
this.Controls.Add(this.button1);
this.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(4);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "fFinishJob";
this.Padding = new System.Windows.Forms.Padding(10);
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "작업완료";
this.Load += new System.EventHandler(this.@__LoaD);
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
this.tableLayoutPanel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).EndInit();
this.tableLayoutPanel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dataGridView3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dataGridView4)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button button1;
private System.Windows.Forms.DataGridView dataGridView1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.DataGridView dataGridView2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.DataGridView dataGridView3;
private System.Windows.Forms.DataGridView dataGridView4;
private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
private System.Windows.Forms.DataGridViewTextBoxColumn Column5;
private System.Windows.Forms.DataGridViewTextBoxColumn Column6;
private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
private System.Windows.Forms.DataGridViewTextBoxColumn Column4;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn1;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn2;
private System.Windows.Forms.DataGridViewTextBoxColumn Column7;
private System.Windows.Forms.DataGridViewTextBoxColumn Column8;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn3;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn4;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn5;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn6;
private System.Windows.Forms.DataGridViewTextBoxColumn Column9;
private System.Windows.Forms.DataGridViewTextBoxColumn Column10;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn7;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn8;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn9;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn10;
private System.Windows.Forms.DataGridViewTextBoxColumn Column11;
private System.Windows.Forms.DataGridViewTextBoxColumn Column12;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn11;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn12;
}
}

View File

@@ -0,0 +1,177 @@
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Linq;
using System.Collections.Generic;
namespace Project.Dialog
{
public partial class fFinishJob : Form
{
public string Command = string.Empty;
public fFinishJob()
{
InitializeComponent();
this.KeyPreview = true;
this.KeyDown += (s1, e1) =>
{
if (e1.KeyCode == Keys.Escape)
{
Close();
}
};
if (System.Diagnostics.Debugger.IsAttached == true)
{
this.TopMost = false;
}
this.FormClosed += fFinishJob_FormClosed;
}
void fFinishJob_FormClosed(object sender, FormClosedEventArgs e)
{
// Comm.WebService.Message -= WebService_Message;
}
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
private void __LoaD(object sender, EventArgs e)
{
this.Text = string.Format("금일 작업 목록 입니다({0})", DateTime.Now.ToShortDateString());
if (AR.SETTING.Data.OnlineMode)
{
RefreshData();
}
//lbCntL.Text = cntl.ToString();
//lbCntR.Text = cntr.ToString();
//lbSumQty.Text = qty.ToString();
}
void RefreshData()
{
int cntl = 0;
int cntr = 0;
float qty = 0;
using (var db = new EEEntities())
{
var sd = DateTime.Parse(DateTime.Now.ToShortDateString() + " 00:00:00");
var ed = DateTime.Parse(DateTime.Now.ToShortDateString() + " 23:59:59");
if (PUB.Result.JobStartTime.Year != 1982) sd = PUB.Result.JobStartTime;
if (PUB.Result.JobEndTime.Year != 1982) ed = PUB.Result.JobEndTime;
label2.Text = string.Format("현 작업 정보({0}~{1})", sd.ToString("HH:mm:ss"), ed.ToString("HH:mm:ss"));
//현작업
var ta = new DataSet1TableAdapters.Component_Reel_ResultTableAdapter();
var list = ta.GetByValidGuid(sd, ed, AR.SETTING.Data.McName,PUB.Result.guid);
//var list = db.Component_Reel_Result.Where(t => t.STIME >= sd && t.STIME <= ed && t.PRNVALID == true && t.PRNATTACH == true && t.MC == AR.SETTING.Data.McName);
UpdateList(list, dataGridView1, dataGridView2);
//당일작업
sd = DateTime.Parse(sd.ToShortDateString() + " 00:00:00");
ed = DateTime.Parse(sd.ToShortDateString() + " 23:59:59");
label3.Text = $"당일({sd.ToShortDateString()}) 작업 정보";
var listday = ta.GetByValid(sd, ed, AR.SETTING.Data.McName);
UpdateList(listday, dataGridView3, dataGridView4);
//if (list != null && list.Count() > 0)
//{
// cntl = list.Where(t => t.LOC == "L").GroupBy(t => t.RID0).Count();
// cntr = list.Where(t => t.LOC == "R").GroupBy(t => t.RID0).Count();
//}
//dbqty = list.Sum(t => t.QTY);
//if (dbqty != null) qty = ((int)dbqty);
}
}
void UpdateList(DataSet1.Component_Reel_ResultDataTable list, DataGridView dvS, DataGridView dvB)
{
dvS.Rows.Clear();
dvB.Rows.Clear();
int sum_reel = 0;
int sum_cntl = 0;
int sum_cntr = 0;
double sum_kpc = 0;
if (list != null && list.Count() > 0)
{
//SID별
sum_reel = 0;
sum_cntl = 0;
sum_cntr = 0;
sum_kpc = 0;
var grplist = list.OrderBy(t => t.SID).GroupBy(t => t.SID);
foreach (var row in grplist)
{
var sid = row.Key;
var reel = row.Count();
var cntl = row.Where(t => t.LOC == "L")?.Count() ?? 0;
var cntr = row.Where(t => t.LOC == "R")?.Count() ?? 0;
double kpc = row.Sum(t => t.QTY) ;
if (kpc > 0) kpc = kpc / 1000.0;
var lim = -1;
dvS.Rows.Add(new object[] { sid, reel, cntl, cntr, kpc, lim });
sum_reel += reel;
sum_cntl += cntl;
sum_cntr += cntr;
sum_kpc += kpc;
}
dvS.Rows.Add(new object[] { "TOTAL", sum_reel, sum_cntl, sum_cntr, sum_kpc, null });
dvS.Rows[dvS.RowCount - 1].DefaultCellStyle.BackColor = Color.DimGray;
//배치별
sum_reel = 0;
sum_cntl = 0;
sum_cntr = 0;
sum_kpc = 0;
var grpbatch = list.OrderBy(t => t.BATCH).GroupBy(t => t.BATCH);
foreach (var row in grpbatch)
{
var sid = row.Key;
if (sid.isEmpty()) sid = "(none)";
var reel = row.Count();
var cntl = row.Where(t => t.LOC == "L")?.Count() ?? 0;
var cntr = row.Where(t => t.LOC == "R")?.Count() ?? 0;
double kpc = row.Sum(t => t.QTY) ;
if (kpc > 0) kpc = kpc / 1000.0;
var lim = -1;
dvB.Rows.Add(new object[] { sid, reel, cntl, cntr, kpc, lim });
sum_reel += reel;
sum_cntl += cntl;
sum_cntr += cntr;
sum_kpc += kpc;
}
dvB.Rows.Add(new object[] { "TOTAL", sum_reel, sum_cntl, sum_cntr, sum_kpc, null });
dvB.Rows[dvB.RowCount - 1].DefaultCellStyle.BackColor = Color.DimGray;
}
dvS.Invalidate();
dvB.Invalidate();
}
private void label3_Click(object sender, EventArgs e)
{
if (AR.SETTING.Data.OnlineMode)
RefreshData();
}
}
}

View File

@@ -0,0 +1,449 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column6.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column7.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column8.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn6.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column9.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column10.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn7.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn8.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn9.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn10.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column11.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column12.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn11.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn12.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAMAMDAAAAEAIACoJQAANgAAACAgAAABACAAqBAAAN4lAAAQEAAAAQAgAGgEAACGNgAAKAAAADAA
AABgAAAAAQAgAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgaZsA5C1
fwOTuIIDkbaAA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3
gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3
gQOSt4EDkreBA5G2gAOTuIIDkLV/A4GmbAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAfaJmBAAAAAB6n2IdfaJmkoescoeIrnSDh61zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIit
c4SIrXOEiK1zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIit
c4SIrXOEiK1zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIetc4SIrnSDh6xyh32iZpJ6n2IdAAAAAH2i
ZgQAAAAAAAAAAAAAAAAAAAAAiKx0BwAAAACApWk1ia52/6DElP+kyJn9osaW/qLGl/+ixpf/osaX/6LG
l/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LG
l/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LGlv6kyJn9oMSU/4mu
dv+ApWk1AAAAAIisdAcAAAAAAAAAAAAAAAAAAAAAl7uIBgAAAACIrXQrmr6M47/ivf3E58P8weS/+sLk
wPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvB5MD7wuTA+8Lk
wPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8Hk
v/rE58P8v+K9/Zq+jOOIrXQrAAAAAJe7iAYAAAAAAAAAAAAAAAAAAAAAlLiEBgAAAACHq3Itl7uH67nc
tf++4bz+u964/bzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzf
uf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzf
uf6837n+vN+5/rveuP2+4bz+udy1/5e7h+uHq3ItAAAAAJS4hAYAAAAAAAAAAAAAAAAAAAAAlLiEBgAA
AACHq3Isl7uI67rdtv+/4r3/vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzf
uf694Lr+vN+5/r3guv694Lr+vN+5/rzfuf694Lr+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzf
uf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJS4hAYAAAAAAAAAAAAA
AAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+94Lr/veC6/73g
uv+837n/veC6/73guv+73rf/weO//7ndtf+z163/weTA/7zfuf+837n/veC6/7zfuf+94Lr/veC6/73g
uv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5
hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73g
uv+94Lr/veC6/7zfuf+94Lr/vN+5/7veuP/C5MH/stet/6bHm/+oxpz/qc6h/7/ivf++4bz/u964/73g
uv+837n/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7
iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3g
uv+94Lr/veC6/73guv+94Lr/vN+5/73guv+837n/vd+5/8Djvv+02bD/p8ic/8LTt//R3cn/q8ef/67R
p/+94bv/v+K9/7veuP+94Lr/vN+5/73guv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/7zf
uf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rd
tv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+837n/veC6/7zfuf+94Lr/vuG8/7fasv+mx5v/xte8//b4
9P/9/f3/3ObW/6zHoP+u0qf/veG7/77hvP+837n/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/73g
uv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAA
AACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+94Lr/vN+5/73guv++4bz/uNu0/6XH
mv/I2b7/9Pfy/////////////f39/9zm1v+tyKD/rtGm/7/ivf+94Lr/vN+5/7zfuf+94Lr/veC6/73g
uv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAA
AAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/7zfuf+94Lr/u964/8Hj
v/+22bH/o8SX/83exv/2+fX///////39/P/+/f3///////7+/f/h69z/rsmh/6nNn//C5cH/vN+4/7zf
uf+94Lr/vN+5/73guv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5
hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73g
uv+837j/wuTA/7LXrf+nx5z/zNvE//b49P//////+/v6/8bWvP+uxaH/7vLr//7+/v/+////4Oja/7LK
pv+ozJ//wuXB/73guv+837n/veC6/7zfuf+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7
iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3g
uv+94Lr/vN+5/7zfuf++4Lv/t9uz/6rLoP/C1Lj//Pz7///////4+ff/zNvF/6fInP+kyJr/uM6t/+zw
6P/+/v7///7//+Do2v+yy6f/qc2h/7/ivf++4bz/u964/73guv+837n/veC6/73guv+94Lr/veC6/7zf
uf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rd
tv+/4r3/vN+5/r3guv+94Lr/vN+5/7zfuf++4Lv/t9uz/6rKn//C07j//v7+//z8+//N28T/qMec/7ba
sv/B47//p8qd/7nOrv/q8Of///////7+/v/g6dv/rcih/63Rpf+94bv/v+K9/7veuP+94Lr/vN+5/73g
uv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAA
AACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+73rj/wuXB/7HVq/+pyJ7/z97I/9Pg
zf+ryZ//stas/8LkwP+94Lr/vuG8/6PGmP+90rT/6/Dn///////8/fv/3+rb/6/Ko/+u0ab/vOC5/7/h
vP+837n/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAA
AAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/7zfuf+94Lr/u964/7/j
vf+53LX/o8SY/6PFmP+53LX/wOO+/7veuP+837n/veC6/8Djvv+lyZv/uc+v/+rv5////////f79/+bs
4f+tx6H/rNCl/8Djvv+837n/vN+5/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5
hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73g
uv+94Lr/vN+5/73guv+84Lr/ut22/7rdtv+84Lr/veC6/7zfuf+837n/veC6/73guv+/4rz/p8ue/7bO
q//r8ej///////7+/v/l7OH/ssun/6jNoP/B47//vN+5/7zfuf+94Lr/veC6/7zfuf6/4r3/ut22/5e7
iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlLiEBgAAAACHq3Itl7uI67rdtv+/4r3/vN+5/r3g
uv+94Lr/veC6/73guv+837n/veC6/7zfuf+94Lr/vuG8/77hvP+94Lr/vN+5/73guv+94Lr/vN+5/7zf
uf+/4bz/vOC5/6jLnv+zy6j/7/Ps///////09vL/tcup/6PImf/C5MD/vN+5/7zfuf+94Lr/veC6/7zf
uf6/4r3/ut22/5e7iOuHq3ItAAAAAJS4hAYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3MsmLuI57rd
tv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+94Lr/vN+5/73guv+837n/vN+5/7zfuf+837n/veC6/7zf
uf+837n/veC6/73guv+73rj/weO//7ndtf+qzKH/uc6t/9bhzv/A07b/sM+n/7fbs/++4Lv/vN+5/7zf
uf+94Lr/veC6/7zfuf6/4r3/ut22/5i7iOeHq3MsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAk7eDBgAA
AACGqnEwlbmG9rrdtv+/4r3+vN+5/r3guv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/73g
uv+94Lr/veC6/73guv+94Lr/veC6/7zfuf+94Lr/u963/8Djvv+94Lr/qMqe/6vHnv+nyJv/ttqy/8Hk
v/+83rj/veC6/73guv+94Lr/veC6/7zfuf6/4r3+ut22/5W5hvaGqnEwAAAAAJO3gwYAAAAAAAAAAAAA
AAAAAAAAkraCBwAAAACFqnI1lLiF/7nctf+/4r39vN+4/r3guv+94Lr/veC6/73guv+94Lr/veC6/73g
uv+94Lr/veC6/73guv+837n/veC6/7zfuf+837n/vN+5/7zfuf+837n/veC6/7veuP++4Lv/wOK+/7HV
q/+94Lr/v+K9/7veuP+94Lr/vN+5/73guv+94Lr/veC6/7zfuP6/4r39udy1/5S4hf+FqnI1AAAAAJK2
ggcAAAAAAAAAAAAAAAAAAAAAlLmFBwAAAACIrXU0lruI/7ndtv+/4r39vN+5/r3guv+94Lr/veC6/73g
uv+94Lr/veC6/73guv+94Lr/veC6/73guv+84Lr/vN+5/73guv+94Lr/veC6/73guv+94Lr/veC6/73g
uv+837n/vN+5/73gu/+837n/vN+5/73guv+837n/veC6/73guv+94Lr/veC6/7zfuf6/4r39ud22/5a7
iP+IrXU0AAAAAJS5hQcAAAAAAAAAAAAAAAAAAAAAlLmFBwAAAACHrXU0lruI/7ndtv+/4r39vN+5/r3g
uv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Ln/veC6/73guv+837n/vN+5/7zfuf+94Lv/vuG8/77h
vP+94Lv/vN+5/7zfuf+837n/veC6/73guv+94Lr/vN+5/73guv+94Lr/veC6/73guv+94Lr/veC6/7zf
uf6/4r39ud22/5a7iP+HrXU0AAAAAJS5hQcAAAAAAAAAAAAAAAAAAAAAk7iEBwAAAACHrXU0lruH/7nd
tv+/4r39vN+5/r3guv+94Lr/veC6/73guv+94Lr/veC6/7zfuf+94Lr/vN+5/7zfuf+837n/weS//7zf
uf+sz6P/oMWW/6DFlv+sz6T/vN+5/8Hkv/+837n/vN+5/7zfuf+94Lr/veC6/7zfuf+94Lr/veC6/73g
uv+94Lr/veC6/7zfuf6/4r39ud22/5a7h/+HrXU0AAAAAJO4hAcAAAAAAAAAAAAAAAAAAAAAlLmFBwAA
AACHrXU0lruH/7ndtv+/4r39vN+5/r3guv+94Lr/veC6/73guv+94Lr/veC6/73guv+837n/veC6/77h
u/+63bf/qMyg/5vBkP+awpD/mMGP/5fBj/+awpH/m8GQ/6jMn/+63rf/vuG7/73guv+837n/veC6/73g
uv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r39ud22/5a7h/+HrXU0AAAAAJS5hQcAAAAAAAAAAAAA
AAAAAAAAlLmFBwAAAACHrXU0lruH/7ndtv+/4r39vN+5/r3guv+94Lr/veC6/73guv+94Lr/vN+5/7zf
uf+837n/veC5/7rdtv+kyJr/krmF/5G7h/+ZxJL/n8qa/57Kmv+ZxJL/kbqG/5K5hf+kyZr/ut23/7zg
uf+84Ln/vN+5/7zfuf+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r39ud22/5a7h/+HrXU0AAAAAJS5
hQcAAAAAAAAAAAAAAAAAAAAAk7iEBwAAAACHrXU0lruH/7nctf+/4r39u9+4/rzfuf+837n/vN+5/7zf
uf+837n/vN+5/7zfuP++4bv/vN+5/6XJm/+QuIL/mMOR/6POoP+eyZn/nciY/57ImP+eyZn/o86g/5jD
kf+QuIP/psmd/7zfuf++4bv/vN+4/7zfuf+837n/vN+5/7zfuf+837n/vN+5/7vfuP6/4r39udy1/5a7
h/+HrXU0AAAAAJO4hAcAAAAAAAAAAAAAAAAAAAAAlLmFBwAAAACIrXU0lruI/7rdtv/A4779vN+5/r3g
uv+94Lr/veC6/73guv+94Lr/veC6/73guv/A4r7/uNu0/4+1gP+Yw5H/oMyd/53Hl/+dyJj/nciY/53I
mP+dyJj/nceX/6DMnf+Yw5H/j7WA/7nbtf/A4r7/vOC5/73guv+94Lr/veC6/73guv+94Lr/veC6/7zf
uf7A4779ut22/5a7iP+IrXU0AAAAAJS5hQcAAAAAAAAAAAAAAAAAAAAAlLmGBwAAAACIrnY0l7yJ/7ve
uP/B5MD9veG7/r7hvP++4bz/vuG8/77hvP++4bz/vuG7/8Djvv+837n/qc6h/5S9iv+axZT/n8qb/53I
mP+eyZn/nsmZ/57Jmf+eyZn/nciY/5/Km/+axZT/lLyJ/6rOof+837n/wOO+/77hu/++4bz/vuG8/77h
vP++4bz/vuG8/77hu/7B5MD9u964/5e8if+IrnY0AAAAAJS5hgcAAAAAAAAAAAAAAAAAAAAAh6tyBwAA
AACApGk1iKx0/53BkP+hxZX9n8OT/6DElP+gxJT/oMSU/6DElP+gxJT/n8OT/6LGl/+avo3/i7F7/5nE
kv+eyZn/nciY/53ImP+dyJj/nsmZ/57Jmf+dyJj/nciY/53ImP+eyZn/mcOS/4uxev+avo3/osaX/5/D
k/+gxJT/oMSU/6DElP+gxJT/oMSU/5/Dk/+gxJX9ncGQ/4isdP+ApGk1AAAAAIercwcAAAAAAAAAAAAA
AAAAAAAAia12BgAAAAB9oWYtjK957qrOov+iyZr+mMCO/pjBj/6YwY//mMGP/5jBj/+YwY//mMGP/5nC
kP+Wv4z/kruI/5zHl/+eyZn/nciY/53ImP+eyZn/nsmZ/57Jmf+eyZn/nciY/53ImP+eyZr/nMiX/5K7
h/+Wv4z/mcKQ/5jBj/+YwY//mMGP/5jBj/+YwY//mMGP/pjBjv6jypr+qs6i/4yvee59oWUtAAAAAImt
dQYAAAAAAAAAAAAAAAAAAAAAjbJ8BQAAAAB1mlwhkraCwr/ivf613LT/os2e/Z7Kmv+gy5z/n8ub/5/L
m/+fy5v/n8ub/5/Lm/+gy5z/ocye/57Jmf+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+dyJj/nsmZ/6HMnv+gy5z/n8ub/5/Lm/+fy5v/n8ub/5/Lm/+gy5z/nsqa/6LNnv223LT/v+K9/pK2
gcJ1mlwhAAAAAI6yfAUAAAAAAAAAAAAAAAAAAAAAgadsAwAAAABTfC8Phqxzfq7Sp/W427T/p8+i/JrG
lf6eyZn/nciY/53ImP+dyJj/nciY/53ImP+dyJj/nciY/53ImP+eyZn/nciY/57JmP+eyZn/nsmZ/57J
mf+eyZn/nsmY/53ImP+eyZn/nciY/53Il/+dyJj/nciY/53ImP+dyJj/nciY/53ImP+eyZn/msaV/qfP
ovy427P/rtGm9YetdH1UfDIPAAAAAIKobQMAAAAAAAAAAAAAAAAAAAAAAAAAANT33wEAAAAAfKFlIpe7
itm32bH/r9ar/ZvGlf6eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/m8aV/q/Wq/232bH/lruH2XimZiEAAAAA1efOAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyw
ewMAAAAAdZpeComtd7S016/9tty0/6HLnP2dyJj+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/nsmZ/57Jmf+dyJj+ocuc/bfdtP+01679ia11tXWaWwoAAAAAjLB5AwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAIOpcAIAAAAAWYE6BX6kaXyv0afuut23/6nRpfubx5b/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+bx5b/qdGk+7rdtv+u0abugKRqeluAOwUAAAAAhalxAgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHebWySbv47GtNau/7LYsPubx5b+nsmZ/p7I
mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciZ/57Jmf6bx5b+stiv+7PWrf+bv43FeppfIwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMs3wBAAAAAAAAAACDq3GgrNGl/7vg
uf6gypv9nsmZ/53ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/57Jmf+gypv9u+C5/q3Q
pf+FqXCfAAAAAAAAAACOsnwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIq3IBAAAAAAAA
AAB7oWR0qM2f6Lzguf+q0aX8nciX/53ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/53I
l/+q0qX8u+C5/6nNoOd8oGZzAAAAAAAAAACIqnMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABojlAoncGRuLPWrf+02rH6nMeX/pzIl/6dyJj+nciY/p3ImP6dyJj+nciY/p3I
mP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3I
mP6dyJj+nMiX/pzHl/602rH6s9at/53BkbhpjEsnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJm6iAIAAAAAh6x0f6bJm/+74Lr8oMqc/pvHlv6bx5b+nMeW/pzH
lv6cx5b+nMeW/pzHlv6cx5b+nMeW/pzHlv6cx5b+nMeW/pzHlv6cx5b+nMeW/pzHlv6cx5b+nMeW/pzH
lv6cx5b+nMeW/pzHlv6bx5b+m8eW/qDLnP674Lr8psmb/4esdH8AAAAAmbqIAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIisdQIAAAAAd5xfZaHElebF6MX8u9+5+brf
uPq637j6ut+4+rrfuPq637j6ut+4+rrfuPq637j6ut+4+rrfuPq637j6ut+4+rrfuPq637j6ut+4+rrf
uPq637j6ut+4+rrfuPq637j6ut+4+rrfuPq637j6ut+4+rvgufnF6MX8ocSV5necXmQAAAAAiKx0AgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH+obAEAAAAAapRRJpG3
gamixpb/qMuf/KnMn/6py5//qcuf/6nLn/+py5//qcuf/6nLn/+py5//qcuf/6nLn/+py5//qcuf/6nL
n/+py5//qcuf/6nLn/+py5//qcuf/6nLn/+py5//qcuf/6nLn/+py5//qcyf/qjLn/yixpb/kbaBqGuS
UCUAAAAAgKdsAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACet4sCAAAAAH2lZ0KGq3KVjrN+ho6yfYiNsn2IjrJ9iI6yfYiOsn2IjrJ9iI6yfYiOsn2IjrJ9iI6y
fYiOsn2IjrJ9iI6yfYiOsn2IjrJ9iI6yfYiOsn2IjrJ9iI6yfYiOsn2IjrJ9iI6yfYiNsn2IjrJ9iI6z
foaGq3KVfqRoQgAAAACWuoQCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIatcgGQtX8DmLyKA5i8igOXu4kDmLyKA5i8
igOYvIoDmLyKA5i8igOYvIoDmLyKA5i8igOYvIoDmLyKA5i8igOYvIoDmLyKA5i8igOYvIoDmLyKA5i8
igOYvIoDmLyKA5i8igOXu4kDmLyKA5i8igOQtX8DhqxzAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP///////wAA////////AAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgA
AAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAf
AAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgA
AAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAf
AAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA/AAAAAA/AAD8AAAAAD8AAPwA
AAAAPwAA/gAAAAB/AAD+AAAAAH8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/4AAAAH/
AAD/gAAAAf8AAP/AAAAD/wAA////////AAD///////8AACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/pGgBAAAAAHugZE6DqG1jhKpvW4Spbl2EqW5dhKluXYSp
bl2EqW5dhKluXYSpbl2EqW5dhKluXYSpbl2EqW5dhKluXYSpbl2EqW5dhKluXYSpbl2EqW5dhKluXYSp
bl2EqW5dhKpvW4OobWN7oGROAAAAAH+kaAEAAAAAAAAAAJq+jQQAAAAAjbF7vqjLnv+s0KP7qs6h/qvO
ov+rzqL/q86i/6vOov+rzqL/q86i/6vOov+qzqL/qs6i/6vOov+rzqL/q86i/6vOov+rzqL/q86i/6vO
ov+rzqL/q86i/6rOof6s0KP7qMue/42xe74AAAAAmr6NBAAAAAAAAAAArM+jBAAAAACZvYqtveC6/8Ll
wfjA4777weO//MDjv/vA47/7weO/+8Djv/vB47/7wOO++8Hjv/vA4777weO/+8Hjv/vB47/7wOO/+8Dj
v/vA47/7wOO/+8Djv/vB47/8wOO++8Llwfi94Lr/mb2KrQAAAACsz6MEAAAAAAAAAACny54EAAAAAJa6
hrK427P/veC6+7ret/673rj+u964/rveuP673rf+u964/rrdt/6937r+u9+4/r3guv673rj+u963/rve
t/673rj+u964/rveuP673rj+u964/rveuP663rf+veC6+7jbs/+WuoayAAAAAKfLngQAAAAAAAAAAKjM
nwQAAAAAlrqHsbnctf++4bz7vN+5/r3guv+94Lr+veC6/7zfuf+73rj/vuG8/7ndtv+oyp7/rdCl/77i
vP+837r/vN+5/7zfuv+94Lr/veC6/73guv+94Lr+veC6/7zfuf6+4bz7udy1/5a6h7EAAAAAqMyfBAAA
AAAAAAAAqMyfBAAAAACWuoexudy0/77hu/u837n+veC6/7zfuf6837n+u964/r/hvP643bX+qsqg/tXf
zf7C1Lj+q8+j/r/ivf6837n+vN+5/r3guv6837n+vN+5/rzfuf694Lr/vN+5/r7hu/u53LT/lrqHsQAA
AACozJ8EAAAAAAAAAACozJ8EAAAAAJa6h7G53LT/vuG8+7zfuf694Lr/vN+5/rveuP+/4bz/uNy1/6vL
of/b5dX///////n6+f/C1bn/q8+j/7/ivf+837n/vN+5/73guv+94Lr/vN+5/r3guv+837n+vuG8+7nc
tP+WuoexAAAAAKjMnwQAAAAAAAAAAKjMnwQAAAAAlrqHsbnctP++4bz7vN+5/r3guv+837j+vuG8/7jc
tf+qyaD/3+nb///////n7eP/9ff0//3+/f/F17v/q86h/7/jvf+837n/vN+5/7zfuf+94Lr+veC6/7zf
uf6+4bz7udy0/5a6h7EAAAAAqMyfBAAAAAAAAAAAqMyfBAAAAACWuoexudy0/77hu/u837n+vN+5/73f
uv663rf/q8uh/+Ho2///////4ure/6TEmf+50K//9/j1//39/f/G1r3/q86j/7/ivf+837r/vN+4/7zf
uf694Lr/vN+5/r7hvPu53LT/lrqHsQAAAACozJ8EAAAAAAAAAACozJ8EAAAAAJa6h7G53LT/vuG7+7zf
uf6837n/vd+6/rret/+qyaD/5uzh/+ju5P+ryaD/u9+5/7DUqv+5z6//+Pn3//39/P/D1rr/q8+j/77i
vP+837n/vN+5/r3guv+837n+vuG8+7nctP+WuoexAAAAAKjMnwQAAAAAAAAAAKjMnwQAAAAAlrqHsbnc
tP++4bz7vN+5/r3guv+837j+vuG7/7jdtf+tzKT/rsyl/7ndtf++4Lv/v+K9/6/TqP+70bH/9ffz//3+
/f/H177/rM+k/7/ivP+83rj+veC6/7zfuf6+4bz7udy0/5a6h7EAAAAAqMyfBAAAAAAAAAAAqMyfBAAA
AACWuoexudy0/77hu/u837n+veC6/7zfuf673rj/vuG7/7ndtv+53bb/vuG7/7veuP+837n/wOO+/67T
qP+40K7/9vn1///////A0rb/q9Ck/8Djvv673rj/vN+5/r7hu/u53LT/lrqHsQAAAACozJ8EAAAAAAAA
AACpzJ8EAAAAAJe6h6+53LX/vuG8+7zfuf694Lr/vN+5/rzfuf+837j/veC6/73gu/+837j/vN+5/7zf
uf+83rj/wOO+/63Spv+90rP/3+fY/7jRr/+z167/vuG8/rvfuP+837n+vuG8+7nctf+XuoevAAAAAKnM
nwQAAAAAAAAAAKfKngQAAAAAlLiFu7jbtP++4bv6vN+5/r3guv+94Lr+vN+5/7zguv+837n/vN+5/73f
uv+837n/vN+4/7veuP+73rj/wOO+/7LUq/+oyJz/tdiw/7/ivf+73rj+veC6/7zfuf6+4bv6uNu0/5S4
hbsAAAAAp8qeBAAAAAAAAAAApsudBAAAAAGUuYbBuNu0/77hu/q837n/veC6/rzfuf694Lr/veC5/73g
uv+84Lr/u964/7zfuf++4bz/vuG8/7zfuf+73rj/vuG8/7vfuf++4bv/u964/7zfuf694Lr+vN+5/77h
u/q427T/lLmGwQAAAAGmy50EAAAAAAAAAACny50EAAAAAJW7h8G43LT/vuG8+rzfuf+94Lr+vN+5/rzf
uf+837n/vN+5/7veuP+/4rz/vuC7/7XYsP+12LD/veC7/7/ivf+73rj/vd+6/7zfuf+837n/veC6/r3g
uv6837n/vuG8+rjctP+Vu4fBAAAAAKfLnQQAAAAAAAAAAKfLnQQAAAAAlbqGwbjctP++4bz6vN+5/73g
uv694Lr+veC6/7zfuf+837n/vuG7/7LWrf+ix5j/mcGP/5nBkP+ix5j/stas/77hu/+837n/vN+5/7zf
uf+94Lr+veC6/rzfuf++4bz6uNy0/5W6hsEAAAAAp8udBAAAAAAAAAAAp8ucBAAAAACVuobBt9uz/73g
u/q73rj/vN+4/rzfuP673rj/u963/73guv+u0qf/k7uH/5XAjv+dyJj/nciY/5XAjf+Tu4f/r9Ko/73g
uv+73rf/u964/7zfuP6837j+u964/73gu/q327P/lbqGwQAAAACny5wEAAAAAAAAAACozKAEAAAAAJa7
iMG73rf/wOO/+r7hu/++4bz/vuG8/r7hu//A477/vN64/5O6h/+axpX/oMuc/53Hl/+dx5f/oMuc/5rG
lf+Uuof/vN65/8Djvv++4bv/vuG8/r7hvP++4bv/wOO/+rvet/+Wu4jBAAAAAKjMnwQAAAAAAAAAAKDE
lAQAAAABkbWBwa/SqP+22bH6tNeu/7TXr/6016//tNeu/7bZsf+jx5n/lb+N/57Jmv+cx5f/nciY/53I
mP+cx5f/nsma/5W/jP+jx5n/ttmx/7TXrv+016//tNev/rTXrv+22bH6r9Ko/5G2gcEAAAABn8SVBAAA
AAAAAAAAl7uIBAAAAACKrXe5ocaX/5rBkPqYv43+mMCO/5jAjf6YwI7/mMCO/5C4hP+bxpb/nciY/53I
mP+dyJj/nciY/53ImP+dyJj/m8eW/5C4g/+YwI7/mMCO/5jAjf6YwI7/mL+N/prCkPqhxpf/iq13uQAA
AACXu4kEAAAAAAAAAACny58DAAAAAJC0f4i43LX/qNGl+5zIl/6eypr/ncmZ/p3Jmf+eyZn/n8qc/53I
mP+dyJj/nsmY/57Jmf+eyZn/nsmY/53ImP+dyJj/n8qb/57Jmf+dyZn/ncmZ/p7Kmv+cyJf+qNGl+7nc
tf+QtH6HAAAAAKjMngMAAAAAAAAAAJa7iQEAAAAAdZxeLKfKneix163/m8aV/Z7Imf+dyJj+nciY/53I
mP+dyJj/nciY/53ImP+dyJj/nsmZ/57Jmf+dyJj/nciY/53ImP+dyJj/nciY/53ImP+dyJj+nsiZ/5vG
lf2x163/psmb6HSeXiwAAAAAlryIAQAAAAAAAAAAAAAAAAAAAAAAAAADmLuKvbjctf+hy5z7nMiX/p7J
mf+eyZn+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/p7J
mf+cyJf+ocuc+7jctf+Yu4m9AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAu924AgAAAACNsntlsdOq/arS
p/yaxpX9nsmZ/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3I
mP6dyJj+nsmZ/prGlf2q0qb8sNOp/I6yfGQAAAAAt9yzAgAAAAAAAAAAAAAAAAAAAACBqG0CAAAAAGWP
Syiix5jntduz/5zHl/yeyJn/nsmZ/p7Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J
mf+eyZn/nsmZ/57Jmf6eyJn/nMeX/LXbs/+jxpjnZ4xKKAAAAACDp20CAAAAAAAAAAAAAAAAAAAAAHSZ
WwEAAAAABC4AB5q/jZ+12bD/oMqb+5jEk/6bxpX+msaV/prGlf6axpX+msaV/prGlf6axpX+msaV/prG
lf6axpX+msaV/prGlf6axpX+m8aV/pjEk/6gy5v7tdmw/5u/jp4CJgAHAAAAAHSYWwEAAAAAAAAAAAAA
AAAAAAAAAAAAAIqudwIAAAAAfqNoWK7Rpv+027T6pM6g+6fRo/un0KP7p9Cj+6fQo/un0KP7p9Cj+6fQ
o/un0KP7p9Cj+6fQo/un0KP7p9Cj+6fQo/un0KP7pM6g+7TctPqu0ab/fqNoWAAAAACKrncCAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAeaBjAQAAAABnj0wmncGQz6/SqP+v0qf9r9Gn/6/Rp/+v0af/r9Gn/6/R
p/+v0af/r9Gn/6/Rp/+v0af/r9Gn/6/Rp/+v0af/r9Gn/6/Rp/+v0qf9r9Ko/53BkM9njUolAAAAAHqf
YgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8o2Y+iK12Zoywe12Lr3pfjK96X4yv
el+Mr3pfjK96X4yvel+Mr3pfjK96X4yvel+Mr3pfjK96X4yvel+Mr3pfi696X4ywe12IrXZmfaNmPgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////gAAAH4AAAB+AAAAfgAAAH4AAAB+AA
AAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AA
AAfwAAAP8AAAD/gAAB/4AAAf+AAAH/wAAD/8AAA///////////8oAAAAEAAAACAAAAABACAAAAAAAAAE
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH2iZxiGq3E8iK1zNoesczeHrHM3h6xyN4arcTeHrHM3h6xzN4es
czeHrHM3iK1zNoarcTx9omcYAAAAAAAAAACUuIRer9Oo/7TXrvaz1q35s9at+bTXrvm12LD5s9at+bPW
rfmz1q35s9at+bTXrvav06j/lLiEXgAAAAAAAAAAm7+NXbrdtv+/4r77vuG7/r/ivf+737j/stas/73h
u/+/4b3/vuG8/77hvP6/4r77ut22/5u/jV0AAAAAAAAAAJm9i12427P/veC6+73guv623LP+wNq5/ubs
4f631rH+ud63/r3guv6837n+veC7+7jbs/+ZvYtdAAAAAAAAAACZvYtduNu0/77hvPu43bX+wdq7/u3x
6f7a5tX+6/Dn/rjWsf653rb+veC6/r3gu/u427T/mb2LXQAAAAAAAAAAmb2LXbjbtP++4bz7uN21/sLa
vP7F3L//rdSn/87gyf/t8er/vNm3/rret/6+4bv7uNu0/5m9i10AAAAAAAAAAJm9i12427T/veC7+73g
uv653bX+uN21/7/ivf+y2K3/z+HJ/9PgzP6z2K/+v+K9+7jbs/+ZvYtdAAAAAAAAAACXvIpjt9uz/77h
u/u837n/veC6/r7gu/++4bv/wOO+/7fbs/+117D+veC6/77hu/u327P/l7yKYwAAAAAAAAAAmL2KZbfa
s/+94Lv7u9+4/73guv663bb/qs+k/6rPo/+73rj/vuG7/rveuP+94Lv7t9qz/5i9imUAAAAAAAAAAJi9
i2W53LX/wOK++7/hvP+937n+nsWV/5nEk/+ZxJL/nsWV/73fuf6/4bz/wOK++7nctf+YvYtlAAAAAAAA
AACTtoJlp8yf/6fNoPupzqH/oceY/pnEk/+fypr/n8qa/5nEk/+hx5j+qM6h/6fNoPuozJ//k7aCZQAA
AAAAAAAAkbN/NKjOovubx5b/msaV/pvHlv6eyJn+nciY/p3ImP6eyZn+m8eW/prGlf6bx5b/qM6i+5G0
fjQAAAAAAAAAAAAAAACpzaHBpM2g/53ImPyeyZn+nsmZ/p7Jmf6eyZn+nsmZ/p7Jmf6dyJj8pM2f/6nN
oMEAAAAAAAAAAKvPowMAAAAAn8OTcKnRpf+bx5b8ncmY/p3ImP+dyJj/nciY/53ImP+dyJj+m8eW/KnR
pf+gwpNvAAAAAKvPowOMsXsBAAAAAIKlayKozaDrqc+j/ajOofmozqH6qM6h+qjOofqozqH6qM6h+anP
o/2ozaDqgqVrIgAAAACNsXsBAAAAAAAAAAAAAAAAiq93LZq7ijuauok4mrqJOZq6iTmauok5mrqJOZq6
iTiau4o7iq53LQAAAAAAAAAAAAAAAP//AADAAwAAwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMAD
AADAAwAAwAMAAMADAADgBwAA4AcAAP//AAA=
</value>
</data>
</root>

View File

@@ -0,0 +1,555 @@
namespace Project.Dialog
{
partial class fHistory
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fHistory));
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
this.panel1 = new System.Windows.Forms.Panel();
this.button3 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.btExport = new System.Windows.Forms.Button();
this.dtED = new System.Windows.Forms.DateTimePicker();
this.dtSD = new System.Windows.Forms.DateTimePicker();
this.tbSearch = new System.Windows.Forms.ComboBox();
this.btSearch = new System.Windows.Forms.Button();
this.cm = new System.Windows.Forms.ContextMenuStrip(this.components);
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.viewXMLToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
this.sendDataToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.tbFind = new System.Windows.Forms.TextBox();
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.dv = new arCtl.arDatagridView();
this.bs = new System.Windows.Forms.BindingSource(this.components);
this.dataSet1 = new Project.DataSet1();
this.ta = new Project.DataSet1TableAdapters.Component_Reel_ResultTableAdapter();
this.panel2 = new System.Windows.Forms.Panel();
this.button1 = new System.Windows.Forms.Button();
this.sTIMEDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ETIME = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.jTYPEDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.BATCH = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.sIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.SID0 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.rIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.rID0DataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.lOCDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.qTYDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.qtymax = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.vNAMEDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.VLOT = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.CUSTCODE = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.PARTNO = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridViewCheckBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.PRNVALID = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.panel1.SuspendLayout();
this.cm.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dv)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bs)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dataSet1)).BeginInit();
this.panel2.SuspendLayout();
this.SuspendLayout();
//
// panel1
//
this.panel1.BackColor = System.Drawing.Color.Gainsboro;
this.panel1.Controls.Add(this.button3);
this.panel1.Controls.Add(this.button2);
this.panel1.Controls.Add(this.label1);
this.panel1.Controls.Add(this.btExport);
this.panel1.Controls.Add(this.dtED);
this.panel1.Controls.Add(this.dtSD);
this.panel1.Controls.Add(this.tbSearch);
this.panel1.Controls.Add(this.btSearch);
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Padding = new System.Windows.Forms.Padding(5);
this.panel1.Size = new System.Drawing.Size(954, 75);
this.panel1.TabIndex = 0;
//
// button3
//
this.button3.Location = new System.Drawing.Point(254, 8);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(42, 59);
this.button3.TabIndex = 13;
this.button3.Text = ">>";
this.button3.UseVisualStyleBackColor = true;
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// button2
//
this.button2.Location = new System.Drawing.Point(8, 8);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(42, 59);
this.button2.TabIndex = 12;
this.button2.Text = "<<";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// label1
//
this.label1.Location = new System.Drawing.Point(302, 15);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(149, 23);
this.label1.TabIndex = 11;
this.label1.Text = "검색어를 입력하세요";
//
// btExport
//
this.btExport.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btExport.Image = ((System.Drawing.Image)(resources.GetObject("btExport.Image")));
this.btExport.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.btExport.Location = new System.Drawing.Point(683, 11);
this.btExport.Name = "btExport";
this.btExport.Padding = new System.Windows.Forms.Padding(10, 0, 5, 0);
this.btExport.Size = new System.Drawing.Size(145, 56);
this.btExport.TabIndex = 10;
this.btExport.Tag = "0";
this.btExport.Text = "내보내기(&O)";
this.btExport.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.btExport.UseVisualStyleBackColor = true;
this.btExport.Click += new System.EventHandler(this.btExport_Click);
//
// dtED
//
this.dtED.Location = new System.Drawing.Point(56, 38);
this.dtED.Name = "dtED";
this.dtED.Size = new System.Drawing.Size(192, 26);
this.dtED.TabIndex = 2;
//
// dtSD
//
this.dtSD.Location = new System.Drawing.Point(56, 9);
this.dtSD.Name = "dtSD";
this.dtSD.Size = new System.Drawing.Size(192, 26);
this.dtSD.TabIndex = 1;
//
// tbSearch
//
this.tbSearch.Font = new System.Drawing.Font("Calibri", 12F);
this.tbSearch.FormattingEnabled = true;
this.tbSearch.Location = new System.Drawing.Point(302, 40);
this.tbSearch.Name = "tbSearch";
this.tbSearch.Size = new System.Drawing.Size(219, 27);
this.tbSearch.TabIndex = 0;
this.tbSearch.Tag = "0";
//
// btSearch
//
this.btSearch.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btSearch.Image = ((System.Drawing.Image)(resources.GetObject("btSearch.Image")));
this.btSearch.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.btSearch.Location = new System.Drawing.Point(525, 11);
this.btSearch.Name = "btSearch";
this.btSearch.Padding = new System.Windows.Forms.Padding(10, 0, 5, 0);
this.btSearch.Size = new System.Drawing.Size(155, 56);
this.btSearch.TabIndex = 9;
this.btSearch.Tag = "0";
this.btSearch.Text = "검색(F5)";
this.btSearch.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.btSearch.UseVisualStyleBackColor = true;
this.btSearch.Click += new System.EventHandler(this.btSearch_Click);
//
// cm
//
this.cm.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem,
this.viewXMLToolStripMenuItem,
this.toolStripMenuItem1,
this.sendDataToolStripMenuItem});
this.cm.Name = "cm";
this.cm.Size = new System.Drawing.Size(129, 76);
//
// 목록저장ToolStripMenuItem
//
this.ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("목록저장ToolStripMenuItem.Image")));
this.ToolStripMenuItem.Name = "목록저장ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(128, 22);
this.ToolStripMenuItem.Text = "Export";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// viewXMLToolStripMenuItem
//
this.viewXMLToolStripMenuItem.Name = "viewXMLToolStripMenuItem";
this.viewXMLToolStripMenuItem.Size = new System.Drawing.Size(128, 22);
this.viewXMLToolStripMenuItem.Text = "View XML";
this.viewXMLToolStripMenuItem.Click += new System.EventHandler(this.viewXMLToolStripMenuItem_Click);
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(125, 6);
//
// sendDataToolStripMenuItem
//
this.sendDataToolStripMenuItem.ForeColor = System.Drawing.Color.Black;
this.sendDataToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("sendDataToolStripMenuItem.Image")));
this.sendDataToolStripMenuItem.Name = "sendDataToolStripMenuItem";
this.sendDataToolStripMenuItem.Size = new System.Drawing.Size(128, 22);
this.sendDataToolStripMenuItem.Text = "Print";
this.sendDataToolStripMenuItem.Click += new System.EventHandler(this.sendDataToolStripMenuItem_Click);
//
// tbFind
//
this.tbFind.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper;
this.tbFind.Dock = System.Windows.Forms.DockStyle.Fill;
this.tbFind.Font = new System.Drawing.Font("Calibri", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.tbFind.ImeMode = System.Windows.Forms.ImeMode.Alpha;
this.tbFind.Location = new System.Drawing.Point(0, 0);
this.tbFind.Name = "tbFind";
this.tbFind.Size = new System.Drawing.Size(898, 40);
this.tbFind.TabIndex = 3;
this.tbFind.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.tbFind.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tbiSearch_KeyDown);
//
// statusStrip1
//
this.statusStrip1.Location = new System.Drawing.Point(0, 583);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Size = new System.Drawing.Size(954, 22);
this.statusStrip1.TabIndex = 5;
this.statusStrip1.Text = "statusStrip1";
//
// dv
//
this.dv.A_DelCurrentCell = true;
this.dv.A_EnterToTab = true;
this.dv.A_KoreanField = null;
this.dv.A_UpperField = null;
this.dv.A_ViewRownumOnHeader = true;
this.dv.AllowUserToAddRows = false;
this.dv.AllowUserToDeleteRows = false;
this.dv.AutoGenerateColumns = false;
this.dv.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dv.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.sTIMEDataGridViewTextBoxColumn,
this.ETIME,
this.jTYPEDataGridViewTextBoxColumn,
this.BATCH,
this.sIDDataGridViewTextBoxColumn,
this.SID0,
this.rIDDataGridViewTextBoxColumn,
this.rID0DataGridViewTextBoxColumn,
this.lOCDataGridViewTextBoxColumn,
this.qTYDataGridViewTextBoxColumn,
this.qtymax,
this.vNAMEDataGridViewTextBoxColumn,
this.VLOT,
this.CUSTCODE,
this.PARTNO,
this.dataGridViewCheckBoxColumn1,
this.PRNVALID,
this.Column1});
this.dv.ContextMenuStrip = this.cm;
this.dv.DataSource = this.bs;
dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle7.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle7.Padding = new System.Windows.Forms.Padding(3);
dataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dv.DefaultCellStyle = dataGridViewCellStyle7;
this.dv.Dock = System.Windows.Forms.DockStyle.Fill;
this.dv.Location = new System.Drawing.Point(0, 75);
this.dv.Name = "dv";
this.dv.ReadOnly = true;
dataGridViewCellStyle8.Font = new System.Drawing.Font("Calibri", 9.75F);
this.dv.RowsDefaultCellStyle = dataGridViewCellStyle8;
this.dv.RowTemplate.DefaultCellStyle.Font = new System.Drawing.Font("Calibri", 9.75F);
this.dv.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dv.Size = new System.Drawing.Size(954, 468);
this.dv.TabIndex = 2;
this.dv.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dv_CellDoubleClick);
//
// bs
//
this.bs.DataMember = "Component_Reel_Result";
this.bs.DataSource = this.dataSet1;
this.bs.Sort = "wdate desc";
//
// dataSet1
//
this.dataSet1.DataSetName = "DataSet1";
this.dataSet1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
//
// ta
//
this.ta.ClearBeforeFill = true;
//
// panel2
//
this.panel2.Controls.Add(this.tbFind);
this.panel2.Controls.Add(this.button1);
this.panel2.Dock = System.Windows.Forms.DockStyle.Bottom;
this.panel2.Location = new System.Drawing.Point(0, 543);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(954, 40);
this.panel2.TabIndex = 6;
//
// button1
//
this.button1.Dock = System.Windows.Forms.DockStyle.Right;
this.button1.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.button1.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.button1.Location = new System.Drawing.Point(898, 0);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(56, 40);
this.button1.TabIndex = 11;
this.button1.Tag = "0";
this.button1.Text = "KEY";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// sTIMEDataGridViewTextBoxColumn
//
this.sTIMEDataGridViewTextBoxColumn.DataPropertyName = "STIME";
dataGridViewCellStyle1.Format = "MM-dd HH:mm:ss";
this.sTIMEDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1;
this.sTIMEDataGridViewTextBoxColumn.HeaderText = "시작";
this.sTIMEDataGridViewTextBoxColumn.Name = "sTIMEDataGridViewTextBoxColumn";
this.sTIMEDataGridViewTextBoxColumn.ReadOnly = true;
//
// ETIME
//
this.ETIME.DataPropertyName = "ETIME";
dataGridViewCellStyle2.Format = "MM-dd HH:mm:ss";
this.ETIME.DefaultCellStyle = dataGridViewCellStyle2;
this.ETIME.HeaderText = "종료";
this.ETIME.Name = "ETIME";
this.ETIME.ReadOnly = true;
//
// jTYPEDataGridViewTextBoxColumn
//
this.jTYPEDataGridViewTextBoxColumn.DataPropertyName = "JTYPE";
this.jTYPEDataGridViewTextBoxColumn.HeaderText = "형태";
this.jTYPEDataGridViewTextBoxColumn.Name = "jTYPEDataGridViewTextBoxColumn";
this.jTYPEDataGridViewTextBoxColumn.ReadOnly = true;
//
// BATCH
//
this.BATCH.DataPropertyName = "BATCH";
this.BATCH.HeaderText = "BATCH";
this.BATCH.Name = "BATCH";
this.BATCH.ReadOnly = true;
//
// sIDDataGridViewTextBoxColumn
//
this.sIDDataGridViewTextBoxColumn.DataPropertyName = "SID";
this.sIDDataGridViewTextBoxColumn.HeaderText = "SID";
this.sIDDataGridViewTextBoxColumn.Name = "sIDDataGridViewTextBoxColumn";
this.sIDDataGridViewTextBoxColumn.ReadOnly = true;
//
// SID0
//
this.SID0.DataPropertyName = "SID0";
dataGridViewCellStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
this.SID0.DefaultCellStyle = dataGridViewCellStyle3;
this.SID0.HeaderText = "*";
this.SID0.Name = "SID0";
this.SID0.ReadOnly = true;
//
// rIDDataGridViewTextBoxColumn
//
this.rIDDataGridViewTextBoxColumn.DataPropertyName = "RID";
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
this.rIDDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle4;
this.rIDDataGridViewTextBoxColumn.HeaderText = "RID";
this.rIDDataGridViewTextBoxColumn.Name = "rIDDataGridViewTextBoxColumn";
this.rIDDataGridViewTextBoxColumn.ReadOnly = true;
//
// rID0DataGridViewTextBoxColumn
//
this.rID0DataGridViewTextBoxColumn.DataPropertyName = "RID0";
dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
this.rID0DataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle5;
this.rID0DataGridViewTextBoxColumn.HeaderText = "*";
this.rID0DataGridViewTextBoxColumn.Name = "rID0DataGridViewTextBoxColumn";
this.rID0DataGridViewTextBoxColumn.ReadOnly = true;
//
// lOCDataGridViewTextBoxColumn
//
this.lOCDataGridViewTextBoxColumn.DataPropertyName = "LOC";
this.lOCDataGridViewTextBoxColumn.HeaderText = "L/R";
this.lOCDataGridViewTextBoxColumn.Name = "lOCDataGridViewTextBoxColumn";
this.lOCDataGridViewTextBoxColumn.ReadOnly = true;
//
// qTYDataGridViewTextBoxColumn
//
this.qTYDataGridViewTextBoxColumn.DataPropertyName = "QTY";
this.qTYDataGridViewTextBoxColumn.HeaderText = "QTY";
this.qTYDataGridViewTextBoxColumn.Name = "qTYDataGridViewTextBoxColumn";
this.qTYDataGridViewTextBoxColumn.ReadOnly = true;
//
// qtymax
//
this.qtymax.DataPropertyName = "qtymax";
this.qtymax.HeaderText = "(MAX)";
this.qtymax.Name = "qtymax";
this.qtymax.ReadOnly = true;
//
// vNAMEDataGridViewTextBoxColumn
//
this.vNAMEDataGridViewTextBoxColumn.DataPropertyName = "VNAME";
dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
this.vNAMEDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle6;
this.vNAMEDataGridViewTextBoxColumn.HeaderText = "Vender";
this.vNAMEDataGridViewTextBoxColumn.Name = "vNAMEDataGridViewTextBoxColumn";
this.vNAMEDataGridViewTextBoxColumn.ReadOnly = true;
//
// VLOT
//
this.VLOT.DataPropertyName = "VLOT";
this.VLOT.HeaderText = "Vendor #";
this.VLOT.Name = "VLOT";
this.VLOT.ReadOnly = true;
//
// CUSTCODE
//
this.CUSTCODE.DataPropertyName = "VNAME";
this.CUSTCODE.HeaderText = "SUP";
this.CUSTCODE.Name = "CUSTCODE";
this.CUSTCODE.ReadOnly = true;
//
// PARTNO
//
this.PARTNO.DataPropertyName = "PARTNO";
this.PARTNO.HeaderText = "PARTNO";
this.PARTNO.Name = "PARTNO";
this.PARTNO.ReadOnly = true;
//
// dataGridViewCheckBoxColumn1
//
this.dataGridViewCheckBoxColumn1.DataPropertyName = "PRNATTACH";
this.dataGridViewCheckBoxColumn1.HeaderText = "부착";
this.dataGridViewCheckBoxColumn1.Name = "dataGridViewCheckBoxColumn1";
this.dataGridViewCheckBoxColumn1.ReadOnly = true;
this.dataGridViewCheckBoxColumn1.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridViewCheckBoxColumn1.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
//
// PRNVALID
//
this.PRNVALID.DataPropertyName = "PRNVALID";
this.PRNVALID.HeaderText = "검증";
this.PRNVALID.Name = "PRNVALID";
this.PRNVALID.ReadOnly = true;
this.PRNVALID.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.PRNVALID.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
//
// Column1
//
this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.Column1.HeaderText = "비고";
this.Column1.Name = "Column1";
this.Column1.ReadOnly = true;
//
// fHistory
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(954, 605);
this.Controls.Add(this.dv);
this.Controls.Add(this.panel2);
this.Controls.Add(this.panel1);
this.Controls.Add(this.statusStrip1);
this.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.KeyPreview = true;
this.Name = "fHistory";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Data History";
this.Load += new System.EventHandler(this.fHistory_Load);
this.panel1.ResumeLayout(false);
this.cm.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dv)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bs)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dataSet1)).EndInit();
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
private System.Windows.Forms.Label label1;
#endregion
private System.Windows.Forms.Panel panel1;
private arCtl.arDatagridView dv;
private System.Windows.Forms.BindingSource bs;
private DataSet1 dataSet1;
private System.Windows.Forms.Button btSearch;
private System.Windows.Forms.ComboBox tbSearch;
private System.Windows.Forms.DateTimePicker dtSD;
private System.Windows.Forms.DateTimePicker dtED;
private System.Windows.Forms.TextBox tbFind;
private System.Windows.Forms.Button btExport;
private System.Windows.Forms.ContextMenuStrip cm;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem sendDataToolStripMenuItem;
private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.ToolStripMenuItem viewXMLToolStripMenuItem;
private DataSet1TableAdapters.Component_Reel_ResultTableAdapter ta;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.DataGridViewTextBoxColumn sTIMEDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn ETIME;
private System.Windows.Forms.DataGridViewTextBoxColumn jTYPEDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn BATCH;
private System.Windows.Forms.DataGridViewTextBoxColumn sIDDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn SID0;
private System.Windows.Forms.DataGridViewTextBoxColumn rIDDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn rID0DataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn lOCDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn qTYDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn qtymax;
private System.Windows.Forms.DataGridViewTextBoxColumn vNAMEDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn VLOT;
private System.Windows.Forms.DataGridViewTextBoxColumn CUSTCODE;
private System.Windows.Forms.DataGridViewTextBoxColumn PARTNO;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewCheckBoxColumn1;
private System.Windows.Forms.DataGridViewTextBoxColumn PRNVALID;
private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
}
}

View File

@@ -0,0 +1,305 @@
using AR;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Project.Dialog
{
public partial class fHistory : Form
{
public StdLabelPrint.LabelPrint PrinterL = null;
// public StdLabelPrint.LabelPrint PrinterR = null;
public fHistory()
{
InitializeComponent();
//Pub.init();
this.KeyDown += (s1, e1) =>
{
if (e1.KeyCode == Keys.Escape) this.Close();
else if (e1.KeyCode == Keys.F5) btSearch.PerformClick();
};
this.tbSearch.KeyDown += (s1, e1) => { if (e1.KeyCode == Keys.Enter) btSearch.PerformClick(); };
this.dv.CellFormatting += (s1, e1) =>
{
if (e1.RowIndex >= 0 && e1.ColumnIndex >= 0)
{
var dv = s1 as DataGridView;
//var cell = dv.Rows[e1.RowIndex].Cells["dvc_upload"];
//if (cell.Value != null)
//{
// if (cell.Value.ToString() == "X")
// dv.Rows[e1.RowIndex].DefaultCellStyle.ForeColor = Color.Red;
// else
// dv.Rows[e1.RowIndex].DefaultCellStyle.ForeColor = Color.Black;
//}
//else dv.Rows[e1.RowIndex].DefaultCellStyle.ForeColor = Color.Black;
}
};
this.dv.DataError += dv_DataError;
this.Text =$"Result Viewer ({SETTING.Data.McName})";
///this.Text = string.Format("{0} ver{1} - {2}", Application.ProductName, "");
}
void dv_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
}
private void fHistory_Load(object sender, EventArgs e)
{
dtSD.Value = DateTime.Now;
dtED.Value = DateTime.Now;
//PrinterL = new StdLabelPrint.LabelPrint(SETTING.Data.PrinterName);
//PrinterR = new StdLabelPrint.LabelPrint("PrinterR");
//ApplyZplCode();
refreshList();
}
//public void ApplyZplCode()
//{
// string zplfil = string.Empty;
// var basedir = new System.IO.DirectoryInfo(Util.CurrentPath);
// if (SETTING.Data.PrinterForm7)
// {
// zplfil = System.IO.Path.Combine(basedir.Parent.FullName, "zpl7.txt");
// }
// else
// {
// zplfil = System.IO.Path.Combine(basedir.Parent.FullName, "zpl.txt");
// }
// if (System.IO.File.Exists(zplfil))
// {
// PrinterL.baseZPL = System.IO.File.ReadAllText(zplfil, System.Text.Encoding.Default);
// }
// else
// {
// Pub.log.AddAT("기본 ZPL파일이 없어 설정파일의 내용을 사용합니다");
// if (SETTING.Data.PrinterForm7)
// {
// PrinterL.baseZPL = Properties.Settings.Default.ZPL7;
// }
// else
// {
// PrinterL.baseZPL = Properties.Settings.Default.ZPL;
// }
// }
//}
private void checkBox5_CheckedChanged(object sender, EventArgs e)
{
// cmbUser.Enabled = checkBox5.Checked;
// if(cmbUser.Enabled && cmbUser.Text.isEmpty())
// {
// cmbUser.Text = string.Format("{0}({1})", Pub.LoginName, Pub.LoginNo);
// }
}
void refreshList()
{
//검색일자 검색
if (dtED.Value < dtSD.Value)
{
UTIL.MsgE("검색종료일자가 시작일자보다 작습니다");
dtSD.Value = dtED.Value;
dtSD.Focus();
return;
}
//저장소초기화
this.dataSet1.Component_Reel_Result.Clear();
System.Diagnostics.Stopwatch wat = new System.Diagnostics.Stopwatch();
wat.Restart();
//자료를 검색한다.
var search = tbSearch.Text.Trim();
if (search.isEmpty()) search = "%";
else search = "%" + search + "%";
ta.FillBySearch(this.dataSet1.Component_Reel_Result, SETTING.Data.McName, dtSD.Value.ToShortDateString(), dtED.Value.ToShortDateString(), search);
wat.Stop();
tbSearch.Focus();
tbSearch.SelectAll();
dv.AutoResizeColumns();
}
private void btSearch_Click(object sender, EventArgs e)
{
refreshList();
}
private void tbiSearch_KeyDown(object sender, KeyEventArgs e)
{
//내부검색기능
if (e.KeyCode == Keys.Enter)
{
FindData();
}
}
void FindData()
{
string searchkey = tbFind.Text.Trim();
if (searchkey.isEmpty())
{
bs.Filter = "";
tbFind.BackColor = SystemColors.Control;
}
else
{
string filter = "rid0 like '%{0}%' or sid0 like '%{0}%' or qr like '%{0}%' or vlot like '%{0}%'";
filter = string.Format(filter, searchkey);
try
{
bs.Filter = filter;
tbFind.BackColor = Color.Lime;
}
catch
{
bs.Filter = "";
tbFind.BackColor = Color.Pink;
}
}
tbFind.Focus();
tbFind.SelectAll();
}
private void btExport_Click(object sender, EventArgs e)
{
saveXLS();
}
void saveXLS()
{
var license = ("Amkor Technology/windows-242f240302c3e50d6cb1686ba2q4k0o9").Split('/');
var xls = new libxl.XmlBook();
xls.setKey(license[0], license[1]);
xls.addSheet("Result");
var Sheet = xls.getSheet(0);
int row = 0;
for (int i = 0; i < this.dv.Columns.Count; i++)
{
var col = this.dv.Columns[i];
Sheet.writeStr(row, i, col.HeaderText);
}
row += 1;
foreach (DataGridViewRow dr in this.dv.Rows)
{
for (int i = 0; i < this.dv.Columns.Count; i++)
{
var propertyName = dv.Columns[i].DataPropertyName;
if (propertyName.isEmpty())
{
Sheet.writeStr(row, i, dr.Cells[i].FormattedValue.ToString());// dr[colname].ToString());
}
else
{
var dType = this.dataSet1.Component_Reel_Result.Columns[propertyName].DataType;
if (dType == typeof(float)) Sheet.writeNum(row, i, (float)dr.Cells[i].Value);
else if (dType == typeof(double)) Sheet.writeNum(row, i, (double)dr.Cells[i].Value);
else if (dType == typeof(int)) Sheet.writeNum(row, i, (int)dr.Cells[i].Value);
else Sheet.writeStr(row, i, dr.Cells[i].FormattedValue.ToString());// dr[colname].ToString());
}
}
row += 1;
}
Sheet.setAutoFitArea(0, 0, row, dv.Columns.Count);
string filename = "export_{0}~{1}.xlsx";
filename = string.Format(filename, dtSD.Value.ToString("yyyyMMdd"), dtED.Value.ToString("yyyyMMdd"));
var sd = new SaveFileDialog();
sd.Filter = "xlsx|*.xlsx";
sd.FileName = filename;
sd.RestoreDirectory = true;
if (sd.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
try
{
xls.save(sd.FileName);
PUB.log.Add("Export Data : " + sd.FileName);
if (UTIL.MsgQ("다음 파일이 생성되었습니다.\n\n" + sd.FileName + "\n\n파일을 확인하시겠습니까?") == DialogResult.Yes)
UTIL.RunExplorer(sd.FileName);
}
catch (Exception ex)
{
PUB.log.AddE(ex.Message);
}
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
saveXLS();
}
private void label2_Click(object sender, EventArgs e)
{
}
private void viewXMLToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void dv_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
}
private void sendDataToolStripMenuItem_Click(object sender, EventArgs e)
{
var drv = this.bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as DataSet1.Component_Reel_ResultRow;
using(var f = new Dialog.fManualPrint(dr.SID,dr.VLOT, dr.QTY.ToString(),dr.MFGDATE,dr.RID, dr.VNAME, dr.PARTNO))
{
f.ShowDialog();
}
}
private void button1_Click(object sender, EventArgs e)
{
var str = tbFind.Text.Trim();
var f = new Dialog.fTouchKeyFull("검색어 입력", str);
if (f.ShowDialog() != DialogResult.OK) return;
tbFind.Text = f.tbInput.Text.Trim();
FindData();
}
private void button2_Click(object sender, EventArgs e)
{
var sd = dtSD.Value.AddDays(-1);
dtSD.Value = sd;
dtED.Value = sd;
}
private void button3_Click(object sender, EventArgs e)
{
var sd = dtED.Value.AddDays(1);
dtSD.Value = sd;
dtED.Value = sd;
}
}
}

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More