public MainWindow() { InitializeComponent(); this.Title = "BO23 KIOSK (version " + Assembly.GetExecutingAssembly().GetName().Version.ToString() + ")"; /* ------------------------------------------------- * เรียกค่าตั้งเริ่มต้นจากฐานข้อมูล * -------------------------------------------------*/ string LogPath = string.Empty; ushort dioCardNbr = 0; using (DB_Manager.ConfigManagement cm = new DB_Manager.ConfigManagement()) { try { Testing = cm.GetIntValue("TESTING") == 1 ? true : false; } catch { Testing = false; } try { LogPath = cm.GetCharValue("KIOSK_LogPath"); } catch { LogPath = @"C:\BHM\Log\kiosk_gui"; } try { OrgCode = cm.GetCharValue("OrgCode"); } catch { OrgCode = "0689"; /* ซีพี-หนองจอก */ } try { dioCardNbr = (ushort)cm.GetIntValue("DIO_Card_Nbr"); } catch { dioCardNbr = 0 /*เข้าเป็นตัวแรก*/; } } log = new LogFile.Log(LogPath, "Main log"); /* ------------------------------------------------- * เขียนข้อความเริ่มต้น * -------------------------------------------------*/ log.AppendText("-------------------------------------------------"); log.AppendText("START NEW RUNNING."); log.AppendText("-------------------------------------------------"); System.Diagnostics.Debug.WriteLine("-------------------------------------------------"); System.Diagnostics.Debug.WriteLine("START NEW RUNNING."); System.Diagnostics.Debug.WriteLine("-------------------------------------------------"); /* ------------------------------------------------- * ติดตั้ง DIO กับระบบ * -------------------------------------------------*/ DIO_Library.D7432.SetupLog(); short dioCode; string dioMessage; DIO_Library.D7432.Initial(dioCardNbr, out dioCode, out dioMessage); DIO_Library.D7432.Testing = false; //<-------------------------------------------------------------<-TESTING /* ------------------------------------------------- * ติดตั้ง ระบบส่งหน้า ของ WPF * -------------------------------------------------*/ pageTransControl.TransitionType = WpfPageTransitions.PageTransitionType.Appear; Helper.NewPage(this, PageName.SplashScreen); /* ------------------------------------------------- * ติดตั้ง Events * -------------------------------------------------*/ this.Loaded += new RoutedEventHandler(MainWindow_Loaded); this.Unloaded += new RoutedEventHandler(MainWindow_Unloaded); }
public SplashScreen(MainWindow owner) { InitializeComponent(); this.Unloaded += new RoutedEventHandler(UserControl_Unloaded); _kiosk = owner; //if (_kiosk.motionSensor == null) _kiosk.motionSensor = new DiThreadWithState(1000); //var h = new MotionStateEventHandler(Motion_Callback); //if (!_kiosk.motionSensor.IsOnMotionDetectRegistered(h)) _kiosk.motionSensor.OnMotionDetected += h; //_kiosk.motionSensor.Start(); //อ่านชื่อ Splash Images try { string SplashImageDIR = string.Empty; int SplashInterval; using (DB_Manager.ConfigManagement cm = new DB_Manager.ConfigManagement()) { SplashImageDIR = cm.GetCharValue("SplashImageDIR"); SplashInterval = (int)cm.GetIntValue("SplashInterval"); } filePaths = System.IO.Directory.GetFiles(SplashImageDIR); LoadImage(); timerSplashImage.Tick += timerSplashScreen_Tick; timerSplashImage.Interval = new TimeSpan(0, 0, SplashInterval); timerSplashImage.Start(); } catch { } }
// initial log public void InitLog() { // load configures using (DB_Manager.ConfigManagement cm = new DB_Manager.ConfigManagement()) { /* ---------------------------------------------- * Log file. * ----------------------------------------------*/ string logPath; try { logPath = cm.GetCharValue("VIS_LogPath"); if (logPath.Equals("")) { logPath = @"C:\BHM\Log\VISION"; } } catch { logPath = @"C:\BHM\Log\VISION"; } /* ---------------------------------------------- * Create log file * ----------------------------------------------*/ log = new LogFile.Log(logPath, "vision"); // สร้าง timer // บันทึก log.AppendText("AUTO RUN CREATED."); } }
public static void SetupLog() { string logPath = string.Empty; using (DB_Manager.ConfigManagement cm = new DB_Manager.ConfigManagement()) { try { logPath = cm.GetCharValue("DIO_LogPath"); } catch { logPath = @"C:\BHM\BHMLog\DIO"; } } log = new LogFile.Log(logPath, "DIO"); }
private void button1_Click(object sender, EventArgs e) { string LogPath = string.Empty; using (DB_Manager.ConfigManagement cm = new DB_Manager.ConfigManagement()) { try { LogPath = cm.GetCharValue("Motion_Card_Log_Path"); } catch { LogPath = @"C:\TestLog\Test"; } } log = new LogFile.Log(LogPath, "Test log"); }
public void OnRunning(object sender, EventArgs e) { timer.Enabled = false; // load configures using (DB_Manager.ConfigManagement cm = new DB_Manager.ConfigManagement()) { string request = cm.GetCharValue(_runRequestFieldName); if (request.ToUpper().Equals("RUN")) { OnPropertyChanged("RUN ONCE"); } } timer.Enabled = true; }
public RC522MegawinReader(int readTimeout, string portName) { string logPath = string.Empty; using (DB_Manager.ConfigManagement cm = new DB_Manager.ConfigManagement()) { try { logPath = cm.GetCharValue("RFID_Reader_LogPath"); } catch { logPath = @"C:\BHM\BHMlog\RFID_Reader"; } } log = new LogFile.Log(logPath, "RFID_Reader"); _readTimeout = readTimeout; _portName = portName; }
void ShowProgression_AdminLogin() { string logText = ">>> แสดงหน้า Admin Menu"; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); string AdminName = string.Empty; using (DB_Manager.ConfigManagement cm = new DB_Manager.ConfigManagement()) { AdminName = cm.GetCharValue("AdminName"); } _kiosk.LoginUser.UserName = AdminName; _kiosk.LoginUser.Password = passwordBox.Password; //txtKey.Text; Helper.ShowNewPage(_kiosk, this, PageName.Progression_AdminLogin); }
void AttachReaderCallback() { string logText = "Attaching rfid reader to Activate Card Page..."; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); try { string RFIDReaderPortName = string.Empty; using (DB_Manager.ConfigManagement cm = new DB_Manager.ConfigManagement()) { RFIDReaderPortName = cm.GetCharValue("RFIDReaderPortName"); } if (_kiosk.rfidReader == null) { _kiosk.rfidReader = new RfidReader.RC522MegawinReader(70, RFIDReaderPortName); } var h = new RfidReader.RC522MegawinEventHandler(Reader_Callback); if (!_kiosk.rfidReader.IsRC522MegawinEventHandlerRegistered(h)) { _kiosk.rfidReader.OnDataReceived += h; } _kiosk.rfidReader.Connect(); logText = "Done attaching rfid reader."; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); } catch (Exception ex2) { if (!_kiosk.rfidReader.IgnoreIfError) { logText = "Attaching rfid reader error!" + Environment.NewLine + ex2.Message; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.Warning_AdminMenuReaderError); } else { logText = "Attaching rfid reader error!" + Environment.NewLine + ex2.Message; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); /* DO NOTHING */ } } }
public TMT82_Printer(string printer_name) { /* ----------------------------------------- * LOG PATH * -----------------------------------------*/ string logPath = string.Empty; using (DB_Manager.ConfigManagement cm = new DB_Manager.ConfigManagement()) { try { logPath = cm.GetCharValue("Printer_LogPath"); } catch { logPath = @"C:\BHM\BHMlog\TMT82_Printer"; } } log = new LogFile.Log(logPath, "TMT82_Printer"); /* ----------------------------------------- * Create status API * -----------------------------------------*/ this.PRINTER_NAME = printer_name; _objAPI = new StatusAPI(); }
/// <summary> /// Constructor /// </summary> public VISCOM() { /* ----------------------------------------- * LOG PATH * -----------------------------------------*/ string logPath = string.Empty; using (DB_Manager.ConfigManagement cm = new DB_Manager.ConfigManagement()) { try { logPath = cm.GetCharValue("VISCOM_LogPath"); } catch { logPath = @"C:\BHM\BHMLog\VISCOM"; } } log = new LogFile.Log(logPath, "VISCOM"); /* ล้างค่า */ _lastResult.IncomeMessage = ""; _lastResult.Result = VisionResult.NG; _lastResult.Count = 0; _lastResult.RespondedCode = 0; _lastResult.Message = ""; }
/// <summary> /// Validate system /// </summary> /// <param name="kiosk"></param> /// <returns></returns> public static bool CheckSystem(MainWindow kiosk) {/*ระบบต้อง Return ค่าเพื่อตัดสินใจ ใน 2 ทางเลือก*/ string logText = "Validating system..."; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); /* -------------------------------------------------------------------------------------- * ตรวจสอบเครื่องอ่าน RFID * -------------------------------------------------------------------------------------- */ try { /* ตั้งค่าเครื่องอ่าน RFID */ string RFIDReaderPortName = string.Empty; bool ignoreIfReaderError = false; using (DB_Manager.ConfigManagement cm = new DB_Manager.ConfigManagement()) { try { RFIDReaderPortName = cm.GetCharValue("RFIDReaderPortName"); } catch { RFIDReaderPortName = "COM1"; } try { ignoreIfReaderError = cm.GetCharValue("IgnoreRFIDReaderError").ToUpper().Equals("YES") ? true : false; } catch { ignoreIfReaderError = true; } } /* เพิ่ม RFID Reader Object ให้กับระบบคีอ์ออส */ if (kiosk.rfidReader == null) { kiosk.rfidReader = new RfidReader.RC522MegawinReader(70, RFIDReaderPortName); } kiosk.rfidReader.IgnoreIfError = ignoreIfReaderError; /* ตรวจสอบการเชื่อมต่อเครื่องอ่าน */ try { logText = "เชื่อมต่อเครื่องอ่าน RFID..." + RFIDReaderPortName; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); kiosk.rfidReader.Connect(); if (kiosk.rfidReader.Port.IsOpen) { logText = "เครื่องอ่าน RFID เชื่อมต่อได้."; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); } else { logText = "ไม่สามารถเชื่อมต่อเครื่องอ่าน RFID!"; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); } } catch (Exception ex1) { logText = "ไม่สามารถเชื่อมต่อเครื่องอ่าน RFID! เนื่องจาก " + ex1.Message; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); } } catch (Exception ex0) { logText = "ไม่สามารถเชื่อมต่อเครื่องอ่าน RFID! เนื่องจาก " + ex0.Message; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); } /* -------------------------------------------------------------------------------------- * ตรวจสอบเครื่องพิมพ์ * -------------------------------------------------------------------------------------- */ bool isPrinterValid = false; try { logText = "กำลังเชื่อมต่อเครื่องพิมพ์..."; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); string Printer_Name = string.Empty; using (DB_Manager.ConfigManagement cm = new DB_Manager.ConfigManagement()) { try { Printer_Name = cm.GetCharValue("Printer_Name"); } catch { Printer_Name = "EPSON TM-T82 Receipt"; } } if (kiosk.slipPrinter == null) { kiosk.slipPrinter = new SlipPrinter.TMT82_Printer(Printer_Name); } kiosk.slipPrinter.Open(); kiosk.slipPrinter.UpdatePrinterStatus(); if ((kiosk.slipPrinter.printStatus & ASB.ASB_NO_RESPONSE) == ASB.ASB_NO_RESPONSE || (kiosk.slipPrinter.printStatus & ASB.ASB_COVER_OPEN) == ASB.ASB_COVER_OPEN || (kiosk.slipPrinter.printStatus & ASB.ASB_AUTOCUTTER_ERR) == ASB.ASB_AUTOCUTTER_ERR || (kiosk.slipPrinter.printStatus & ASB.ASB_PAPER_END) == ASB.ASB_PAPER_END) { logText = "ผิดพลาด! เครื่องพิมพ์ไม่พร้อมใช้งาน " + Environment.NewLine + kiosk.slipPrinter.printStatus.ToString(); kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); } logText = "เชื่อมต่อเครื่องพิมพ์ได้แล้ว"; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); isPrinterValid = true; } catch (Exception ex) { logText = "เครื่องพิมพ์ผิดพลาด! เนื่องจาก " + ex.Message; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); } /* -------------------------------------------------------------------------------------- * ตรวจสอบระบบ VISION * ณพสิษฐ์-14Mar2018-เพิ่มการตรวจสอบวิชชั่น * -------------------------------------------------------------------------------------- */ bool isVisionRunning = false; try { logText = "กำลังตรวจสอบโปรแกรมกล้อง..."; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); long iRet = -1; using (DB_Manager.ConfigManagement cm = new DB_Manager.ConfigManagement()) { try { iRet = cm.GetIntValue("CAM1_Status"); } catch { iRet = -1; } } if (iRet == 82) { isVisionRunning = true; logText = "โปรแกรมกล้องพร้อมทำงานแล้ว"; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); } else { logText = "โปรแกรมกล้องผิดพลาด! เนื่องจาก " + "ระบบตรวจไม่พอโปรแกรมกล้อง"; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); } } catch (Exception ex) { logText = "โปรแกรมกล้องผิดพลาด! เนื่องจาก " + ex.Message; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); } /* -------------------------------------------------------------------------------------- * ONLINE BO23 * ณพสิษฐ์-14Mar2018-เพิ่มการตรวจสอบ WS ก่อนระบบจะยอมรับตะกร้า * -------------------------------------------------------------------------------------- */ bool isWSOnline = false; try { logText = "กำลังตรวจสอบสัญญาณ ONLINE ..."; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); for (int i = 0; i < 3; i++) { if (OnlineService.SearchCarTag("")) //ส่งข้อมูลว่าง รอตอบกลับ { //เชื่อมต่อได้แต่พบเลข ถือว่าผ่าน isWSOnline = true; logText = "ONLINE เชื่อมต่อได้ แต่ SearchCarTag(\"\") พบเลข ถือว่า เชื่อมต่อผ่าน"; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); break; } else { //เชื่อมต่อได้แต่ไม่พบเลข ถือว่าผ่าน isWSOnline = true; logText = "ONLINE เชื่อมต่อได้ แต่ SearchCarTag(\"\") ไม่พบเลข ถือว่า เชื่อมต่อผ่าน"; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); break; } } } catch (Exception ex) { logText = "การเชื่อมต่อ ONLINE ผิดพลาด! เนื่องจาก " + ex.Message; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); } /* -------------------------------------------------------------------------------------- * SUMMARY OF VALIDATIONS * -------------------------------------------------------------------------------------- */ logText = "กำลังสรุป การตรวจสอบ..."; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); //if (kiosk.Testing) return true; // <-------------------------------------------------------------------------------------------<--TESTING if ((kiosk.rfidReader.IgnoreIfError || kiosk.rfidReader.Port.IsOpen) && (isPrinterValid) && (isVisionRunning) && (isWSOnline)) { /* พร้อมใช้งาน */ logText = "------พร้อมใช้งาน------"; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); return(true); } else /* ไม่พร้อมใช้งาน */ { logText = "------ระบบไม่พร้อมใช้งาน------"; kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); return(false); } }
private void autoInteractive_DoWork(object sender, DoWorkEventArgs e) { try { /* ----------------------------------------- * คำอธิบายเพิ่มเติมอยู่ด้านล่าง อยู่นอกคลาส * -----------------------------------------*/ string logText; logText = "Auto interactive DoWork()..."; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); /* ----------------------------------------- * เริ่มต้นตั้งแรกด้วยค่าเดียวกัน * -----------------------------------------*/ short resCode; string respond; ushort logic; /* ----------------------------------------- * ล้าง DIO = OFF * -----------------------------------------*/ //Utilities.PLC_Reset(); DIO_Library.D7432.WritePin(0, 16, false, out resCode, out respond); /* X27:AUTO:NG */ DIO_Library.D7432.WritePin(0, 17, false, out resCode, out respond); /* X25:AUTO:OK*/ ////DIO_Library.D7432.WritePin(0, 19, false, out resCode, out respond); /* X23:ON:BUFF:ST */ ////DIO_Library.D7432.WritePin(0, 24, false, out resCode, out respond); /* X15:ON:AUTO:TT, OFF:AUTO:NOUSE, OFF:NOCHECK:UTRUN*/ //DIO_Library.D7432.WritePin(0, 25, false, out resCode, out respond); /* ABS360 */ ////DIO_Library.D7432.WritePin(0, 26, false, out resCode, out respond); /* X21:OFF:AUTO, ON:NO CHECK AND UTURN */ //DIO_Library.D7432.WritePin(0, 27, false, out resCode, out respond); /* HOME */ //DIO_Library.D7432.WritePin(0, 28, false, out resCode, out respond); /* ABS00 */ //DIO_Library.D7432.WritePin(0, 29, false, out resCode, out respond); /* ABS90 */ //DIO_Library.D7432.WritePin(0, 30, false, out resCode, out respond); /* ABS180 */ //DIO_Library.D7432.WritePin(0, 31, false, out resCode, out respond); /* ABS270 */ /* SET TO INSPECTION OF ST AND UTURN */ //DIO_Library.D7432.WritePin(0, 19, true, out resCode, out respond); /* X23:ON:CHECK:ST , OFF:NOUSE*/ //DIO_Library.D7432.WritePin(0, 24, false, out resCode, out respond); /* X15:ON:AUTO:TT, OFF:AUTO:NOUSE, OFF:NOCHECK:UTRUN*/ //DIO_Library.D7432.WritePin(0, 26, false, out resCode, out respond); /* X21:OFF:AUTO, ON:NO CHECK AND UTURN */ Thread.Sleep(250); /* ----------------------------------------- * ตัวแปร * -----------------------------------------*/ JobResultControl.ResultReport job = new JobResultControl.ResultReport(); bool INP1, INP2, isTimeout, isNext; Stopwatch sw = new Stopwatch(); //long dicisionTime = Classes.PushBasketTiming.TIME_ROTATE_1REV; int totalGoodBasket = _kiosk.SelectedTwoToneRow.GOOD_NUMBER; int[] sumPageGoodBasket = new int[4]; int rotaryState = 0, visionState = 0; int goodBasket = 0; bool isNG = true; /* --------------------- VISION LOOP -------------------- * วนลูป ไปจนกว่าจะ * ก. รับได้ครบ * ข. กดหยุดการป้อน * -----------------------------------------*/ while (!StopFlag)/* ถ้ายังไม่ครบ หรือ ยังไม่กดหยุด*/ { // PRE-VISION --------------------------------------------------------------------------------- PRE-VISION // ROTARY MACHINE STATE / TRANSITION sw.Reset(); sw.Start(); isTimeout = false; while /*รอตะกร้าเข้า CVY3 */ (!StopFlag) { DIO_Library.D7432.ReadPin(0, 0 /*In-Position X47:CV3 SENSOR*/, out INP1, out resCode, out respond); DIO_Library.D7432.ReadPin(0, 1 /*In-Position ????ไม่รู้ว่าเป็นสัญญาณอะไร/คาดว่าเป็นเซนเซอร์ X17 แต่ต่อผิดอยู่*/, out INP2, out resCode, out respond); if (_kiosk.IsTwoTone) {/* TWO TONE */ if (INP1) { // ตรวจความคงที่ของสัญญาณด้วยการหน่วงเวลา Thread.Sleep(500); DIO_Library.D7432.ReadPin(0, 0 /*In-Position X47:CV3 SENSOR*/, out INP1, out resCode, out respond); if (INP1) { visionState = 0; break; } } } else {/* Sri Thai */ if (INP2 && INP1) { visionState = 0; break; } } // !!! ปิดคำสั่งจับเวลารอตะกร้า 120 sec //if (sw.ElapsedMilliseconds > 120000) { isTimeout = true; break; } } sw.Stop(); /* ----------------------------------------- * ถ้ากดปุ่ม หยุดการป้อน * เปิดหน้าใหม่ หน้ายืนยันการรับตะกร้า * -----------------------------------------*/ if (StopFlag) { /* เก็บค่าให้ RAM */ if (_kiosk.IsTwoTone) { _kiosk.SelectedTwoToneRow.GOOD_NUMBER = totalGoodBasket; } else { _kiosk.SelectedSriThaiRow.GOOD_NUMBER = totalGoodBasket; } /* จบงานรับตะกร้า */ if (!_adminMode) { logText = "STOP BY USER! STOP ด้วยการกด จบการป้อน"; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.OptConfirmPush); /*จบการป้อน*/ return; } else { logText = "STOP BY USER! STOP ด้วยการกด จบการป้อน"; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.AdminMenu); /*จบการป้อน*/ return; } } /* ----------------------------------------- * ถ้ารอนานเกินไป * เปิดหน้าใหม่ หน้ายืนยันการรับตะกร้า * -----------------------------------------*/ if (isTimeout) { /* เก็บค่าให้ RAM */ if (_kiosk.IsTwoTone) { _kiosk.SelectedTwoToneRow.GOOD_NUMBER = totalGoodBasket; } else { _kiosk.SelectedSriThaiRow.GOOD_NUMBER = totalGoodBasket; } /* จบงานรับตะกร้า */ if (!_adminMode) { logText = "รอตั้งแรกนาน จึงสั่งให้หยุดรับ"; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.OptConfirmPush); /*จบการป้อน*/ return; } else { logText = "รอตั้งแรกนาน จึงสั่งให้หยุดรับ"; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.AdminMenu); /*จบการป้อน*/ return; } } // รอจนมีตะกร้ามาถึง หรือ timeout แล้ว // PRE-VISION ---------------------------------------------------------------------------------------- PER - VISION // ถ่ายภาพ using (DB_Manager.ConfigManagement cm = new DB_Manager.ConfigManagement()) { // สั่งถ่ายภาพ string snapCommand = "N"; if (_kiosk.IsTwoTone) { // Front if (rotaryState == 0 /*000 deg*/ || rotaryState == 2 /*180 deg*/ || rotaryState == 4 /*360 deg*/ || rotaryState == 6 /*180 deg*/) { snapCommand = "TTF"; } // Side else if (rotaryState == 1 /*090 deg*/ || rotaryState == 3 /*270 deg*/ || rotaryState == 5 /*270 deg*/ || rotaryState == 7 /*090 deg*/) { snapCommand = "TTS"; } } else { // Front if (rotaryState == 0 /*000 deg*/ || rotaryState == 2 /*180 deg*/ || rotaryState == 4 /*360 deg*/ || rotaryState == 6 /*180 deg*/) { snapCommand = "STF"; } // Side else if (rotaryState == 1 /*090 deg*/ || rotaryState == 3 /*270 deg*/ || rotaryState == 5 /*270 deg*/ || rotaryState == 7 /*090 deg*/) { snapCommand = "STS"; } } cm.SetCharValue("CAM_SNAP", snapCommand, "Kiosk cam snap"); Thread.Sleep(100); // loop รอ คำสั่ง ถูกสั่ง StopFlag = false; sw.Reset(); sw.Start(); isTimeout = false; isNext = false; while (!StopFlag) { if (cm.GetCharValue("CAM_SNAP").Equals("N")) { isNext = true; break; } if (sw.ElapsedMilliseconds > 120000) { isTimeout = true; break; } } //Thread.Sleep(100); // after loop /* ----------------------------------------- * ถ้ากดปุ่ม หยุดการป้อน * เปิดหน้าใหม่ หน้ายืนยันการรับตะกร้า * -----------------------------------------*/ if (StopFlag) { /* เก็บค่าให้ RAM */ if (_kiosk.IsTwoTone) { _kiosk.SelectedTwoToneRow.GOOD_NUMBER = totalGoodBasket; } else { _kiosk.SelectedSriThaiRow.GOOD_NUMBER = totalGoodBasket; } /* จบงานรับตะกร้า */ if (!_adminMode) { logText = "STOP BY USER! STOP ด้วยการกด จบการป้อน"; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.OptConfirmPush); /*จบการป้อน*/ return; } else { logText = "STOP BY USER! STOP ด้วยการกด จบการป้อน"; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.AdminMenu); /*จบการป้อน*/ return; } } /* ----------------------------------------- * ถ้ารอนานเกินไป * เปิดหน้าใหม่ หน้ายืนยันการรับตะกร้า * -----------------------------------------*/ if (isTimeout) { /* เก็บค่าให้ RAM */ if (_kiosk.IsTwoTone) { _kiosk.SelectedTwoToneRow.GOOD_NUMBER = totalGoodBasket; } else { _kiosk.SelectedSriThaiRow.GOOD_NUMBER = totalGoodBasket; } /* จบงานรับตะกร้า */ if (!_adminMode) { logText = "รอตั้งแรกนาน จึงสั่งให้หยุดรับ"; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.OptConfirmPush); /*จบการป้อน*/ return; } else { logText = "รอตั้งแรกนาน จึงสั่งให้หยุดรับ"; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.AdminMenu); /*จบการป้อน*/ return; } } // สั่ง vision pro if (isNext) { // Front if (rotaryState == 0 /*000 deg*/ || rotaryState == 2 /*180 deg*/ || rotaryState == 4 /*360 deg*/ || rotaryState == 6 /*180 deg*/) { long journalID = job.CreateTwoToneFrontJobRecord(); // รอรับผลได้เลย } // Side else if (rotaryState == 1 /*090 deg*/ || rotaryState == 3 /*270 deg*/ || rotaryState == 5 /*270 deg*/ || rotaryState == 7 /*090 deg*/) { long journalID = job.CreateTwoToneSideJobRecord(); // รอรับผลได้เลย } // รอข้อมูลทำงาน Thread.Sleep(100); } } // using // VISION -------------------------------------------------------------------------------------------------- VISION // Thread.Sleep(2000); // for demo mode goodBasket = 0; isNG = true; // รอ vision ทำงานเสร็จ // state id ต้องครบตามจำนวน 20 โดยประมาณ using (DB_Manager.ConfigManagement cm = new DB_Manager.ConfigManagement()) { int lastStateID = 0; StopFlag = false; sw.Reset(); sw.Start(); isTimeout = false; isNext = false; while (!StopFlag) { lastStateID = (int)cm.GetIntValue("VIS_LastState_ID"); if (lastStateID >= 20) { isNext = true; break; } if (sw.ElapsedMilliseconds > 120000) { isTimeout = true; break; } } }// using /* ----------------------------------------- * ถ้ากดปุ่ม หยุดการป้อน * เปิดหน้าใหม่ หน้ายืนยันการรับตะกร้า * -----------------------------------------*/ if (StopFlag) { /* เก็บค่าให้ RAM */ if (_kiosk.IsTwoTone) { _kiosk.SelectedTwoToneRow.GOOD_NUMBER = totalGoodBasket; } else { _kiosk.SelectedSriThaiRow.GOOD_NUMBER = totalGoodBasket; } /* จบงานรับตะกร้า */ if (!_adminMode) { logText = "STOP BY USER! STOP ด้วยการกด จบการป้อน"; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.OptConfirmPush); /*จบการป้อน*/ return; } else { logText = "STOP BY USER! STOP ด้วยการกด จบการป้อน"; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.AdminMenu); /*จบการป้อน*/ return; } } /* ----------------------------------------- * ถ้ารอนานเกินไป * เปิดหน้าใหม่ หน้ายืนยันการรับตะกร้า * -----------------------------------------*/ if (isTimeout) { /* เก็บค่าให้ RAM */ if (_kiosk.IsTwoTone) { _kiosk.SelectedTwoToneRow.GOOD_NUMBER = totalGoodBasket; } else { _kiosk.SelectedSriThaiRow.GOOD_NUMBER = totalGoodBasket; } /* จบงานรับตะกร้า */ if (!_adminMode) { logText = "รอตั้งแรกนาน จึงสั่งให้หยุดรับ"; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.OptConfirmPush); /*จบการป้อน*/ return; } else { logText = "รอตั้งแรกนาน จึงสั่งให้หยุดรับ"; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.AdminMenu); /*จบการป้อน*/ return; } } // vision ทำงานเสร็จแล้ว if (isNext) { // อ่านค่า id long vis_id; using (DB_Manager.ConfigManagement cm = new DB_Manager.ConfigManagement()) { try { vis_id = cm.GetIntValue("VIS_LAST_VIS_ID"); } catch { vis_id = 0; } } // ผลของ Front if (rotaryState == 0 || rotaryState == 2 || rotaryState == 4 || rotaryState == 6) { // เรียกดูผล vision JobResultControl.ResultReport.TwoToneModel visResult = new JobResultControl.ResultReport.TwoToneModel(vis_id, true /*ด้านหน้าหลัง*/); goodBasket = visResult.Count; isNG = visResult.NO_GOOD; } // หรือ ผลของ Side else if (rotaryState == 1 || rotaryState == 3 || rotaryState == 5 || rotaryState == 7) { // เรียกดูผล vision JobResultControl.ResultReport.TwoToneModel visResult = new JobResultControl.ResultReport.TwoToneModel(vis_id, false /*ด้านข้าง*/); goodBasket = visResult.Count; isNG = visResult.NO_GOOD; } // ตั้งไว้เผื่อผิดพลาด ไม่ควรเกิดทำงาน else { goodBasket = 0; isNG = true; } // สรุปผลให้ กรณีที่เป็น OK if (!isNG) { sumPageGoodBasket[visionState] = goodBasket; SetGoodBasket(sumPageGoodBasket[visionState]); SetStaticGoodBasket(sumPageGoodBasket[visionState]); } else { SetGoodBasket(0); } } //// POS-VISION --------------------------------------------------------------------------------------------- POS-VISION /* ----------------------------------------- * SUMMARY for next machine state * สั่งขับออกถ้าเป็น NG , ฯลฯ * -----------------------------------------*/ if (isNG) { /* สั่ง ขับออก */ Helper.NG_Basket(); Thread.Sleep(6000); // รอให้นิ่ง /* ล้างการตรวจนับ */ visionState = 0; SetGoodBasket(0); SetStaticGoodBasket(0); } else {/* OK */ /* แสดงผล */ totalGoodBasket += sumPageGoodBasket[0]; SetGoodBasket(sumPageGoodBasket[0]); SetStaticGoodBasket(sumPageGoodBasket[0]); SetTotalCount(totalGoodBasket); // ถ้าค่ามากกว่า ก็ให้ NG if (_kiosk.SelectedTwoToneRow.REMAIN < totalGoodBasket) { totalGoodBasket -= sumPageGoodBasket[0]; SetTotalCount(totalGoodBasket); /* ล้างค่า*/ rotaryState = 0; visionState = 0; /* OK ส่งต่อ */ Helper.SetAsTwoTone(); Helper.NG_Basket(); SetGoodBasket(0); SetStaticGoodBasket(0); Thread.Sleep(6000); /*รอส่งเสร็จ*/ } else // จำนวนอยู่ในช่วง OK { _kiosk.SelectedTwoToneRow.GOOD_NUMBER = totalGoodBasket; // หมุนไปที่ ABS-360 //DIO_Library.D7432.WritePin(0, 28, true, out resCode, out respond); //Thread.Sleep(1000); //DIO_Library.D7432.WritePin(0, 28, false, out resCode, out respond); //Thread.Sleep(1000); /* ล้างค่า*/ rotaryState = 0; visionState = 0; /* OK ส่งต่อ */ Helper.SetAsTwoTone(); Helper.OK_Basket(); SetGoodBasket(0); Thread.Sleep(6000); /*รอส่งเสร็จ*/ } } //// Outoff conveyor --------------------------------------------------------------------------------------------- POS-VISION // ROTARY MACHINE STATE / BASKET TRANSITION sw.Reset(); sw.Start(); isTimeout = false; while /*รอตะกร้าเข้า CVY3 */ (!StopFlag) { DIO_Library.D7432.ReadPin(0, 0 /*In-Position X47:CV3 SENSOR*/, out INP1, out resCode, out respond); DIO_Library.D7432.ReadPin(0, 1 /*In-Position ????ไม่รู้ว่าเป็นสัญญาณอะไร/คาดว่าเป็นเซนเซอร์ X17 แต่ต่อผิดอยู่*/, out INP2, out resCode, out respond); if (!INP1) { // ตรวจความคงที่ของสัญญาณด้วยการหน่วงเวลา Thread.Sleep(500); DIO_Library.D7432.ReadPin(0, 0 /*In-Position X47:CV3 SENSOR*/, out INP1, out resCode, out respond); if (!INP1) { visionState = 0; break; } } if (sw.ElapsedMilliseconds > 10000) { isTimeout = true; break; } } sw.Stop(); /* ----------------------------------------- * ถ้ากดปุ่ม หยุดการป้อน * เปิดหน้าใหม่ หน้ายืนยันการรับตะกร้า * -----------------------------------------*/ if (StopFlag) { /* เก็บค่าให้ RAM */ if (_kiosk.IsTwoTone) { _kiosk.SelectedTwoToneRow.GOOD_NUMBER = totalGoodBasket; } else { _kiosk.SelectedSriThaiRow.GOOD_NUMBER = totalGoodBasket; } /* จบงานรับตะกร้า */ if (!_adminMode) { logText = "STOP BY USER! STOP ด้วยการกด จบการป้อน"; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.OptConfirmPush); /*จบการป้อน*/ return; } else { logText = "STOP BY USER! STOP ด้วยการกด จบการป้อน"; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.AdminMenu); /*จบการป้อน*/ return; } } /* ----------------------------------------- * ถ้ารอนานเกินไป * เปิดหน้าใหม่ หน้ายืนยันการรับตะกร้า * -----------------------------------------*/ if (isTimeout) { totalGoodBasket -= sumPageGoodBasket[0]; SetGoodBasket(0); SetStaticGoodBasket(0); SetTotalCount(totalGoodBasket); } // รอจนมีตะกร้ามาถึง หรือ timeout แล้ว การถ่ายภาพจะมีชึ้นอีกกับตั้งเดิม }/* ------------------- VISION LOOP , while(!StopFlag) ------------------------ */ /* ----------------------------------------- * เปิดหน้าใหม่ หน้ายืนยันการรับตะกร้า * -----------------------------------------*/ if (!_adminMode) { logText = "STOP BY USER! STOP ด้วยการกด จบการป้อน"; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.OptConfirmPush); } else { logText = "STOP BY USER! STOP ด้วยการกด จบการป้อน"; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.AdminMenu); } } catch (Exception ex) { StopFlag = true; /* ----------------------------------------- * เปิดหน้าใหม่ หน้ายืนยันการรับตะกร้า * -----------------------------------------*/ if (!_adminMode) { string logText = "STOP BY CATCH! STOP ด้วย error - " + ex.Message; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.OptConfirmPush); } else { string logText = "STOP BY CATCH! STOP ด้วย error - " + ex.Message; _kiosk.log.AppendText(logText); System.Diagnostics.Debug.WriteLine(logText); Helper.ShowNewPage(_kiosk, this, PageName.AdminMenu); } } }