Imports System.Drawing.Printing Imports System.IO Imports System.IO.Ports Imports System.Management Imports System.Threading Imports uPLibrary.Networking.M2Mqtt Imports System.Linq Imports System.Math Imports System.Runtime.InteropServices.ComTypes Imports System.Text Public Class frmTD_JIG Public Const TESTER_VER As String = "2.4.1" Public ShowDetailLog As Boolean = False Public RunDemoMode As Boolean = False Public EnableSetup As Boolean = False Public cmdMessage As String Public rxMessage As String Public cmpMessage As String = "SUCCESS" Public tmpCmdMessage As String Public RunStartTick As Long Public RunEndTick As Long Public Const MeasSTART As Boolean = True Public Const MeasEND As Boolean = False Public Const SoundEnd As String = "0" Public Const SoundStart As String = "1" Public Const SoundError As String = "2" Public TestStep As Integer Public DevNum As Integer = 0 Public DispToggle As Boolean = False Public Const TimeLine As Long = 500 'Parametar 변수 Public ParaComport As String Public ParaScopeID As String Public Const CmdNone As String = "none" Public Title_Text As String Public AutoAgingCnt As Long Public CkbNoRun As Boolean Private txtPVSN As String Private SettingMeasure As String Private IQCStart As Boolean = False Private CalModeOn As Boolean = False Public Enum CART_TYPE CART_NONE = 0 PRO_FACE = 11 PRO_EYE = 12 PRO_BODY = 13 LUX_FACE = 21 LUX_EYE = 22 LUX_BODY = 23 MAX_SET = 30 ALPHA_FACE = 41 ALPHA_EYE = 42 ALPHA_BODY = 43 MAX_CART_TYPE End Enum Public CartType As CART_TYPE Public CartTypeName(CART_TYPE.MAX_CART_TYPE) As String Public GradeStop As Integer = 0 Public IQCGradeName() As String = {"N/A", "IQC_ProCnt", "IQC_LuxCnt", "IQC_EyeCnt"} Public txbIQC_GCnt(MODEL_NAME.MAX_MODEL_NUM) As TextBox Public txbIQC_RCnt(RELAY_NUM.MAX_RELAY_NUM) As TextBox Public txbPD1_GCnt(MODEL_NAME.MAX_MODEL_NUM) As TextBox Public txbPD1_RCnt(RELAY_NUM.MAX_RELAY_NUM) As TextBox Public Structure PreCnt Public TotalCnt As Long Public OKCnt As Long Public NGCnt As Long Public ProCnt As Long Public LuxCnt As Long Public EyeCnt As Long Public R1Cnt As Long Public R2Cnt As Long Public R3Cnt As Long Public R4Cnt As Long Public R5Cnt As Long Public R6Cnt As Long Public R7Cnt As Long Public R8Cnt As Long Public R9Cnt As Long Public R10Cnt As Long Public ReTotalCnt As Long Public ReOkCnt As Long Public ReNgCnt As Long End Structure Public PreCnt_IQC As PreCnt Public PreCnt_PD1 As PreCnt Public ProMAX As Double = 1.83 Public ProTYP As Double = 1.78 Public ProMIN As Double = 1.73 Public LuxMAX As Double = 1.72 Public LuxTYP As Double = 1.67 Public LuxMIN As Double = 1.62 Public EyeMAX As Double = 1.61 Public EyeTYP As Double = 1.56 Public EyeMIN As Double = 1.51 Public RELAY_C() As String Private RelayTxb(10) As TextBox Private RelayCnt() As Int16 Public QC_Current As Double Public PD2_Current As Double Public CmdTime As Long Public EnableCmdTime As Boolean = False Public InputCnt As Long Public Const InputCntVal As Integer = 10 Private IQCValueError As Double Private myMgr As Ivi.Visa.Interop.ResourceManager Private myScope As Ivi.Visa.Interop.FormattedIO488 Public varQueryResult As Object Public strQueryResult As String Private DSOX1102_DEV1 As String = "USB0::0x2A8D::0x1797::CN56526457::0::INSTR" Private DSOX1102_DEV2 As String = "USB0::0x2A8D::0x178B::CN59280175::0::InStr" Private DSOX1102_DEV3 As String = "USB0::0x2A8D::0x1797::CN56526457::0::INSTR" Private MethodAVG As String = "MEASure:VAVerage?" Private MethodMAX As String = "MEASure:VMAX?" Private MethodTOP As String = "MEASure:VTOP?" Private cmd As String Private Delegate Sub PrintDelegate() Private PrintRunDelegate As PrintDelegate Public MQTClient As MqttClient Public mqttBroker As String = String.Empty Public mqttTopic As String = String.Empty Private Enum TestStepList MAX_First_OK = 16 MAX_First_NG MAX_RE_OK MAX_RE_NG DUAL_First_OK = 21 DUAL_First_NG DUAL_RE_OK DUAL_RE_NG End Enum Public Structure TestStepValue Public First_Ok As Int16 Public First_Ng As Int16 Public Re_OK As Int16 Public RE_Ng As Int16 End Structure Private TeststepSet As TestStepValue Private Sub print_on(printtext As String) Try Dim doc As bpac.Document = New bpac.Document If printer_state(txbPrintApply.Text) Then Dim print_address As String = txbLabel1.Text doc.Open(print_address) Dim print_name As Boolean = doc.SetPrinter(txbPrintApply.Text, True) doc.GetObject(txbCode1.Text).Text = printtext doc.GetObject(txbText1.Text).Text = printtext doc.StartPrint("", bpac.PrintOptionConstants.bpoDefault) doc.PrintOut(nudPrintCount.Value, bpac.PrintOptionConstants.bpoDefault) doc.EndPrint() doc.Close() Else MsgBox("프린터 연결이 잘못되었습니다. 전원이나 케이블을 확인하여 주십시오.", vbExclamation) Exit Sub End If Catch ex As Exception MsgBox("Print Error : " & ex.Message, vbCritical) Exit Sub End Try End Sub Private Function printer_state(printer As String) As Boolean Dim scope As ManagementScope = New ManagementScope("\root\cimv2") scope.Connect() Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher("SELECT * FROM Win32_Printer") Dim printName As String = "" For Each printobj As ManagementObject In searcher.Get printName = printobj("Name").ToString If printName.Equals(printer) Then If printobj("WorkOffline").ToString.ToLower.Equals("true") Then Return False Else Return True End If End If Next Return False End Function Private Sub Print_Read_ini() Dim objReader As System.IO.StreamReader Dim configStr As String Dim FilePath As String = System.AppDomain.CurrentDomain.BaseDirectory() & "\Config" If Dir(FilePath, vbDirectory) = "" Then MkDir(FilePath) End If Dim FileName As String = FilePath & "\" & "TD_Select_Printer_Config" & ".ini" If File.Exists(FileName) Then objReader = New System.IO.StreamReader(FileName, True) configStr = objReader.ReadLine() objReader.Close() txbPrintApply.Text = Mid(configStr, 1, InStr(configStr, ",") - 1) configStr = Mid(configStr, InStr(configStr, ",") + 1, configStr.Length) txbLabel1.Text = Mid(configStr, 1, InStr(configStr, ",") - 1) configStr = Mid(configStr, InStr(configStr, ",") + 1, configStr.Length) txbCode1.Text = Mid(configStr, 1, InStr(configStr, ",") - 1) configStr = Mid(configStr, InStr(configStr, ",") + 1, configStr.Length) txbText1.Text = Mid(configStr, 1, InStr(configStr, ",") - 1) configStr = Mid(configStr, InStr(configStr, ",") + 1, configStr.Length) nudPrintCount.Text = Mid(configStr, 1, InStr(configStr, ",") - 1) configStr = Mid(configStr, InStr(configStr, ",") + 1, configStr.Length) ckbWarPnt.Checked = Mid(configStr, 1, configStr.Length) End If End Sub Private Function Read_ini() As Boolean Dim FilePath As String Dim FileName As String Dim ConifgStr As String Dim DevTemp As String Dim ShotCount As String Dim CartTemp As String Dim objReader As System.IO.StreamReader Dim tmpStr As String On Error GoTo RD_File_Error FilePath = System.AppDomain.CurrentDomain.BaseDirectory() & "\Config" '디렉토리가 없을 경우 If Dir(FilePath, vbDirectory) = "" Then MkDir(FilePath) End If FileName = FilePath & "\" & "TD_Select_Config" & ".ini" If File.Exists(FileName) = True Then objReader = New System.IO.StreamReader(FileName, True) ConifgStr = objReader.ReadLine() objReader.Close() DevNum = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) If DevNum = "1" Then rdbIQC.Checked = True ElseIf DevNum = "2" Then rdbProduct1.Checked = True ElseIf DevNum = "3" Then rdbProduct2.Checked = True ElseIf DevNum = "4" Then rdbProduct3.Checked = True Else DevNum = 0 End If ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) cboComPort.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbScopeID.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbMeasureDelay.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbTimeout.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbOntime.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbProMax.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbProTyp.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbProMin.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbLuxMax.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbLuxTyp.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbLuxMin.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbEyeMax.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbEyeTyp.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbEyeMin.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ReDim RELAY_C(10) RELAY_C(0) = "N/A" ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbRelay1.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) RELAY_C(1) = txbRelay1.Text ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbRelay2.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) RELAY_C(2) = txbRelay2.Text ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbRelay3.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) RELAY_C(3) = txbRelay3.Text ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbRelay4.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) RELAY_C(4) = txbRelay4.Text ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbRelay5.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) RELAY_C(5) = txbRelay5.Text ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbRelay6.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) RELAY_C(6) = txbRelay6.Text ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbRelay7.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) RELAY_C(7) = txbRelay7.Text ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbRelay8.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) RELAY_C(8) = txbRelay8.Text ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbRelay9.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) RELAY_C(9) = txbRelay9.Text ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbRelay10.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) RELAY_C(10) = txbRelay10.Text ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbHSCALE.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbHPOS.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbVSCALE.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbVPOS.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) tmpStr = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) If tmpStr = "AVG" Then rdbAvg.Checked = True ElseIf tmpStr = "MAX" Then rdbMax.Checked = True ElseIf tmpStr = "TOP" Then rdbTop.Checked = True End If ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbErrorFactor.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbOffsetValue.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbStartWaitDelay.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbWaitDelay.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbValueError.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbIQC_DummyShotCnt.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbMotorOnTime.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbKProMax.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbKProTyp.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbKProMin.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbKLuxMax.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbKLuxTyp.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbKLuxMin.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbKEyeMax.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbKEyeTyp.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) txbEyeMin.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) nudmat_1.Value = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) nudmat_2.Value = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) nudmat_3.Value = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) nudmat_4.Value = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) nudmat_5.Value = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) Dim testMode As Boolean If UBound(Split(ConifgStr, ",")) > 0 Then testMode = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) Else testMode = ConifgStr End If ConifgStr = Mid(ConifgStr, InStr(ConifgStr, ",") + 1, Len(ConifgStr)) If UBound(Split(ConifgStr, ",")) > 0 Then txbMinValue.Text = Mid(ConifgStr, 1, InStr(ConifgStr, ",") - 1) Else txbMinValue.Text = ConifgStr End If ParaComport = cboComPort.Text ParaScopeID = "USB0::0x2A8D::" & txbScopeID.Text & "::0::INSTR" If testMode = True Then rdbCmat_10.Checked = True rdbCmat_5.Checked = False Else rdbCmat_10.Checked = False rdbCmat_5.Checked = True End If If rdbCmat_5.Checked = True Then ReDim RelayCnt(5) RelayCnt(1) = nudmat_1.Value RelayCnt(2) = nudmat_2.Value RelayCnt(3) = nudmat_3.Value RelayCnt(4) = nudmat_4.Value RelayCnt(5) = nudmat_5.Value Else ReDim RelayCnt(10) For i = 1 To 10 RelayCnt(i) = i Next End If lblR1CntIQC.Text = txbRelay1.Text lblR1CntPD1.Text = txbRelay1.Text lblR1CntIQC.Refresh() lblR1CntPD1.Refresh() lblR2CntIQC.Text = txbRelay2.Text lblR2CntPD1.Text = txbRelay2.Text lblR2CntIQC.Refresh() lblR2CntPD1.Refresh() lblR3CntIQC.Text = txbRelay3.Text lblR3CntPD1.Text = txbRelay3.Text lblR3CntIQC.Refresh() lblR3CntPD1.Refresh() lblR4CntIQC.Text = txbRelay4.Text lblR4CntPD1.Text = txbRelay4.Text lblR4CntIQC.Refresh() lblR4CntPD1.Refresh() lblR5CntIQC.Text = txbRelay5.Text lblR5CntPD1.Text = txbRelay5.Text lblR5CntIQC.Refresh() lblR5CntPD1.Refresh() lblR6CntIQC.Text = txbRelay6.Text lblR6CntPD1.Text = txbRelay6.Text lblR6CntIQC.Refresh() lblR6CntPD1.Refresh() lblR7CntIQC.Text = txbRelay7.Text lblR7CntPD1.Text = txbRelay7.Text lblR7CntIQC.Refresh() lblR7CntPD1.Refresh() lblR8CntIQC.Text = txbRelay8.Text lblR8CntPD1.Text = txbRelay8.Text lblR8CntIQC.Refresh() lblR8CntPD1.Refresh() lblR9CntIQC.Text = txbRelay9.Text lblR9CntPD1.Text = txbRelay9.Text lblR9CntIQC.Refresh() lblR9CntPD1.Refresh() lblR10CntIQC.Text = txbRelay10.Text lblR10CntPD1.Text = txbRelay10.Text lblR10CntIQC.Refresh() lblR10CntPD1.Refresh() txbIQC_GCnt(1) = txbProCnt txbIQC_GCnt(2) = txbLuxCnt txbIQC_GCnt(3) = txbEyeCnt txbIQC_RCnt(1) = txbR1CntIQC txbIQC_RCnt(2) = txbR2CntIQC txbIQC_RCnt(3) = txbR3CntIQC txbIQC_RCnt(4) = txbR4CntIQC txbIQC_RCnt(5) = txbR5CntIQC txbIQC_RCnt(6) = txbR6CntIQC txbIQC_RCnt(7) = txbR7CntIQC txbIQC_RCnt(8) = txbR8CntIQC txbIQC_RCnt(9) = txbR9CntIQC txbIQC_RCnt(10) = txbR10CntIQC txbPD1_GCnt(1) = txbProCntPD1 txbPD1_GCnt(2) = txbLuxCntPD1 txbPD1_GCnt(3) = txbEyeCntPD1 txbPD1_GCnt(4) = txbMaxCntPD1 txbPD1_RCnt(1) = txbR1CntPD1 txbPD1_RCnt(2) = txbR2CntPD1 txbPD1_RCnt(3) = txbR3CntPD1 txbPD1_RCnt(4) = txbR4CntPD1 txbPD1_RCnt(5) = txbR5CntPD1 txbPD1_RCnt(6) = txbR6CntPD1 txbPD1_RCnt(7) = txbR7CntPD1 txbPD1_RCnt(8) = txbR8CntPD1 txbPD1_RCnt(9) = txbR9CntPD1 txbPD1_RCnt(10) = txbR10CntPD1 cboGrade.Items.Add("PRO") cboGrade.Items.Add("LUX") cboGrade.Items.Add("EYE") cboCapacitor.Items.Add(txbRelay1.Text) cboCapacitor.Items.Add(txbRelay2.Text) cboCapacitor.Items.Add(txbRelay3.Text) cboCapacitor.Items.Add(txbRelay4.Text) cboCapacitor.Items.Add(txbRelay5.Text) cboCapacitor.Items.Add(txbRelay6.Text) cboCapacitor.Items.Add(txbRelay7.Text) cboCapacitor.Items.Add(txbRelay8.Text) cboCapacitor.Items.Add(txbRelay9.Text) cboCapacitor.Items.Add(txbRelay10.Text) CartTypeName(CART_TYPE.CART_NONE) = "입력 대기" CartTypeName(CART_TYPE.PRO_FACE) = "PRO FACE" CartTypeName(CART_TYPE.PRO_EYE) = "PRO EYE" CartTypeName(CART_TYPE.LUX_FACE) = "LUX FACE" CartTypeName(CART_TYPE.LUX_EYE) = "LUX EYE" Return True Else MsgBox("검사기 정보가 없습니다." & vbCrLf & "검사기 설정을 진행하세요.", vbCritical, "DUALSONIC T/D Selecter Tester Manager") frmLogin.ShowDialog() If EnableSetup Then loadSetupWindows() Else MsgBox("권한이 있는지 확인하세요.") End End If EnableSetup = False Return False End If Exit Function RD_File_Error: MsgBox("검사기 정보가 일치하지 않습니다." & vbCrLf & "검사기 설정을 재설정 해주세요.", vbCritical, "DUALSONIC T/D Selecter Tester Manager") frmLogin.ShowDialog() If EnableSetup Then loadSetupWindows() Else MsgBox("권한이 있는지 확인하세요.") End End If EnableSetup = False Return False End Function Private Sub Save_ini(SaveType As Boolean) Dim FilePath As String Dim FileName As String Dim ConfigStr As String Dim objWriter As System.IO.StreamWriter Dim tmpStr, testMode As String On Error GoTo WR_File_Error FilePath = System.AppDomain.CurrentDomain.BaseDirectory() & "\Config" '디렉토리가 없을 경우 If Dir(FilePath, vbDirectory) = "" Then MkDir(FilePath) End If If SaveType = True Then FileName = FilePath & "\" & "TD_Select_Printer_Config" & ".ini" ConfigStr = txbPrintApply.Text & "," & txbLabel1.Text & "," & txbCode1.Text & "," & txbText1.Text & "," & nudPrintCount.Value & "," & ckbWarPnt.Checked Else FileName = FilePath & "\" & "TD_Select_Config" & ".ini" If rdbIQC.Checked Then DevNum = 1 ElseIf rdbProduct1.Checked Then DevNum = 2 ElseIf rdbProduct2.Checked Then DevNum = 3 ElseIf rdbProduct3.Checked Then DevNum = 4 End If If rdbAvg.Checked Then tmpStr = "AVG" ElseIf rdbMax.Checked = True Then tmpStr = "MAX" Else tmpStr = "TOP" End If If rdbCmat_10.Checked Then testMode = True Else testMode = False End If ConfigStr = DevNum & "," & cboComPort.Text & "," & txbScopeID.Text & "," & txbMeasureDelay.Text & "," & txbTimeout.Text & "," & txbOntime.Text & "," & txbProMax.Text & "," & txbProTyp.Text & "," & txbProMin.Text & "," & txbLuxMax.Text & "," & txbLuxTyp.Text & "," & txbLuxMin.Text & "," & txbEyeMax.Text & "," & txbEyeTyp.Text & "," & txbEyeMin.Text & "," & txbRelay1.Text & "," & txbRelay2.Text & "," & txbRelay3.Text & "," & txbRelay4.Text & "," & txbRelay5.Text & "," & txbRelay6.Text & "," & txbRelay7.Text & "," & txbRelay8.Text & "," & txbRelay9.Text & "," & txbRelay10.Text & "," & txbHSCALE.Text & "," & txbHPOS.Text & "," & txbVSCALE.Text & "," & txbVPOS.Text & "," & tmpStr & "," & txbErrorFactor.Text & "," & txbOffsetValue.Text & "," & txbStartWaitDelay.Text & "," & txbWaitDelay.Text & "," & txbValueError.Text & "," & txbIQC_DummyShotCnt.Text & "," & txbMotorOnTime.Text & "," & txbKProMax.Text & "," & txbKProTyp.Text & "," & txbKProMin.Text & "," & txbKLuxMax.Text & "," & txbKLuxTyp.Text & "," & txbKLuxMin.Text & "," & txbKEyeMax.Text & "," & txbKEyeTyp.Text & "," & txbKEyeMin.Text & "," & nudmat_1.Text & "," & nudmat_2.Text & "," & nudmat_3.Text & "," & nudmat_4.Text & "," & nudmat_5.Text & "," & testMode & "," & txbMinValue.Text End If System.IO.File.Delete(FileName) objWriter = New System.IO.StreamWriter(FileName, True) objWriter.Flush() objWriter.WriteLine(ConfigStr) objWriter.Close() Exit Sub WR_File_Error: MsgBox("Config Save Fail!") End Sub Private Sub PrintSaveData() If txbLabel1.Text.Replace(" ", "") = "" Or txbCode1.Text.Replace(" ", "") = "" Or txbPrintApply.Text.Replace(" ", "") = "" Or txbText1.Text.Replace(" ", "") = "" Then MsgBox("바코드 인쇄 프린터 설정란에 빈 칸이 존재합니다. 빈 칸을 채워주십시오.", vbExclamation) Exit Sub End If Save_ini(True) End Sub Private Sub Save_CSV(SaveData As String) Dim FilePath As String Dim syear As String Dim smonth As String Dim sday As String Dim FileCnt As Long Dim runFlag As Boolean = True Dim FileName As String Dim ItemList As String = "" Dim objWriter As System.IO.StreamWriter On Error GoTo WR_File_Error syear = DateAndTime.Year(Now) smonth = DateAndTime.Month(Now) sday = DateAndTime.Day(Now) FilePath = System.AppDomain.CurrentDomain.BaseDirectory() If DevNum = 1 Then FilePath = FilePath & "LogData\IQC" ItemList = "Date,Time,TD_SN,TestStep,Ok_Ng,Grade,C_Value,Current,RL1_Value,RL2_Value,RL3_Value,RL4_Value,RL5_Value,RL6_Value,RL7_Value,RL8_Value,RL9_Value,RL10_Value,TD_IN_DATE,TD_Frequency,TD_Impedance,TD_Capacitance,TD_Resistance,Total_Count,OK_Count,NG_Count,PRO_Count,LUX_Count,EYE_Count,RL1_Count,RL2_Count,RL3_Count,RL4_Count,RL5_Count,RL6_Count,RL7_Count,RL8_Count,RL9_Count,RL10_Count,ReTotal_Count,ReOk_Count,ReNg_Count" ElseIf DevNum = 2 Then FilePath = FilePath & "LogData\PD1" ItemList = "Date,Time,TD_SN,TestStep,TD_DATE,TD_Frequency,TD_Impedance,TD_Capacitance,TD_Resistance,Grade,C_Value,Total_Count,OK_Count,NG_Count,PRO_Count,LUX_Count,EYE_Count,RL1_Count,RL2_Count,RL3_Count,RL4_Count,RL5_Count,RL6_Count,RL7_Count,RL8_Count,RL9_Count,RL10_Count" ElseIf DevNum = 3 Then FilePath = FilePath & "LogData\PD2" ElseIf DevNum = 4 Then FilePath = FilePath & "LogData\PD3" End If '디렉토리가 없을 경우 If Dir(FilePath, vbDirectory) = "" Then MkDir(FilePath) End If FileName = FilePath & "\" & DateAndTime.Year(Now) & "_" & DateAndTime.Month(Now) & "_" & DateAndTime.Day(Now) & ".csv" If File.Exists(FileName) = True Then objWriter = New System.IO.StreamWriter(FileName, True) objWriter.WriteLine(SaveData) Else objWriter = New System.IO.StreamWriter(FileName, True) objWriter.WriteLine(ItemList) objWriter.WriteLine(SaveData) End If objWriter.Close() Exit Sub WR_File_Error: MsgBox("Logdata save fail!") End Sub Sub cmdDisplay(strDisp As String) Dim dispStr As String dispStr = (Today + " " + TimeOfDay + " " + strDisp + vbCrLf) If DevNum = 1 Then txbCmdWindow.AppendText(dispStr) txbCmdWindow.Refresh() ElseIf DevNum = 3 Then txbCmdWindowP2.AppendText(dispStr) txbCmdWindowP2.Refresh() Else End If End Sub Private Sub FormLoadInfo() Dim FormWidth, FormHeight As Integer Me.Hide() 'Me.WindowState = FormWindowState.Maximized FormWidth = Val(Me.Width) FormHeight = Val(Me.Height) If FormWidth < 1100 And FormHeight < 800 Then 'Me.MaximumSize = New Size(FormWidth, FormHeight) Me.Width = FormWidth Me.Height = FormHeight Else 'Me.WindowState = FormWindowState.Normal 'Me.MaximumSize = New Size(1040, 784) Me.Width = 1040 Me.Height = 784 End If Me.Show() Me.Refresh() gpbTime.Refresh() lblTime.Refresh() gpbConfig.Refresh() chbUseBarcode.Refresh() chbAutoMeasure.Refresh() btnSetup.Refresh() btnExit.Refresh() gpbSpec.Refresh() txbPV_SN.Refresh() lblPV_SN.Refresh() txbPV_Date.Refresh() lblPV_Date.Refresh() txbPV_Freq.Refresh() lblPV_Freq.Refresh() txbPV_Z.Refresh() lblPV_Z.Refresh() txbPV_C.Refresh() lblPV_C.Refresh() txbPV_R.Refresh() lblPV_R.Refresh() cmdDisplay("DUALSONIC T/D Select JIG Start!") End Sub Private Sub loadSetupWindows() 'Me.Size = New Size(1500, 780) Me.Size = New Size(1500, 880) EnableSetup = True gpbSetupWindow.Visible = True gpbSetupWindow.Location = New Size(1, 9) 'gpbSetupWindow.Size = New Size(1475, 734) gpbSetupWindow.Size = New Size(1475, 800) DefaultTextColor() End Sub Private Function ParametarLoad() As Boolean Print_Read_ini() Return Read_ini() End Function Private Sub LoadComportName() Dim portname() As String Dim i As Integer Try cboComPort.Items.Clear() portname = SerialPort.GetPortNames For i = 1 To portname.Length cboComPort.Items.Add(portname(i - 1)) Next i cboComPort.Text = "PRESS!" Catch ex As Exception MsgBox("COM 포트 에러" & vbCrLf & "", vbOK + vbCritical, "DUALSONIC T/D Selecter Tester Manager") ckbSerialUse.Checked = False End Try End Sub Private Sub OpenSerial() Try If ParaComport <> "" Then If cmdSerialPort.IsOpen = False Then With cmdSerialPort .PortName = ParaComport .BaudRate = 115200 .DataBits = 8 .Parity = IO.Ports.Parity.None .StopBits = IO.Ports.StopBits.One .Handshake = IO.Ports.Handshake.None End With cmdSerialPort.Open() cmdDisplay("Open comport complete!") End If Else MsgBox("시리얼포트를 설정해주세요!" & vbCrLf & "", vbCritical, "DUALSONIC T/D Selecter Tester Manager") ckbSerialUse.Checked = False End If Catch ex As Exception MsgBox("COM 포트 에러" & vbCrLf & "", vbOK + vbCritical, "DUALSONIC T/D Selecter Tester Manager") ckbSerialUse.Checked = False End Try End Sub Private Sub loadIQCWindows() gpbIQC.Visible = True gpbProduct1.Visible = False gpbProduct2.Visible = False gpbProduct4.Visible = False gpbIQC.Refresh() Me.Text = Title_Text & " (T/D 수입 검사 공정)" gpbIQC.Location = New Size(2, 230) gpbIQC.Size = New Size(1020, 514) gpbIQC.Refresh() chbUseBarcode.Checked = True chbUseBarcode.Enabled = True chbUseBarcode.Refresh() chbAutoMeasure.Checked = True chbAutoMeasure.Enabled = True chbUseBarcode.Refresh() btnRunIQC.Enabled = False btnRunIQC.Refresh() txbPV_SN.Focus() End Sub Private Sub loadProduct1Windows() gpbIQC.Visible = False gpbProduct1.Visible = True gpbProduct2.Visible = False gpbProduct4.Visible = False Me.Text = Title_Text & " (캐패시터 값 확인 및 C/T 주파수입력 공정)" gpbProduct1.Location = New Size(2, 230) gpbProduct1.Size = New Size(1020, 513) gpbProduct1.Refresh() txbPV_SN.Location = New Size(123, 30) txbPV_SN.Size = New Size(364, 76) txbPV_SN.Refresh() lblGradePD1.Location = New Size(202, 29) txbGradePD1.Location = New Size(406, 14) lblCapacitorPD1.Location = New Size(202, 136) txbCapacitorPD1.Location = New Size(406, 121) lblCartridgePD1.Location = New Size(145, 243) txbCartridgePD1.Location = New Size(406, 228) lblGradePD1.Refresh() txbGradePD1.Refresh() lblCapacitorPD1.Refresh() txbCapacitorPD1.Refresh() lblCartridgePD1.Refresh() txbCartridgePD1.Refresh() gpbCheckGrade.Refresh() chbUseBarcode.Checked = True chbUseBarcode.Enabled = True chbAutoMeasure.Checked = True chbAutoMeasure.Enabled = True btnRunPD1.Enabled = False txbPV_SN.Focus() End Sub Private Sub loadProduct2Windows() gpbIQC.Visible = False gpbProduct1.Visible = False gpbProduct2.Visible = True gpbProduct3.Visible = False gpbProduct4.Visible = False gpbProduct2.Refresh() Me.Text = Title_Text & " (카트리지 조립 후 성능검사 공정)" chbUseBarcode.Checked = False chbUseBarcode.Enabled = False chbUseBarcode.Refresh() chbAutoMeasure.Checked = True chbAutoMeasure.Enabled = True chbAutoMeasure.Refresh() gpbProduct2.Location = New Size(2, 230) gpbProduct2.Size = New Size(1018, 513) gpbProduct2.Refresh() ''txbPV_SN.Location = New Size(105, 30) ''txbPV_SN.Size = New Size(382, 76) ''txbPV_SN.Refresh() btnRunPD2.Enabled = False btnRunPD2.Refresh() txbPV_SN.Clear() txbPV_SN.AppendText("대기중") txbPV_SN.Refresh() txbCmdWindowP2.Focus() txbCmdWindowP2.Refresh() DispToggle = True cmdRunTimer.Enabled = True End Sub Private Sub initCartInfo() Try rdbFace.Checked = True rdbMode1.Checked = True If setOnTime(txbMotorOnTime.Text) Then MsgBox("AMP 정보 초기화 실패.") End If Catch ex As Exception End Try End Sub Private Sub loadProduct3Windows() gpbIQC.Visible = False gpbProduct1.Visible = False gpbProduct2.Visible = False gpbProduct3.Visible = True gpbProduct4.Visible = False Me.Text = Title_Text & " (도트 검사 공정)" gpbProduct3.Location = New Size(2, 230) gpbProduct3.Size = New Size(1018, 513) gpbProduct3.Refresh() ''txbPV_SN.Location = New Size(123, 30) ''txbPV_SN.Size = New Size(364, 76) ''txbPV_SN.Refresh() lblGradePD3.Location = New Size(202, 35) lblGradePD3.Size = New Size(147, 77) lblGradePD3.Refresh() txbGradePD3.Location = New Size(406, 25) txbGradePD3.Size = New Size(384, 95) txbGradePD3.Refresh() lblCapacitorPD3.Location = New Size(202, 145) lblCapacitorPD3.Size = New Size(148, 77) lblCapacitorPD3.Refresh() txbCapacitorPD3.Location = New Size(406, 135) txbCapacitorPD3.Size = New Size(384, 95) txbCapacitorPD3.Refresh() lblCapSelectPD3.Visible = False pnlCapSelectPD3.Visible = False End Sub Private Sub initDevice() cmdDisplay("Load Tester Parameter Complete!") lblTime.Text = Now If DevNum = 1 Then ckbPlay.Text = "신규측정방식" ckbPlay.Checked = True ckbSerialUse.Visible = False loadIQCWindows() If LoadRegIQC() Then cmdDisplay(Err.Description) cmdDisplay("Today's measure count data check fail!") Return Else LoadTextIQC() SetDefaultText() cmdDisplay("Today's measure count data check complete!") End If OpenSerial() initScope() ElseIf DevNum = 2 Then ckbPlay.Text = "MAXIMUM" ckbPlay.Checked = True ckbSerialUse.Visible = True loadProduct1Windows() 'If LoadRegPD1() Then ' Return 'Else ' LoadTextPD1() ' SetDefaultText() 'End If ResetRegMesPD1() If LoadRegPD1() Then Return Else If LoadLocalCount() Then Return Else LoadTextPDLocal1() SetDefaultText() End If End If gradeReset() ElseIf DevNum = 3 Then loadProduct2Windows() txbCmdWindowP2.Focus() OpenSerial() initScope() ElseIf DevNum = 4 Then loadProduct3Windows() OpenSerial() initCartInfo() End If cmdDisplay("Load Windows Form Complete!") End Sub Private Sub frmTD_JIG_Disposed(sender As System.Object, e As System.EventArgs) Handles MyBase.Disposed Try If cmdSerial.Text = "닫기" Then cmdSerialPort.Close() End If Catch ex As Exception MsgBox(ex.Message) End Try exit_Process() End Sub Private Sub frmTD_JIG_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Try Me.Text = "DUALSONIC T/D MEASURING INSTRUMENT Ver" & TESTER_VER Title_Text = Me.Text SetDefaultText() If ParametarLoad() Then FormLoadInfo() initDevice() End If If frmMqtt.loadMqtt = False Then frmMqtt.txbMqttAd.Text = String.Empty frmMqtt.txbMqttTp.Text = String.Empty mqttBroker = String.Empty mqttTopic = String.Empty frmLogin.mqttStart = False Else If frmLogin.mqttConnect() Then frmLogin.mqttStart = True Else frmLogin.mqttStart = False End If End If Catch ex As Exception cmdDisplay("Form Load Error!") End Try End Sub Sub initScope() On Error GoTo VisaComError If ParaScopeID <> "" Then myMgr = New Ivi.Visa.Interop.ResourceManager myScope = New Ivi.Visa.Interop.FormattedIO488 myScope.IO = myMgr.Open(ParaScopeID) 'myScope.IO = myMgr.Open(DSOX1102_DEV1) myScope.IO.Clear() ' Clear the interface. myScope.IO.Timeout = 10000 ' Set I/O communication timeout. ' Initialize - start from a known state. Initialize() cmdDisplay("Open Scope device complete!") Else MsgBox("스코프 ID를 설정해주세요!" & vbCrLf & "", vbCritical, "DUALSONIC T/D Selecter Tester Manager") End If Exit Sub VisaComError: MsgBox("스코프 설정을 확인해주세요!" & vbCrLf & "", vbCritical, "DUALSONIC T/D Selecter Tester Manager") cmdDisplay("VISA COM Error:" & Err.Description) 'MsgBox("VISA COM Error:" + vbCrLf + Err.Description) End Sub Private Sub Initialize() On Error GoTo VisaComError ' Get and display the device's *IDN? string. strQueryResult = DoQueryString("*IDN?") Debug.Print("Identification string: " + strQueryResult) ' Clear status and load the default setup. DoCommand("*RST") DoCommand("*CLS") DoCommand(":DISPlay:ANNotation 1") DoCommand(":DISPlay:ANNotation:Text 'JION Meditech Tester'") DoCommand(":DISPlay:ANNotation:BACKground TRAN") DoCommand(":MEASure:SOURce CHANnel1") DoCommand(":CHANnel1:UNITs AMPere") DoCommand(":CHANnel1:COUPling DC") ' 트리거 설정 DoCommand(":TRIGger:MODE EDGE") ' 트리거 모드 에지 DoCommand(":ACQuire:TYPE HRES") ' 획득 타입 하이-레졸루션 DoCommand(":TRIGger:EDGE:SLOPe POS") DoCommand(":TRIGger:EDGE:LEVel 0.5") DoCommand(":TRIGger:SWEep NORMal") '트리거 모드 노멀 / Auto runScopeScale() 'DoCommand(":AutoScale") ''DoCommand(":CHANnel1:SCALe 1.0") ''DoCommand(":CHANnel1:OFFSet 1.5") ''DoCommand(":TIMebase:SCALe 0.001") ''DoCommand(":TIMebase:POSition 2.0") ''MsgBox(strQueryResult = DoQueryString("MEASure:VAVerage?")) ''MsgBox(strQueryResult = DoQueryString("MEASure:VBASe?")) ''MsgBox(strQueryResult = DoQueryString("MEASure:VMAX?")) Exit Sub VisaComError: cmdDisplay("VISA COM Error:" & Err.Description) 'MsgBox("VISA COM Error:" + vbCrLf + Err.Description) DoCommand("*CLS") 'End End Sub Private Function DoCommand(command As String) As String On Error GoTo VisaComError myScope.WriteString(command) CheckInstrumentErrors() Return "Pass" VisaComError: cmdDisplay("ERROR[C]: " & Err.Description) Return "Fail" 'MsgBox("VISA COM Error: " + vbCrLf + CStr(Err.Number) + ", " + Err.Source + ", " + Err.Description, vbExclamation, "VISA COM Error") End Function Private Function DoQueryString(query As String) As String On Error GoTo VisaComError myScope.WriteString(query) DoQueryString = myScope.ReadString CheckInstrumentErrors() Return DoQueryString Exit Function VisaComError: cmdDisplay("ERROR[Q]: " & Err.Description) Return "Fail" 'MsgBox("VISA COM Error: " + vbCrLf + CStr(Err.Number) + ", " + Err.Source + ", " + Err.Description, vbExclamation, "VISA COM Error") End Function Private Sub CheckInstrumentErrors() On Error GoTo VisaComError Dim strErrVal As String Dim strOut As String = "" myScope.WriteString(":SYSTem:ERRor?") ' Query any errors data. strErrVal = myScope.ReadString ' Read: Errnum,"Error String". While Val(strErrVal) <> 0 ' End if find: 0,"No Error". strOut = "INST Error: " + strErrVal myScope.WriteString(":SYSTem:ERRor?") ' Request error message. strErrVal = myScope.ReadString ' Read error message. End While If Not strOut = "" Then cmdDisplay(strOut) myScope.FlushWrite(False) myScope.FlushRead() End If Exit Sub VisaComError: ''MsgBox("VISA COM Error: " + vbCrLf + Err.Description) cmdDisplay("ERROR[E]: " & Err.Description) myScope.FlushWrite(False) myScope.FlushRead() End Sub Private Sub runTimeTimer_Tick(sender As Object, e As EventArgs) Handles runTimeTimer.Tick lblTime.Text = Now If PD1_STATUS = PD1_ENUM.WAIT And DevNum = 2 Then If txbCartridgePD1.BackColor = Color.Blue Then txbCartridgePD1.BackColor = Color.Yellow Else txbCartridgePD1.BackColor = Color.Blue End If txbCartridgePD1.Refresh() ElseIf DevNum = 3 And DispToggle Then If EnableSetup = False Then txbCmdWindowP2.Focus() If txbPV_SN.BackColor = Color.Blue Then txbPV_SN.BackColor = Color.Yellow Else txbPV_SN.BackColor = Color.Blue End If txbPV_SN.Refresh() End If End Sub Private Function SendData(SendMessage As String) As Boolean Try If cmdSerialPort.IsOpen = True Then 'txbSerial.Text = "" cmdSerialPort.DiscardInBuffer() cmdSerialPort.DiscardOutBuffer() If cmdSerialPort.BytesToRead Then MsgBox(cmdSerialPort.BytesToRead) cmdSerialPort.DiscardInBuffer() End If cmdSerialPort.WriteTimeout = -1 cmdSerialPort.WriteLine(SendMessage) CmdTime = 0 EnableCmdTime = True Else MsgBox("통신 포트가 열리지 않았습니다.") ckbSerialUse.Checked = False Return True End If Catch ex As Exception Return True End Try Return False End Function Private Sub ComportSetup() With cmdSerialPort '.PortName = "COM" & Val(cboComPort.Text) .PortName = cboComPort.Text .BaudRate = 230400 .DataBits = 8 .Parity = IO.Ports.Parity.None .StopBits = IO.Ports.StopBits.One .Handshake = IO.Ports.Handshake.None ''.RtsEnable = True '.ReceivedBytesThreshold = 1 'AddHandler cmdSerialPort.DataReceived, AddressOf DataReceivedHandler End With End Sub Private Sub exit_Process() Try cmdSerialPort.Close() ''cmdSerial.Text = "열기" ''cboComPort.Enabled = True ''txbAuthBox.Visible = False ''txbCartBox.Visible = False ''txbShotBox.Visible = False ''GroupBoxEnable(False) ''Save_ini() End Catch ex As Exception MsgBox(ex.Message) End Try ''Try '' Me.Close() ''Catch ex As InvalidOperationException '' Console.WriteLine(ex.GetType().FullName) '' Console.WriteLine(ex.Message) ''End Try End Sub Private Sub runScopeScale() DoCommand(":CHANnel1:SCALe " & txbVSCALE.Text) DoCommand(":CHANnel1:OFFSet " & txbVPOS.Text) DoCommand(":TIMebase:SCALe " & txbHSCALE.Text) DoCommand(":TIMebase:POSition " & txbHPOS.Text) End Sub Private Sub DelayMs(DelayTime As Long) Static Dim StartTick As Long Dim EndTick As Long StartTick = GetTickCount() Do Until (EndTick - StartTick) >= DelayTime EndTick = GetTickCount() Loop End Sub Private Sub RunStableTime() Dim TmpTime As Double Dim TimeLineCnt As Long Dim TimeLineMod As Long Dim dispStr As String cmdDisplay("Waiting for stabilization measurement.") TmpTime = Val(txbWaitDelay.Text) TimeLineMod = TmpTime Mod TimeLine If TmpTime >= TimeLine Then TimeLineCnt = (TmpTime - TimeLineMod) / TimeLine End If dispStr = (Today + " " + TimeOfDay + " " + "Start waiting time.") txbCmdWindowP2.AppendText(dispStr) txbCmdWindowP2.Refresh() For cnt = 1 To TimeLineCnt DelayMs(TimeLine) dispStr = (".") If cnt Mod 2 Then If txbJudge.BackColor = Color.Blue Then txbJudge.BackColor = Color.Gray Else txbJudge.BackColor = Color.Blue End If txbJudge.Refresh() End If txbCmdWindowP2.AppendText(dispStr) txbCmdWindowP2.Refresh() Next txbCmdWindowP2.AppendText(vbCrLf) txbCmdWindowP2.Refresh() DelayMs(TimeLineMod) End Sub Private Function MeasureTime(StartEnd As Boolean) As Long Static Dim nStartTick As Long Static Dim nEndTick As Long If StartEnd = MeasSTART Then nStartTick = GetTickCount() Return 0 Else nEndTick = GetTickCount() Return (nEndTick - nStartTick) End If End Function Private Sub cmdSerial_Click(sender As Object, e As EventArgs) Handles cmdSerial.Click LoadComportName() End Sub Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click Try If cmdSerial.Text = "닫기" Then cmdSerialPort.Close() End If Catch ex As Exception MsgBox(ex.Message) End Try exit_Process() End Sub Private Sub TD_JIG_Activated(sender As Object, e As EventArgs) Handles Me.Activated txbPV_SN.Focus() End Sub Private Sub txbPV_SN_Click(sender As Object, e As EventArgs) Handles txbPV_SN.Click If DevNum = 3 Then gpbProduct2.Focus() Else txbPV_SN.Clear() End If End Sub Private Sub txbGrade_GotFocus(sender As Object, e As EventArgs) Handles txbGrade.GotFocus txbPV_SN.Focus() End Sub Private Sub txbCapacitor_GotFocus(sender As Object, e As EventArgs) Handles txbCapacitor.GotFocus If DevNum = 3 Then gpbProduct2.Focus() Else txbPV_SN.Focus() End If End Sub Private Sub txbPV_Date_GotFocus(sender As Object, e As EventArgs) Handles txbPV_Date.GotFocus If DevNum = 3 Then gpbProduct2.Focus() Else txbPV_SN.Focus() End If End Sub Private Sub txbPV_Freq_GotFocus(sender As Object, e As EventArgs) Handles txbPV_Freq.GotFocus If DevNum = 1 Then If chbAutoMeasure.Checked Then txbPV_SN.Focus() End If ElseIf DevNum = 2 Then ElseIf DevNum = 3 Then If chbAutoMeasure.Checked Then txbPV_SN.Focus() End If ElseIf DevNum = 4 Then If chbAutoMeasure.Checked Then txbPV_SN.Focus() End If Else txbPV_SN.Focus() End If End Sub Private Sub txbPV_Z_GotFocus(sender As Object, e As EventArgs) Handles txbPV_Z.GotFocus If DevNum = 3 Then gpbProduct2.Focus() Else txbPV_SN.Focus() End If End Sub Private Sub txbPV_C_GotFocus(sender As Object, e As EventArgs) Handles txbPV_C.GotFocus If DevNum = 3 Then gpbProduct2.Focus() Else txbPV_SN.Focus() End If End Sub Private Sub txbPV_R_GotFocus(sender As Object, e As EventArgs) Handles txbPV_R.GotFocus If DevNum = 3 Then gpbProduct2.Focus() Else txbPV_SN.Focus() End If End Sub Private Sub chbUseBarcode_GotFocus(sender As Object, e As EventArgs) Handles chbUseBarcode.GotFocus txbPV_SN.Focus() End Sub Private Function ParsingData(CmdInclude As Boolean) As String Dim cmdStr As String = "0" Dim cmdVal(0 To 6) As String Dim ReturnStr As String Dim i As Integer Try If rxMessage <> "" Then cmdMessage = "" If Mid(rxMessage, 1, 1) = "[" Then cmdMessage = Mid(rxMessage, 2, Len(rxMessage)) cmdStr = Mid(cmdMessage, 1, (InStr(rxMessage, " ") - 2)) cmdMessage = Mid(rxMessage, InStr(rxMessage, " ") + 1, Len(cmdMessage)) For i = 1 To 6 If InStr(cmdMessage, ",") <> 0 Then cmdVal(i) = Mid(cmdMessage, 1, InStr(cmdMessage, ",") - 1) cmdMessage = Mid(cmdMessage, InStr(cmdMessage, ",") + 1, Len(cmdMessage)) ElseIf InStr(cmdMessage, "]") <> 0 Then cmdVal(i) = Mid(cmdMessage, 1, InStr(cmdMessage, "]") - 1) 'cmdMessage = Mid(cmdMessage, InStr(cmdMessage, "]") + 1, Len(cmdMessage)) Else Exit For End If Next i rxMessage = "" If CmdInclude = True Then ReturnStr = cmdStr & "," End If Select Case cmdStr Case "ctabroad" cmdStr = cmdVal(1) Return cmdStr Case "cartauth" cmdStr = cmdVal(1) Return cmdStr Case "carttdsn" cmdStr = cmdVal(1) Return cmdStr Case "tshotcnt" cmdStr = cmdVal(1) Return cmdStr Case "rshotcnt" cmdStr = cmdVal(1) Return cmdStr Case "setfreq" cmdStr = cmdVal(1) Return cmdStr Case "setmfreq" cmdStr = cmdVal(1) Return cmdStr Case "setsvfrq" cmdStr = cmdVal(1) Return cmdStr Case "getrdfrq" cmdStr = cmdVal(1) Return cmdStr Case "runshot" cmdStr = cmdVal(1) Return cmdStr Case "setrlsel" cmdStr = (cmdVal(1) & "," & cmdVal(2)) Return cmdStr Case "setrlone" cmdStr = (cmdVal(1) & "," & cmdVal(2)) Return cmdStr Case "rshdelay" cmdStr = cmdVal(1) Return cmdStr Case "runbeep" cmdStr = cmdVal(1) Return cmdStr Case "getctcon" cmdStr = cmdVal(1) Return cmdStr Case "cartsn" cmdStr = cmdVal(1) Return cmdStr Case "rdctconn" cmdStr = cmdVal(1) Return cmdStr Case "cartfreq" cmdStr = cmdVal(1) Return cmdStr Case "cartmanu" cmdStr = cmdVal(1) Return cmdStr Case "ctmodel" cmdStr = cmdVal(1) Return cmdStr Case "carttype" cmdStr = cmdVal(1) Return cmdStr Case "sethertz" cmdStr = cmdVal(1) Return cmdStr Case "setdtype" cmdStr = cmdVal(1) Return cmdStr Case "setctype" cmdStr = cmdVal(1) Return cmdStr Case "setontim" cmdStr = cmdVal(1) Return cmdStr Case "ctinitif" cmdStr = (cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) & "," & cmdVal(6)) Return cmdStr Case "cartinfo" cmdStr = (cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) & "," & cmdVal(6)) Return cmdStr Case Else Return "Else" rxMessage = "" End Select End If rxMessage = "" Return True Else 'txbFreq.Text = "Else" Return False End If Catch ex As Exception rxMessage = "" Return Err.Description End Try End Function Private Function PollingReceiveData(RdTimeout As Long) As String Try If cmdSerialPort.IsOpen = True Then 'cmdDisplay("Waiting for receive data.") rxMessage = "" cmdSerialPort.ReadTimeout = RdTimeout rxMessage = cmdSerialPort.ReadLine() Return ParsingData(False) Else cmdDisplay("통신 포트가 열리지 않았습니다.") ckbSerialUse.Checked = False Return True End If Catch ex As Exception rxMessage = "" Return Err.Description End Try End Function Private Sub SetFrequency(cmdStr As String) tmpCmdMessage = "setmfreq" cmdMessage = "[" & tmpCmdMessage & " " & cmdStr & "]" + vbCrLf SendData(cmdMessage) PollingReceiveData(300) End Sub Function SetFrequencyReturn(cmdStr As String) As Boolean Dim retVal As String tmpCmdMessage = "setmfreq" cmdMessage = "[" & tmpCmdMessage & " " & cmdStr & "]" + vbCrLf SendData(cmdMessage) retVal = PollingReceiveData(300) If retVal = cmdStr Then Return False Else Return True End If End Function Function SetCartType(cmdStr As String) As Boolean Dim retVal As String tmpCmdMessage = "setctype" cmdMessage = "[" & tmpCmdMessage & " " & cmdStr & "]" + vbCrLf SendData(cmdMessage) retVal = PollingReceiveData(500) If retVal = cmdStr Then Return False Else Return True End If End Function Function SetDepthType(cmdStr As String) As Boolean Dim retVal As String tmpCmdMessage = "setdtype" cmdMessage = "[" & tmpCmdMessage & " " & cmdStr & "]" + vbCrLf SendData(cmdMessage) retVal = PollingReceiveData(500) If retVal = cmdStr Then Return False Else Return True End If End Function Function SetHertzType(cmdStr As String) As Boolean Dim retVal As String tmpCmdMessage = "sethertz" cmdMessage = "[" & tmpCmdMessage & " " & cmdStr & "]" + vbCrLf SendData(cmdMessage) retVal = PollingReceiveData(500) If retVal = cmdStr Then Return False Else Return True End If End Function Private Function SetBeep(cmdStr As String) As Boolean tmpCmdMessage = "runbeep" cmdMessage = "[" & tmpCmdMessage & " " & cmdStr & "]" + vbCrLf If SendData(cmdMessage) Then Return True End If PollingReceiveData(300) Return False End Function Private Sub SetRunShotDelay(cmdStr As String) tmpCmdMessage = "rshdelay" cmdMessage = "[" & tmpCmdMessage & " " & cmdStr & "]" + vbCrLf SendData(cmdMessage) End Sub Function SetRelay(ch As Integer, OnOff As Integer) As Boolean Dim retVal As String Dim sendVal As String sendVal = ch & "," & OnOff tmpCmdMessage = "setrlone" cmdMessage = "[" & tmpCmdMessage & " " & Str(ch) & "," & Str(OnOff) & "]" + vbCrLf SendData(cmdMessage) retVal = PollingReceiveData(300) If retVal = sendVal Then Return False Else Return True End If End Function Function setOnTime(cmdStr As String) As Boolean Dim retVal As String tmpCmdMessage = "setontim" cmdMessage = "[" & tmpCmdMessage & " " & cmdStr & "]" + vbCrLf SendData(cmdMessage) retVal = PollingReceiveData(500) If retVal = cmdStr Then Return False Else Return True End If End Function Private Sub RunShot(cmdStr As String) tmpCmdMessage = "runshot" cmdMessage = "[" & tmpCmdMessage & " " & cmdStr & "]" + vbCrLf SendData(cmdMessage) End Sub Private Function RunMeasure() As String Dim tmpVal As Double Dim cnt As Long Dim MeasureStr As String If rdbAvg.Checked Then MeasureStr = MethodAVG ElseIf rdbMax.Checked Then MeasureStr = MethodMAX Else MeasureStr = MethodTOP End If For cnt = 1 To 3 strQueryResult = DoQueryString(":TER?") If strQueryResult = 1 Then If DoQueryString(":OPERegister:CONDition?") = 32 Then strQueryResult = DoQueryString(MeasureStr) tmpVal = Format(Val(strQueryResult), "0.000") If tmpVal > 10 Then Return "Over" Else Return tmpVal End If End If End If Next Return "Fail" End Function Function MesUpdateDB() As Boolean Dim CntCmd As String = "IQC_TotalCnt='" & txbTotalCnt.Text & "',IQC_OkCnt='" & txbOKCnt.Text & "',IQC_NgCnt='" & txbNGCnt.Text & "',IQC_ProCnt='" & txbProCnt.Text & "',IQC_LuxCnt='" & txbLuxCnt.Text & "',IQC_EyeCnt='" & txbEyeCnt.Text & "',IQC_R1Cnt='" & txbR1CntIQC.Text & "',IQC_R2Cnt='" & txbR2CntIQC.Text & "',IQC_R3Cnt='" & txbR3CntIQC.Text & "',IQC_R4Cnt='" & txbR4CntIQC.Text & "',IQC_R5Cnt='" & txbR5CntIQC.Text & "',IQC_R6Cnt='" & txbR6CntIQC.Text & "',IQC_R7Cnt='" & txbR7CntIQC.Text & "',IQC_R8Cnt='" & txbR8CntIQC.Text & "',IQC_R9Cnt='" & txbR9CntIQC.Text & "',IQC_R10Cnt='" & txbR10CntIQC.Text & "',IQC_ReTotalCnt='" & txbReTotalCnt.Text & "',IQC_ReOkCnt='" & txbReOkCnt.Text & "',IQC_ReNgCnt='" & txbReNgCnt.Text & "'" cmd = "update jomtMES_IQCTbl set " & CntCmd & " where TesterDate = '" & getNowDate() & "';" DBCommand(cmd) Return True End Function Private Sub TransDB_PD2() Dim TestStep As Integer Dim UpdateSetDataStr As String TestStep = 31 UpdateSetDataStr = "TestStep='" & TestStep & "',P2_Date='" & getNowDate() & "',P2_Time='" & getNowTime() & "',P2_Frequency='" & txbPV_Freq.Text & "',P2_Current='" & PD2_Current & "'" cmd = "update jomtCartridgeTbl set " & UpdateSetDataStr & " where PV_SN ='" & txbPV_SN.Text & "';" DBCommand(cmd) cmdDisplay("Save Measure DB complete!") End Sub Private Sub UploadCntDB_IQC() Dim TodayDate As String Dim CntCmd As String = "IQC_TotalCnt='" & RegMesIQC.IQC_TotalCnt & "',IQC_OkCnt='" & RegMesIQC.IQC_OKCnt & "',IQC_NgCnt='" & RegMesIQC.IQC_NGCnt & "',IQC_ProCnt='" & RegMesIQC.IQC_GradeCnt(MODEL_NAME.PRO) & "',IQC_LuxCnt='" & RegMesIQC.IQC_GradeCnt(MODEL_NAME.LUX) & "',IQC_EyeCnt='" & RegMesIQC.IQC_GradeCnt(MODEL_NAME.EYE) & "',IQC_R1Cnt='" & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL1) & "',IQC_R2Cnt='" & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL2) & "',IQC_R3Cnt='" & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL3) & "',IQC_R4Cnt='" & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL4) & "',IQC_R5Cnt='" & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL5) & "',IQC_R6Cnt='" & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL6) & "',IQC_R7Cnt='" & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL7) & "',IQC_R8Cnt='" & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL8) & "',IQC_R9Cnt='" & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL9) & "',IQC_R10Cnt='" & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL10) & "',IQC_ReTotalCnt='" & RegMesIQC.IQC_ReTotalCnt & "',IQC_ReOkCnt='" & RegMesIQC.IQC_ReOkCnt & "',IQC_ReNgCnt='" & RegMesIQC.IQC_ReNgCnt & "'" If ShowDetailLog Then cmdDisplay("Enter the 'UploadCntDB_IQC' processor") TodayDate = getNowDate() cmd = "update jomtMES_IQCTbl set " & CntCmd & " where IQC_Date = '" & TodayDate & "';" DBCommand(cmd) End Sub Private Sub UploadCntDB_PD1() Dim TodayDate As String Dim CntCmd As String = "PD1_TotalCnt='" & RegMesPD1.PD1_TotalCnt & "',PD1_OkCnt='" & RegMesPD1.PD1_OKCnt & "',PD1_NgCnt='" & RegMesPD1.PD1_NGCnt & "',PD1_ProCnt='" & RegMesPD1.PD1_GradeCnt(MODEL_NAME.PRO) & "',PD1_LuxCnt='" & RegMesPD1.PD1_GradeCnt(MODEL_NAME.LUX) & "',PD1_EyeCnt='" & RegMesPD1.PD1_GradeCnt(MODEL_NAME.EYE) & "',PD1_MAXCnt='" & RegMesPD1.PD1_GradeCnt(MODEL_NAME.MAX) & "',PD1_R1Cnt='" & RegMesPD1.PD1_CapCnt(RELAY_NUM.RL1) & "',PD1_R2Cnt='" & RegMesPD1.PD1_CapCnt(RELAY_NUM.RL2) & "',PD1_R3Cnt='" & RegMesPD1.PD1_CapCnt(RELAY_NUM.RL3) & "',PD1_R4Cnt='" & RegMesPD1.PD1_CapCnt(RELAY_NUM.RL4) & "',PD1_R5Cnt='" & RegMesPD1.PD1_CapCnt(RELAY_NUM.RL5) & "',PD1_R6Cnt='" & RegMesPD1.PD1_CapCnt(RELAY_NUM.RL6) & "',PD1_R7Cnt='" & RegMesPD1.PD1_CapCnt(RELAY_NUM.RL7) & "',PD1_R8Cnt='" & RegMesPD1.PD1_CapCnt(RELAY_NUM.RL8) & "',PD1_R9Cnt='" & RegMesPD1.PD1_CapCnt(RELAY_NUM.RL9) & "',PD1_R10Cnt='" & RegMesPD1.PD1_CapCnt(RELAY_NUM.RL10) & "'" If ShowDetailLog Then cmdDisplay("Enter the 'UploadCntDB_PD1' processor") TodayDate = getNowDate() cmd = "update jomtMES_PD1Tbl set " & CntCmd & " where PD1_Date = '" & TodayDate & "';" DBCommand(cmd) End Sub Private Function SaveLocalCount() As Boolean Try Dim TodayDate As String = getNowDate() Dim MonthToday As String = Format(Now, "yyyy-MM") Dim StartForm As String = "TestDate,FullCount,OKCount,NGCount,PROCount,LuxCount,EyeCount,MaxCount,R1Count,R2Count,R3Count,R4Count,R5Count,R6Count,R7Count,R8Count,R9Count,R10Count" Dim FilePath As String = System.AppDomain.CurrentDomain.BaseDirectory & "\LocalCount" NewDir(FilePath) Dim FileName As String = FilePath & "\" & MonthToday & ".csv" Dim SaveData As String = TodayDate & "," & RegLocalPD1.PD1_TotalCnt & "," & RegLocalPD1.PD1_OKCnt & "," & RegLocalPD1.PD1_NGCnt & "," & RegLocalPD1.PD1_GradeCnt(MODEL_NAME.PRO) & "," & RegLocalPD1.PD1_GradeCnt(MODEL_NAME.LUX) & "," & RegLocalPD1.PD1_GradeCnt(MODEL_NAME.EYE) & "," & RegLocalPD1.PD1_GradeCnt(MODEL_NAME.MAX) & "," & RegLocalPD1.PD1_CapCnt(RELAY_NUM.RL1) & "," & RegLocalPD1.PD1_CapCnt(RELAY_NUM.RL2) & "," & RegLocalPD1.PD1_CapCnt(RELAY_NUM.RL3) & "," & RegLocalPD1.PD1_CapCnt(RELAY_NUM.RL4) & "," & RegLocalPD1.PD1_CapCnt(RELAY_NUM.RL5) & "," & RegLocalPD1.PD1_CapCnt(RELAY_NUM.RL6) & "," & RegLocalPD1.PD1_CapCnt(RELAY_NUM.RL7) & "," & RegLocalPD1.PD1_CapCnt(RELAY_NUM.RL8) & "," & RegLocalPD1.PD1_CapCnt(RELAY_NUM.RL9) & "," & RegLocalPD1.PD1_CapCnt(RELAY_NUM.RL10) Dim StrData As String = String.Empty If File.Exists(FileName) Then StrData = File.ReadAllText(FileName, Encoding.UTF8) If StrData = vbCrLf Or StrData = "" Or StrData = Nothing Or StrData = String.Empty Then StrData = StartForm & vbCrLf & SaveData Else If UBound(Split(StrData, TodayDate)) > 0 Then StrData = Mid(StrData, 1, InStr(StrData, TodayDate) - 1) StrData = StrData & SaveData & vbCrLf Else StrData = StrData & SaveData & vbCrLf End If End If Else StrData = StartForm & vbCrLf & SaveData & vbCrLf End If File.WriteAllText(FileName, StrData, Encoding.UTF8) Return False Catch ex As Exception MsgBox("수량을 저장하는 과정에서 오류가 발생하였습니다!" & vbCrLf & ex.Message, vbCritical) Return True End Try End Function Private Function LoadLocalCount() As Boolean Try Dim TodayDate As String = getNowDate() Dim MonthToday As String = Format(Now, "yyyy-MM") Dim FilePath As String = System.AppDomain.CurrentDomain.BaseDirectory & "\LocalCount" NewDir(FilePath) Dim FileName As String = FilePath & "\" & MonthToday & ".csv" Dim StrData As String If File.Exists(FileName) Then StrData = File.ReadAllText(FileName, Encoding.UTF8) If UBound(Split(StrData, TodayDate)) > 0 Then StrData = Mid(StrData, InStr(StrData, TodayDate), InStr(StrData, vbCrLf) - 1) ViewCountSet(StrData) Else CountReset() End If Else CountReset() End If Return False Catch ex As Exception MsgBox("수량을 불러오는 과정에서 오류가 발생하였습니다!" & vbCrLf & ex.Message, vbCritical) Return True End Try End Function Private Sub ViewCountSet(saveData As String) If UBound(Split(saveData, ",")) = 17 Then saveData = Mid(saveData, InStr(saveData, ",") + 1, saveData.Length) '' 날짜 삭제 txbTotalCntPD1.Text = Mid(saveData, 1, InStr(saveData, ",") - 1) saveData = Mid(saveData, InStr(saveData, ",") + 1, saveData.Length) '' 전체 수량 삭제 txbOkCntPD1.Text = Mid(saveData, 1, InStr(saveData, ",") - 1) saveData = Mid(saveData, InStr(saveData, ",") + 1, saveData.Length) '' 합격 수량 삭제 txbNgCntPD1.Text = Mid(saveData, 1, InStr(saveData, ",") - 1) saveData = Mid(saveData, InStr(saveData, ",") + 1, saveData.Length) '' 불량 수량 삭제 txbProCntPD1.Text = Mid(saveData, 1, InStr(saveData, ",") - 1) saveData = Mid(saveData, InStr(saveData, ",") + 1, saveData.Length) '' PRO 수량 삭제 txbLuxCntPD1.Text = Mid(saveData, 1, InStr(saveData, ",") - 1) saveData = Mid(saveData, InStr(saveData, ",") + 1, saveData.Length) '' LUX 수량 삭제 txbEyeCntPD1.Text = Mid(saveData, 1, InStr(saveData, ",") - 1) saveData = Mid(saveData, InStr(saveData, ",") + 1, saveData.Length) '' EYE 수량 삭제 txbMaxCntPD1.Text = Mid(saveData, 1, InStr(saveData, ",") - 1) saveData = Mid(saveData, InStr(saveData, ",") + 1, saveData.Length) '' MAX 수량 삭제 txbR1CntPD1.Text = Mid(saveData, 1, InStr(saveData, ",") - 1) saveData = Mid(saveData, InStr(saveData, ",") + 1, saveData.Length) '' R1 수량 삭제 txbR2CntPD1.Text = Mid(saveData, 1, InStr(saveData, ",") - 1) saveData = Mid(saveData, InStr(saveData, ",") + 1, saveData.Length) '' R2 수량 삭제 txbR3CntPD1.Text = Mid(saveData, 1, InStr(saveData, ",") - 1) saveData = Mid(saveData, InStr(saveData, ",") + 1, saveData.Length) '' R3 수량 삭제 txbR4CntPD1.Text = Mid(saveData, 1, InStr(saveData, ",") - 1) saveData = Mid(saveData, InStr(saveData, ",") + 1, saveData.Length) '' R4 수량 삭제 txbR5CntPD1.Text = Mid(saveData, 1, InStr(saveData, ",") - 1) saveData = Mid(saveData, InStr(saveData, ",") + 1, saveData.Length) '' R5 수량 삭제 txbR6CntPD1.Text = Mid(saveData, 1, InStr(saveData, ",") - 1) saveData = Mid(saveData, InStr(saveData, ",") + 1, saveData.Length) '' R6 수량 삭제 txbR7CntPD1.Text = Mid(saveData, 1, InStr(saveData, ",") - 1) saveData = Mid(saveData, InStr(saveData, ",") + 1, saveData.Length) '' R7 수량 삭제 txbR8CntPD1.Text = Mid(saveData, 1, InStr(saveData, ",") - 1) saveData = Mid(saveData, InStr(saveData, ",") + 1, saveData.Length) '' R8 수량 삭제 txbR9CntPD1.Text = Mid(saveData, 1, InStr(saveData, ",") - 1) saveData = Mid(saveData, InStr(saveData, ",") + 1, saveData.Length) '' R9 수량 삭제 txbR10CntPD1.Text = Mid(saveData, 1, saveData.Length) Else CountReset() MsgBox("데이터를 불러오는데 오류가 발생하였습니다.", vbCritical) End If End Sub Private Sub CountReset() txbTotalCntPD1.Text = "0" txbOkCntPD1.Text = "0" txbNgCntPD1.Text = "0" txbProCntPD1.Text = "0" txbLuxCntPD1.Text = "0" txbEyeCntPD1.Text = "0" txbMaxCntPD1.Text = "0" txbR1CntPD1.Text = "0" txbR2CntPD1.Text = "0" txbR3CntPD1.Text = "0" txbR4CntPD1.Text = "0" txbR5CntPD1.Text = "0" txbR6CntPD1.Text = "0" txbR7CntPD1.Text = "0" txbR8CntPD1.Text = "0" txbR9CntPD1.Text = "0" txbR10CntPD1.Text = "0" End Sub Private Sub NewDir(FilePath As String) If Dir(FilePath, vbDirectory) = "" Then MkDir(FilePath) End If End Sub Private Sub GetCntDB_IQC() Dim QC_Date, QC_Grade, QC_Capacitor As String Dim TodayDate As String Dim RetCnt, gCnt, pCnt, rCnt As Integer Try If ShowDetailLog Then cmdDisplay("Enter the 'GetCntDB' processor") ResetCntRegIQC() TodayDate = getNowDate() If RegMeasure.PreTestStep = 1 Then '정상 일때 CntRegMesIQC.IQC_TotalCnt += 1 If RegMeasure.MeasureOkNg = "OK" Then CntRegMesIQC.IQC_OKCnt += 1 gCnt = GradeToValue(RegMeasure.MeasureGrade) If gCnt Then CntRegMesIQC.IQC_GradeCnt(gCnt) += 1 If RegMeasure.MeasureValue(0) Then CntRegMesIQC.IQC_GdCapCnt(gCnt, RegMeasure.MeasureValue(0)) += 1 End If RegMeasure.MeasureTestStep = 11 ElseIf RegMeasure.MeasureOkNg = "NG" Then RegMeasure.MeasureTestStep = 12 CntRegMesIQC.IQC_NGCnt += 1 End If ElseIf RegMeasure.PreTestStep >= 11 And RegMeasure.PreTestStep <= 19 Then RetCnt = DBQueryReader("select QC_Date, QC_Grade, QC_Capacitor From jomtCartridgeTbl Where PV_SN = '" & RegMeasure.MeasurePV_SN & "';") If RetCnt Then QC_Date = sqlDataQuery(0) QC_Grade = sqlDataQuery(1) QC_Capacitor = sqlDataQuery(2) If QC_Date = TodayDate Then If RegMeasure.MeasureOkNg = "OK" Then If RegMeasure.PreTestStep = 12 Or RegMeasure.PreTestStep = 14 Then '이전 불량일때 CntRegMesIQC.IQC_OKCnt += 1 CntRegMesIQC.IQC_NGCnt -= 1 gCnt = GradeToValue(RegMeasure.MeasureGrade) If gCnt Then CntRegMesIQC.IQC_GradeCnt(gCnt) += 1 If RegMeasure.MeasureValue(0) Then CntRegMesIQC.IQC_GdCapCnt(gCnt, RegMeasure.MeasureValue(0)) += 1 End If ElseIf RegMeasure.PreTestStep = 11 Or RegMeasure.PreTestStep = 13 Then '이전 양품일때 gCnt = GradeToValue(RegMeasure.MeasureGrade) pCnt = GradeToValue(QC_Grade) If RegMeasure.MeasureGrade <> QC_Grade Then If gCnt Then CntRegMesIQC.IQC_GradeCnt(gCnt) += 1 If pCnt Then CntRegMesIQC.IQC_GradeCnt(pCnt) -= 1 End If If RegMeasure.MeasureCapacitor <> QC_Capacitor Then If RegMeasure.MeasureValue(0) Then CntRegMesIQC.IQC_GdCapCnt(gCnt, RegMeasure.MeasureValue(0)) += 1 End If For rCnt = 1 To 10 If QC_Capacitor = RELAY_C(rCnt) Then CntRegMesIQC.IQC_GdCapCnt(pCnt, rCnt) -= 1 Exit For End If Next End If End If RegMeasure.MeasureTestStep = 11 ElseIf RegMeasure.MeasureOkNg = "NG" Then If RegMeasure.PreTestStep = 11 Or RegMeasure.PreTestStep = 13 Then '이전 양품일때 CntRegMesIQC.IQC_OKCnt -= 1 CntRegMesIQC.IQC_NGCnt += 1 pCnt = GradeToValue(QC_Grade) If pCnt Then CntRegMesIQC.IQC_GradeCnt(pCnt) -= 1 For rCnt = 1 To 10 If QC_Capacitor = RELAY_C(rCnt) Then CntRegMesIQC.IQC_GdCapCnt(pCnt, rCnt) -= 1 Exit For End If Next End If RegMeasure.MeasureTestStep = 12 End If Else ' 재검사 측정 RetCnt = DBQueryReader("select QC_LastDate From jomtCartridgeTbl Where PV_SN = '" & RegMeasure.MeasurePV_SN & "';") If RetCnt Then RegMeasure.QC_LastDate = sqlDataQuery(0) Else RegMeasure.QC_LastDate = "NULL" End If If RegMeasure.QC_LastDate <> getNowDate() Then CntRegMesIQC.IQC_ReTotalCnt += 1 End If If RegMeasure.MeasureOkNg = "OK" Then If RegMeasure.PreTestStep = 12 Or RegMeasure.PreTestStep = 14 Then '이전 불량일때 CntRegMesIQC.IQC_ReOkCnt += 1 CntRegMesIQC.IQC_ReNgCnt -= 1 gCnt = GradeToValue(RegMeasure.MeasureGrade) If gCnt Then CntRegMesIQC.IQC_ReGradeCnt(gCnt) += 1 If RegMeasure.MeasureValue(0) Then CntRegMesIQC.IQC_ReGdCapCnt(gCnt, RegMeasure.MeasureValue(0)) += 1 End If ElseIf RegMeasure.PreTestStep = 11 Or RegMeasure.PreTestStep = 13 Then '이전 양품일때 gCnt = GradeToValue(RegMeasure.MeasureGrade) pCnt = GradeToValue(QC_Grade) If RegMeasure.MeasureGrade <> QC_Grade Then If gCnt Then CntRegMesIQC.IQC_ReGradeCnt(gCnt) += 1 If pCnt Then CntRegMesIQC.IQC_ReGradeCnt(pCnt) -= 1 End If If RegMeasure.MeasureCapacitor <> QC_Capacitor Then If RegMeasure.MeasureValue(0) Then CntRegMesIQC.IQC_ReGdCapCnt(gCnt, RegMeasure.MeasureValue(0)) += 1 End If For rCnt = 1 To 10 If QC_Capacitor = RELAY_C(rCnt) Then CntRegMesIQC.IQC_ReGdCapCnt(pCnt, rCnt) -= 1 Exit For End If Next End If End If RegMeasure.MeasureTestStep = 13 ElseIf RegMeasure.MeasureOkNg = "NG" Then If RegMeasure.PreTestStep = 11 Or RegMeasure.PreTestStep = 13 Then CntRegMesIQC.IQC_ReOkCnt -= 1 CntRegMesIQC.IQC_ReNgCnt += 1 pCnt = GradeToValue(QC_Grade) If pCnt Then CntRegMesIQC.IQC_ReGradeCnt(pCnt) -= 1 For rCnt = 1 To 10 If QC_Capacitor = RELAY_C(rCnt) Then CntRegMesIQC.IQC_ReGdCapCnt(pCnt, rCnt) -= 1 Exit For End If Next End If RegMeasure.MeasureTestStep = 14 End If End If End If End If Catch ex As Exception End Try End Sub Private Sub CalCntDB_IQC() If ShowDetailLog Then cmdDisplay("Enter the 'CalCntDB_IQC' processor") RegMesIQC.IQC_TotalCnt += CntRegMesIQC.IQC_TotalCnt RegMesIQC.IQC_OKCnt += CntRegMesIQC.IQC_OKCnt RegMesIQC.IQC_NGCnt += CntRegMesIQC.IQC_NGCnt For i = MODEL_NAME.PRO To MODEL_NAME.EYE RegMesIQC.IQC_GradeCnt(i) += CntRegMesIQC.IQC_GradeCnt(i) Next For n = RELAY_NUM.RL1 To RELAY_NUM.RL10 For i = MODEL_NAME.PRO To MODEL_NAME.EYE RegMesIQC.IQC_CapCnt(n) += CntRegMesIQC.IQC_GdCapCnt(i, n) Next Next RegMesIQC.IQC_ReTotalCnt += CntRegMesIQC.IQC_ReTotalCnt RegMesIQC.IQC_ReOkCnt += CntRegMesIQC.IQC_ReOkCnt RegMesIQC.IQC_ReNgCnt += CntRegMesIQC.IQC_ReNgCnt If CntRegMesIQC.IQC_ReOkCnt Or CntRegMesIQC.IQC_ReNgCnt Then If RegMeasure.QC_LastDate <> getNowDate() Then If RegMeasure.MeasureOkNg = "OK" Then RegMesIQC.IQC_ReNgCnt += 1 ElseIf RegMeasure.MeasureOkNg = "NG" Then RegMesIQC.IQC_ReOkCnt += 1 End If End If End If End Sub Private Sub CalRegProductIQC() If ShowDetailLog Then cmdDisplay("Enter the 'CalRegProductIQC' processor") RegMesProduct.IQC_TotalCnt += CntRegMesIQC.IQC_TotalCnt RegMesProduct.PV_TDCnt -= CntRegMesIQC.IQC_TotalCnt RegMesProduct.IQC_OkCnt += (CntRegMesIQC.IQC_OKCnt + CntRegMesIQC.IQC_ReOkCnt) RegMesProduct.IQC_NgCnt += (CntRegMesIQC.IQC_NGCnt + CntRegMesIQC.IQC_ReNgCnt) For i = MODEL_NAME.PRO To MODEL_NAME.EYE RegMesProduct.IQC_GradeCnt(i) += (CntRegMesIQC.IQC_GradeCnt(i) + CntRegMesIQC.IQC_ReGradeCnt(i)) Next For i = MODEL_NAME.PRO To MODEL_NAME.EYE For n = RELAY_NUM.RL1 To RELAY_NUM.RL5 RegMesProduct.IQC_GdCapCnt(i, n) += (CntRegMesIQC.IQC_GdCapCnt(i, n) + CntRegMesIQC.IQC_ReGdCapCnt(i, n)) Next Next End Sub Private Sub LoadTextIQC() Try txbTotalCnt.Text = RegMesIQC.IQC_TotalCnt txbTotalCnt.Refresh() txbOKCnt.Text = RegMesIQC.IQC_OKCnt txbOKCnt.Refresh() txbNGCnt.Text = RegMesIQC.IQC_NGCnt txbNGCnt.Refresh() For i = MODEL_NAME.PRO To MODEL_NAME.EYE txbIQC_GCnt(i).Text = RegMesIQC.IQC_GradeCnt(i) txbIQC_GCnt(i).Refresh() Next For i = RELAY_NUM.RL1 To RELAY_NUM.MAX_RELAY_NUM - 1 txbIQC_RCnt(i).Text = RegMesIQC.IQC_CapCnt(i) txbIQC_RCnt(i).Refresh() Next txbReTotalCnt.Text = RegMesIQC.IQC_ReTotalCnt txbReTotalCnt.Refresh() txbReOkCnt.Text = RegMesIQC.IQC_ReOkCnt txbReOkCnt.Refresh() txbReNgCnt.Text = RegMesIQC.IQC_ReNgCnt txbReNgCnt.Refresh() Catch ex As Exception cmdDisplay(Err.Description) End Try End Sub Private Sub LoadTextPDLocal1() RegLocalPD1.PD1_TotalCnt = Val(txbTotalCntPD1.Text) RegLocalPD1.PD1_OKCnt = Val(txbOkCntPD1.Text) RegLocalPD1.PD1_NGCnt = Val(txbNgCntPD1.Text) For i = MODEL_NAME.PRO To MODEL_NAME.MAX RegLocalPD1.PD1_GradeCnt(i) = txbPD1_GCnt(i).Text Next For i = RELAY_NUM.RL1 To RELAY_NUM.MAX_RELAY_NUM - 1 RegLocalPD1.PD1_CapCnt(i) = txbPD1_RCnt(i).Text Next End Sub Private Sub LoadTextPD1() Try txbTotalCntPD1.Text = RegMesPD1.PD1_TotalCnt txbTotalCntPD1.Refresh() txbOkCntPD1.Text = RegMesPD1.PD1_OKCnt txbOkCntPD1.Refresh() txbNgCntPD1.Text = RegMesPD1.PD1_NGCnt txbNgCntPD1.Refresh() For i = MODEL_NAME.PRO To MODEL_NAME.MAX txbPD1_GCnt(i).Text = RegMesPD1.PD1_GradeCnt(i) txbPD1_GCnt(i).Refresh() Next For i = RELAY_NUM.RL1 To RELAY_NUM.MAX_RELAY_NUM - 1 txbPD1_RCnt(i).Text = RegMesPD1.PD1_CapCnt(i) txbPD1_RCnt(i).Refresh() Next Catch ex As Exception cmdDisplay(Err.Description) End Try End Sub Private Sub TesterLogTransDB() Dim TestStep As Integer Dim UpdateSetDataStr As String TestStep = 11 UpdateSetDataStr = "TestStep='" & TestStep & "',QC_DateTime='" & getNowDateTime() & "',QC_Frequency='" & txbPV_Freq.Text & "',QC_Current='" & RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) & "',QC_Capacitor='" & txbCapacitor.Text & "',QC_Grade='" & txbGrade.Text & "',QC_R1Value='" & RegMeasure.MeasureValue(1) & "',QC_R2Value='" & RegMeasure.MeasureValue(2) & "',QC_R3Value='" & RegMeasure.MeasureValue(3) & "',QC_R4Value='" & RegMeasure.MeasureValue(4) & "',QC_R5Value='" & RegMeasure.MeasureValue(5) & "',QC_R6Value='" & RegMeasure.MeasureValue(6) & "',QC_R7Value='" & RegMeasure.MeasureValue(7) & "',QC_R8Value='" & RegMeasure.MeasureValue(8) & "',QC_R9Value='" & RegMeasure.MeasureValue(9) & "',QC_R10Value='" & RegMeasure.MeasureValue(10) & "'" cmd = "update jomtCartridgeTbl set " & UpdateSetDataStr & " where PV_SN ='" + txbPV_SN.Text + "';" DBCommand(cmd) cmdDisplay("Save Measure DB complete!") End Sub Private Sub IQCValueStandard(testType As Boolean) '' true : DIT / false : J If testType = True Then ProMAX = txbProMax.Text ProTYP = txbProTyp.Text ProMIN = txbProMin.Text LuxMAX = txbLuxMax.Text LuxTYP = txbLuxTyp.Text LuxMIN = txbLuxMin.Text EyeMAX = txbEyeMax.Text EyeTYP = txbEyeTyp.Text EyeMIN = txbEyeTyp.Text Else ProMAX = txbKProMax.Text ProTYP = txbKProTyp.Text ProMIN = txbKProMin.Text LuxMAX = txbKLuxMax.Text LuxTYP = txbKLuxTyp.Text LuxMIN = txbKLuxMin.Text EyeMAX = txbKEyeMax.Text EyeTYP = txbKEyeTyp.Text EyeMIN = txbKEyeTyp.Text End If End Sub Private Sub RunProcessIQC() Try Dim RetStr As String Dim SaveLogStr As String Dim StatusFail As Boolean = False If (Len(RegMeasure.MeasurePV_SN) = LenPVSN And (Mid(RegMeasure.MeasurePV_SN, 1, 3) = NamePVSN Or Mid(RegMeasure.MeasurePV_SN, 1, 1) = NamePVSN2)) Or chbAutoMeasure.Checked = False Or CalModeOn = True And (txbPV_Freq.Text <> "N/A" And txbPV_Freq.Text <> "") Then If Mid(RegMeasure.MeasurePV_SN, 1, 3) = NamePVSN Then IQCValueStandard(True) Else IQCValueStandard(False) End If cmdDisplay("Start measurement.") SetDefaultText() txbGrade.BackColor = DefaultBackColor txbGrade.Text = "측정중" txbGrade.Refresh() txbCapacitor.BackColor = DefaultBackColor txbCapacitor.Text = "측정중" txbCapacitor.Refresh() btnRunIQC.Enabled = False btnRunIQC.Refresh() MeasureTime(MeasSTART) If SetBeep(SoundStart) Then txbGrade.BackColor = DefaultBackColor txbGrade.Text = "대기" txbGrade.Refresh() txbCapacitor.BackColor = DefaultBackColor txbCapacitor.Text = "대기" txbCapacitor.Refresh() txbRun.Text = "통신 에러" txbRun.BackColor = Color.Red txbRun.Refresh() Exit Sub End If myScope.IO.Clear() ' Clear the interface. myScope.IO.Timeout = Val(txbTimeout.Text) ' Set I/O communication timeout. RetStr = DoCommand("*CLS") If RetStr = "Fail" Then StatusFail = True If ShowDetailLog Then txbRun.Text = "Scope Error 01" 'cmdDisplay("Scope clear failure") txbRun.BackColor = Color.Red txbRun.Refresh() End If GoTo MEASURE_END End If If ShowDetailLog Then cmdDisplay("Scope clear complete") SetFrequency(txbPV_Freq.Text) If ShowDetailLog Then cmdDisplay("Frequency : " & txbPV_Freq.Text & " kHz") IQCValueError = 0 '더미 샷 SetRelay(1, 1) For Cnt = 1 To Val(txbIQC_DummyShotCnt.Text) If ShowDetailLog Then cmdDisplay("Run dummy measure sequence[" & Cnt & "]") RetStr = DoCommand(":Single") If RetStr = "Fail" Then StatusFail = True If ShowDetailLog Then cmdDisplay("Trigger set failure") If ShowDetailLog Then txbRun.Text = "Scope Error 02" 'cmdDisplay("Trigger set failure") txbRun.BackColor = Color.Red txbRun.Refresh() End If Exit For End If If ShowDetailLog Then cmdDisplay("Waiting for trigger") If ShowDetailLog Then cmdDisplay("Run dummy shot[" & txbOntime.Text & " ms]") RunShot(txbOntime.Text) PollingReceiveData(300) DelayMs(Val(txbOntime.Text) + 50) RetStr = RunMeasure() If RetStr = "Fail" Then StatusFail = True txbRun.Text = "Scope Error 03" 'cmdDisplay("Trigger failure") txbRun.BackColor = Color.Red txbRun.Refresh() If ShowDetailLog Then cmdDisplay("Trigger failure") Exit For End If Dim tmpMeasureValue As Double = Val(RetStr) If tmpMeasureValue < Val(txbMinValue.Text) Then StatusFail = True txbRun.Text = "최소전류미달" 'cmdDisplay("Trigger failure") txbRun.BackColor = Color.Red txbRun.Refresh() Exit For End If If Abs(tmpMeasureValue - IQCValueError) < Val(txbValueError.Text) Then IQCValueError = tmpMeasureValue Else If IQCValueError = 0 Then IQCValueError = tmpMeasureValue Else StatusFail = True txbRun.Text = "연결불량" 'cmdDisplay("Trigger failure") txbRun.BackColor = Color.Red txbRun.Refresh() Exit For End If End If cmdDisplay("Measurement[D" & Cnt & "] : " & Format(tmpMeasureValue, "0.000") & " A") DelayMs(Val(txbMeasureDelay.Text)) Next '측정 샷 ResetRegMeasureValue() For Cnt = 1 To RelayCnt.Length - 1 If ShowDetailLog Then cmdDisplay("Run measure sequence[" & Cnt & "]") SetRelay(RelayCnt(Cnt), 1) If ShowDetailLog Then cmdDisplay("Turn on relay[" & Cnt & "]") RetStr = DoCommand(":Single") If RetStr = "Fail" Then StatusFail = True txbRun.Text = "Scope Error 04" 'cmdDisplay("Trigger set failure") txbRun.BackColor = Color.Red txbRun.Refresh() If ShowDetailLog Then cmdDisplay("Trigger set failure") Exit For End If If ShowDetailLog Then cmdDisplay("Waiting for trigger") If ShowDetailLog Then cmdDisplay("Run shot[" & txbOntime.Text & " ms]") RunShot(txbOntime.Text) PollingReceiveData(300) DelayMs(Val(txbOntime.Text) + 50) RetStr = RunMeasure() If RetStr = "Fail" Then StatusFail = True txbRun.Text = "Scope Error 03" 'cmdDisplay("Trigger failure") txbRun.BackColor = Color.Red txbRun.Refresh() If ShowDetailLog Then cmdDisplay("Trigger failure") Exit For End If RegMeasure.MeasureValue(RelayCnt(Cnt)) = Val(RetStr) If RegMeasure.MeasureValue(RelayCnt(Cnt)) < Val(txbMinValue.Text) Then StatusFail = True txbRun.Text = "최소전류미달" 'cmdDisplay("Trigger failure") txbRun.BackColor = Color.Red txbRun.Refresh() Exit For End If If Abs(RegMeasure.MeasureValue(RelayCnt(Cnt)) - IQCValueError) < Val(txbValueError.Text) Then IQCValueError = RegMeasure.MeasureValue(RelayCnt(Cnt)) Else StatusFail = True txbRun.Text = "연결불량" 'cmdDisplay("Trigger failure") txbRun.BackColor = Color.Red txbRun.Refresh() Exit For End If cmdDisplay("Measurement[R" & Cnt & "] : " & Format(RegMeasure.MeasureValue(RelayCnt(Cnt)), "0.000") & " A") DelayMs(Val(txbMeasureDelay.Text)) Next MEASURE_END: DoCommand(":Run") SetBeep(SoundEnd) cmdDisplay("End measurement(Run Times : " + Str(MeasureTime(MeasEND)) + " ms).") If ShowDetailLog Then cmdDisplay("Judgment start") If StatusFail Then RegMeasure.MeasureOkNg = "NG" RegMeasure.MeasureGrade = "FAIL" txbGrade.BackColor = Color.Red txbCapacitor.BackColor = Color.Red txbGrade.Text = "FAIL" txbCapacitor.Text = "FAIL" txbGrade.Refresh() txbCapacitor.Refresh() Exit Sub Else RegMeasure.MeasureValue(0) = 0 For Cnt = 1 To RelayCnt.Length - 1 If RegMeasure.MeasureValue(RelayCnt(Cnt)) <= ProMAX And RegMeasure.MeasureValue(0) = 0 Then RegMeasure.MeasureValue(0) = Cnt If RegMeasure.MeasureValue(0) Then If RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) < RegMeasure.MeasureValue(RelayCnt(Cnt)) Then If RegMeasure.MeasureValue(RelayCnt(Cnt)) <= ProMAX Then RegMeasure.MeasureValue(0) = RelayCnt(Cnt) End If End If End If Next If RegMeasure.MeasureValue(0) = 0 Then RegMeasure.MeasureOkNg = "NG" RegMeasure.MeasureGrade = "OVER" txbGrade.Text = RegMeasure.MeasureGrade RegMeasure.MeasureValue(0) = 0 txbGrade.BackColor = Color.Red ElseIf RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) >= ProMIN Then RegMeasure.MeasureOkNg = "OK" RegMeasure.MeasureGrade = "PRO" txbGrade.Text = RegMeasure.MeasureGrade txbGrade.BackColor = Color.Green ElseIf RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) >= LuxMIN Then RegMeasure.MeasureOkNg = "OK" RegMeasure.MeasureGrade = "LUX" txbGrade.Text = RegMeasure.MeasureGrade txbGrade.BackColor = Color.Green ElseIf RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) >= EyeMIN Then RegMeasure.MeasureOkNg = "OK" RegMeasure.MeasureGrade = "EYE" txbGrade.Text = RegMeasure.MeasureGrade txbGrade.BackColor = Color.Green Else RegMeasure.MeasureOkNg = "NG" RegMeasure.MeasureGrade = "UNDER" txbGrade.Text = RegMeasure.MeasureGrade RegMeasure.MeasureValue(0) = 0 txbGrade.BackColor = Color.Red End If txbGrade.Refresh() RegMeasure.MeasureCapacitor = RELAY_C(RegMeasure.MeasureValue(0)) txbCapacitor.Text = RegMeasure.MeasureCapacitor If RegMeasure.MeasureValue(0) Then txbCapacitor.BackColor = Color.Green Else txbCapacitor.BackColor = Color.Red End If txbRun.Text = "측정완료" txbRun.BackColor = Color.Green txbCapacitor.Refresh() End If If CalModeOn = False Then If chbAutoMeasure.Checked Then txbRun.Text = "DB등록중" txbRun.BackColor = Color.DarkOrange GetCntDB_IQC() 'TD 측정 수량 집계 If UploadDB_IQC() Then 'TD 측정 Data DB 저장 cmdDisplay("Save Measure DB failure!") txbRun.Text = "DB등록실패" txbRun.BackColor = Color.DarkOrange Else cmdDisplay("Save Measure DB complete!") txbRun.Text = "DB등록완료" txbRun.BackColor = Color.Green End If CalCntDB_IQC() 'TD 측정 수량 계산 UploadCntDB_IQC() 'TD 측정 수량 및 테스트 스텝 DB 업로드 LoadTextIQC() 'TD 측정 수량 화면 표시 업데이트 If txbRun.Text = "DB등록완료" Then txbRun.Text = "수량등록완료" txbRun.BackColor = Color.Green Else txbRun.Text = "DB등록실패" txbRun.BackColor = Color.Red End If 'LoadRegProduct() '생산 MES 수량 정보 DB 다운로드 'CalRegProductIQC() '생산 MES 수량 계산 'UploadRegProductIQC() '생산 MES 수량 정보 DB 업로드 End If SaveLogStr = getNowDate() & "," & getNowTime() & "," & RegMeasure.MeasurePV_SN & "," & RegMeasure.MeasureTestStep & "," & RegMeasure.MeasureOkNg & "," & RegMeasure.MeasureGrade & "," & RegMeasure.MeasureCapacitor & "," & RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) & "," & RegMeasure.MeasureValue(RELAY_NUM.RL1) & "," & RegMeasure.MeasureValue(RELAY_NUM.RL2) & "," & RegMeasure.MeasureValue(RELAY_NUM.RL3) & "," & RegMeasure.MeasureValue(RELAY_NUM.RL4) & "," & RegMeasure.MeasureValue(RELAY_NUM.RL5) & "," & RegMeasure.MeasureValue(RELAY_NUM.RL6) & "," & RegMeasure.MeasureValue(RELAY_NUM.RL7) & "," & RegMeasure.MeasureValue(RELAY_NUM.RL8) & "," & RegMeasure.MeasureValue(RELAY_NUM.RL9) & "," & RegMeasure.MeasureValue(RELAY_NUM.RL10) & "," & RegTD_VALUE.PV_Date & "," & RegTD_VALUE.PV_Frequency & "," & RegTD_VALUE.PV_Impedance & "," & RegTD_VALUE.PV_Capacitance & "," & RegTD_VALUE.PV_Resistance & "," & RegMesIQC.IQC_TotalCnt & "," & RegMesIQC.IQC_OKCnt & "," & RegMesIQC.IQC_NGCnt & "," & RegMesIQC.IQC_GradeCnt(MODEL_NAME.PRO) & "," & RegMesIQC.IQC_GradeCnt(MODEL_NAME.LUX) & "," & RegMesIQC.IQC_GradeCnt(MODEL_NAME.EYE) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL1) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL2) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL3) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL4) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL5) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL6) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL7) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL8) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL9) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL10) & "," & RegMesIQC.IQC_ReTotalCnt & "," & RegMesIQC.IQC_ReOkCnt & "," & RegMesIQC.IQC_ReNgCnt Save_CSV(SaveLogStr) Dim mqttResult As Boolean If RegMeasure.MeasureOkNg = "OK" Then mqttResult = True Else mqttBroker = False End If SaveLogStr = "[{""testdate"":""" & getNowDate() & """},{""testtime"":""" & getNowTime() & """},{""td_serial"":""" & RegMeasure.MeasurePV_SN & """},{""td_freq"":""" & RegTD_VALUE.PV_Frequency & """},{""td_imp"":""" & RegTD_VALUE.PV_Impedance & """},{""td_grade"":""" & RegMeasure.MeasureGrade & """},{""test_result"":""" & mqttResult & """},{""td_c"":""" & RegMeasure.MeasureCapacitor & """}]" Mqtt_DataSend(SaveLogStr) txbGrade.Refresh() txbCapacitor.Refresh() End If Else If (txbPV_SN.Text = "" Or txbPV_SN.Text = "입력하세요!") And chbAutoMeasure.Checked Then MsgBox("T/D SN 번호를 입력해주세요") ElseIf (Len(RegMeasure.MeasurePV_SN) <> LenPVSN And Len(RegMeasure.MeasurePV_SN) <> (LenPVSN - 1)) And chbAutoMeasure.Checked Then MsgBox("T/D SN 번호를 형식에 맞게 입력해주세요") ElseIf (Mid(RegMeasure.MeasurePV_SN, 1, 3) <> NamePVSN Or Mid(RegMeasure.MeasurePV_SN, 1, 1) <> NamePVSN2) And chbAutoMeasure.Checked Then MsgBox("T/D SN 번호를 형식에 맞게 입력해주세요") ElseIf txbPV_Freq.Text = "N/A" Or txbPV_Freq.Text = "" Then MsgBox("T/D 주파수를 형식에 맞게 입력해주세요") End If End If btnRunIQC.Enabled = True btnRunIQC.Refresh() If chbUseBarcode.Checked Then txbPV_SN.Focus() Catch ResultNull As NullReferenceException btnRunIQC.Enabled = True btnRunIQC.Refresh() MsgBox("Mea ERR:장비와 연결되어 있지 않습니다. 연결 상태를 확인하여 주십시오", vbCritical) Catch ex As Exception btnRunIQC.Enabled = True btnRunIQC.Refresh() MsgBox("Mea ERR:" & Err.Description) SetBeep(SoundError) End Try End Sub ' Private Sub RunProcessIQC() ' Dim Cnt As Integer ' Dim StatusFail As Boolean = False ' Dim RetStr As String ' Dim SaveLogStr As String ' Dim tmpMeasureValue As Double ' Try ' If ((Len(RegMeasure.MeasurePV_SN) = LenPVSN Or Len(RegMeasure.MeasurePV_SN) = LenPVSN - 1) And (Mid(RegMeasure.MeasurePV_SN, 1, 3) = NamePVSN Or Mid(RegMeasure.MeasurePV_SN, 1, 1) = NamePVSN2)) Or chbAutoMeasure.Checked = False Or CalModeOn = True And (txbPV_Freq.Text <> "N/A" And txbPV_Freq.Text <> "") Then ' If Mid(RegMeasure.MeasurePV_SN, 1, 3) = NamePVSN Then ' IQCValueStandard(True) ' Else ' IQCValueStandard(False) ' End If ' cmdDisplay("Start measurement.") ' SetDefaultText() ' txbGrade.BackColor = DefaultBackColor ' txbGrade.Text = "측정중" ' txbGrade.Refresh() ' txbCapacitor.BackColor = DefaultBackColor ' txbCapacitor.Text = "측정중" ' txbCapacitor.Refresh() ' btnRunIQC.Enabled = False ' btnRunIQC.Refresh() ' MeasureTime(MeasSTART) ' If SetBeep(SoundStart) Then ' txbGrade.BackColor = DefaultBackColor ' txbGrade.Text = "대기" ' txbGrade.Refresh() ' txbCapacitor.BackColor = DefaultBackColor ' txbCapacitor.Text = "대기" ' txbCapacitor.Refresh() ' txbRun.Text = "통신 에러" ' txbRun.BackColor = Color.Red ' txbRun.Refresh() ' Exit Sub ' End If ' myScope.IO.Clear() ' Clear the interface. ' myScope.IO.Timeout = Val(txbTimeout.Text) ' Set I/O communication timeout. ' RetStr = DoCommand("*CLS") ' If RetStr = "Fail" Then ' StatusFail = True ' If ShowDetailLog Then ' txbRun.Text = "Scope Error 01" 'cmdDisplay("Scope clear failure") ' txbRun.BackColor = Color.Red ' txbRun.Refresh() ' End If ' GoTo MEASURE_END ' End If ' If ShowDetailLog Then cmdDisplay("Scope clear complete") ' SetFrequency(txbPV_Freq.Text) ' If ShowDetailLog Then cmdDisplay("Frequency : " & txbPV_Freq.Text & " kHz") ' '더미 샷 ' SetRelay(1, 1) ' For Cnt = 1 To Val(txbIQC_DummyShotCnt.Text) ' If ShowDetailLog Then cmdDisplay("Run dummy measure sequence[" & Cnt & "]") ' RetStr = DoCommand(":Single") ' If RetStr = "Fail" Then ' StatusFail = True ' If ShowDetailLog Then cmdDisplay("Trigger set failure") ' If ShowDetailLog Then ' txbRun.Text = "Scope Error 02" 'cmdDisplay("Trigger set failure") ' txbRun.BackColor = Color.Red ' txbRun.Refresh() ' End If ' Exit For ' End If ' If ShowDetailLog Then cmdDisplay("Waiting for trigger") ' If ShowDetailLog Then cmdDisplay("Run dummy shot[" & txbOntime.Text & " ms]") ' RunShot(txbOntime.Text) ' PollingReceiveData(300) ' DelayMs(Val(txbOntime.Text) + 50) ' RetStr = RunMeasure() ' If RetStr = "Fail" Then ' StatusFail = True ' txbRun.Text = "Scope Error 03" 'cmdDisplay("Trigger failure") ' txbRun.BackColor = Color.Red ' txbRun.Refresh() ' If ShowDetailLog Then cmdDisplay("Trigger failure") ' Exit For ' End If ' tmpMeasureValue = Val(RetStr) ' cmdDisplay("Measurement[D" & Cnt & "] : " & Format(tmpMeasureValue, "0.000") & " A") ' DelayMs(Val(txbMeasureDelay.Text)) ' Next ' '측정 샷 ' ResetRegMeasureValue() ' For Cnt = 1 To RELAY_C.Length - 1 ' If ShowDetailLog Then cmdDisplay("Run measure sequence[" & Cnt & "]") ' SetRelay(relayCnt(Cnt), 1) ' If ShowDetailLog Then cmdDisplay("Turn on relay[" & Cnt & "]") ' RetStr = DoCommand(":Single") ' If RetStr = "Fail" Then ' StatusFail = True ' txbRun.Text = "Scope Error 04" 'cmdDisplay("Trigger set failure") ' txbRun.BackColor = Color.Red ' txbRun.Refresh() ' If ShowDetailLog Then cmdDisplay("Trigger set failure") ' Exit For ' End If ' If ShowDetailLog Then cmdDisplay("Waiting for trigger") ' If ShowDetailLog Then cmdDisplay("Run shot[" & txbOntime.Text & " ms]") ' RunShot(txbOntime.Text) ' PollingReceiveData(300) ' DelayMs(Val(txbOntime.Text) + 50) ' RetStr = RunMeasure() ' If RetStr = "Fail" Then ' StatusFail = True ' txbRun.Text = "Scope Error 03" 'cmdDisplay("Trigger failure") ' txbRun.BackColor = Color.Red ' txbRun.Refresh() ' If ShowDetailLog Then cmdDisplay("Trigger failure") ' Exit For ' End If ' RegMeasure.MeasureValue(relayCnt(Cnt)) = Val(RetStr) ' tmpMeasureValue = RegMeasure.MeasureValue(relayCnt(Cnt)) ' cmdDisplay("Measurement[R" & Cnt & "] : " & Format(tmpMeasureValue, "0.000") & " A") ' DelayMs(Val(txbMeasureDelay.Text)) ' Next 'MEASURE_END: ' DoCommand(":Run") ' SetBeep(SoundEnd) ' cmdDisplay("End measurement(Run Times : " + Str(MeasureTime(MeasEND)) + " ms).") ' If ShowDetailLog Then cmdDisplay("Judgment start") ' If StatusFail Then ' RegMeasure.MeasureOkNg = "NG" ' RegMeasure.MeasureGrade = "FAIL" ' txbGrade.BackColor = Color.Red ' txbCapacitor.BackColor = Color.Red ' txbGrade.Text = "FAIL" ' txbCapacitor.Text = "FAIL" ' txbGrade.Refresh() ' txbCapacitor.Refresh() ' txbRun.Text = "측정실패" ' txbRun.BackColor = Color.Red ' Else ' RegMeasure.MeasureValue(0) = 0 ' For Cnt = 1 To RELAY_C.Length - 1 ' If RegMeasure.MeasureValue(relayCnt(Cnt)) <= ProMAX And RegMeasure.MeasureValue(0) = 0 Then RegMeasure.MeasureValue(0) = Cnt ' If RegMeasure.MeasureValue(0) Then ' If RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) < RegMeasure.MeasureValue(relayCnt(Cnt)) Then ' If RegMeasure.MeasureValue(relayCnt(Cnt)) <= ProMAX Then ' RegMeasure.MeasureValue(0) = Cnt ' End If ' End If ' End If ' Next ' If RegMeasure.MeasureValue(0) = 0 Then ' RegMeasure.MeasureOkNg = "NG" ' RegMeasure.MeasureGrade = "OVER" ' txbGrade.Text = RegMeasure.MeasureGrade ' RegMeasure.MeasureValue(0) = 0 ' txbGrade.BackColor = Color.Red ' ElseIf RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) >= ProMIN Then ' RegMeasure.MeasureOkNg = "OK" ' RegMeasure.MeasureGrade = "PRO" ' txbGrade.Text = RegMeasure.MeasureGrade ' txbGrade.BackColor = Color.Green ' ElseIf RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) >= LuxMIN Then ' RegMeasure.MeasureOkNg = "OK" ' RegMeasure.MeasureGrade = "LUX" ' txbGrade.Text = RegMeasure.MeasureGrade ' txbGrade.BackColor = Color.Green ' ElseIf RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) >= EyeMIN Then ' RegMeasure.MeasureOkNg = "OK" ' RegMeasure.MeasureGrade = "EYE" ' txbGrade.Text = RegMeasure.MeasureGrade ' txbGrade.BackColor = Color.Green ' Else ' RegMeasure.MeasureOkNg = "NG" ' RegMeasure.MeasureGrade = "UNDER" ' txbGrade.Text = RegMeasure.MeasureGrade ' RegMeasure.MeasureValue(0) = 0 ' txbGrade.BackColor = Color.Red ' End If ' txbGrade.Refresh() ' RegMeasure.MeasureCapacitor = RELAY_C(RegMeasure.MeasureValue(0)) ' txbCapacitor.Text = RegMeasure.MeasureCapacitor ' If RegMeasure.MeasureValue(0) Then ' txbCapacitor.BackColor = Color.Green ' Else ' txbCapacitor.BackColor = Color.Red ' End If ' txbRun.Text = "측정완료" ' txbRun.BackColor = Color.Green ' txbCapacitor.Refresh() ' End If ' If chbAutoMeasure.Checked Then ' txbRun.Text = "DB등록중" ' txbRun.BackColor = Color.DarkOrange ' GetCntDB_IQC() 'TD 측정 수량 집계 ' If UploadDB_IQC() Then 'TD 측정 Data DB 저장 ' cmdDisplay("Save Measure DB failure!") ' txbRun.Text = "DB등록실패" ' txbRun.BackColor = Color.DarkOrange ' Else ' cmdDisplay("Save Measure DB complete!") ' txbRun.Text = "DB등록완료" ' txbRun.BackColor = Color.Green ' End If ' CalCntDB_IQC() 'TD 측정 수량 계산 ' UploadCntDB_IQC() 'TD 측정 수량 및 테스트 스텝 DB 업로드 ' LoadTextIQC() 'TD 측정 수량 화면 표시 업데이트 ' If txbRun.Text = "DB등록완료" Then ' txbRun.Text = "수량등록완료" ' txbRun.BackColor = Color.Green ' Else ' txbRun.Text = "DB등록실패" ' txbRun.BackColor = Color.Red ' End If ' 'LoadRegProduct() '생산 MES 수량 정보 DB 다운로드 ' 'CalRegProductIQC() '생산 MES 수량 계산 ' 'UploadRegProductIQC() '생산 MES 수량 정보 DB 업로드 ' End If ' SaveLogStr = getNowDate() & "," & getNowTime() & "," & RegMeasure.MeasurePV_SN & "," & RegMeasure.MeasureTestStep & "," & RegMeasure.MeasureOkNg & "," & RegMeasure.MeasureGrade & "," & ' RegMeasure.MeasureCapacitor & "," & RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) & "," & RegMeasure.MeasureValue(RELAY_NUM.RL1) & "," & ' RegMeasure.MeasureValue(RELAY_NUM.RL2) & "," & RegMeasure.MeasureValue(RELAY_NUM.RL3) & "," & RegMeasure.MeasureValue(RELAY_NUM.RL4) & "," & RegMeasure.MeasureValue(RELAY_NUM.RL5) & "," & ' RegMeasure.MeasureValue(RELAY_NUM.RL6) & "," & RegMeasure.MeasureValue(RELAY_NUM.RL7) & "," & RegMeasure.MeasureValue(RELAY_NUM.RL8) & "," & RegMeasure.MeasureValue(RELAY_NUM.RL9) & "," & RegMeasure.MeasureValue(RELAY_NUM.RL10) & "," & ' RegTD_VALUE.PV_Date & "," & RegTD_VALUE.PV_Frequency & "," & RegTD_VALUE.PV_Impedance & "," & RegTD_VALUE.PV_Capacitance & "," & RegTD_VALUE.PV_Resistance & "," & ' RegMesIQC.IQC_TotalCnt & "," & RegMesIQC.IQC_OKCnt & "," & RegMesIQC.IQC_NGCnt & "," & RegMesIQC.IQC_GradeCnt(MODEL_NAME.PRO) & "," & RegMesIQC.IQC_GradeCnt(MODEL_NAME.LUX) & "," & ' RegMesIQC.IQC_GradeCnt(MODEL_NAME.EYE) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL1) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL2) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL3) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL4) & "," & ' RegMesIQC.IQC_CapCnt(RELAY_NUM.RL5) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL6) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL7) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL8) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL9) & "," & RegMesIQC.IQC_CapCnt(RELAY_NUM.RL10) & "," & ' RegMesIQC.IQC_ReTotalCnt & "," & RegMesIQC.IQC_ReOkCnt & "," & RegMesIQC.IQC_ReNgCnt ' Save_CSV(SaveLogStr) ' Dim mqttResult As Boolean ' If RegMeasure.MeasureOkNg = "OK" Then ' mqttResult = True ' Else ' mqttBroker = False ' End If ' SaveLogStr = "[{""testdate"":""" & getNowDate() & """},{""testtime"":""" & getNowTime() & """},{""td_serial"":""" & RegMeasure.MeasurePV_SN & """},{""td_freq"":""" & RegTD_VALUE.PV_Frequency & """},{""td_imp"":""" & RegTD_VALUE.PV_Impedance & """},{""td_grade"":""" & RegMeasure.MeasureGrade & """},{""test_result"":""" & mqttResult & """},{""td_c"":""" & RegMeasure.MeasureCapacitor & """}]" ' Mqtt_DataSend(SaveLogStr) ' txbGrade.Refresh() ' txbCapacitor.Refresh() ' Else ' If (txbPV_SN.Text = "" Or txbPV_SN.Text = "입력하세요!") And chbAutoMeasure.Checked Then ' MsgBox("T/D SN 번호를 입력해주세요") ' ElseIf (Len(RegMeasure.MeasurePV_SN) <> LenPVSN And Len(RegMeasure.MeasurePV_SN) <> (LenPVSN - 1)) And chbAutoMeasure.Checked Then ' MsgBox("T/D SN 번호를 형식에 맞게 입력해주세요") ' ElseIf (Mid(RegMeasure.MeasurePV_SN, 1, 3) <> NamePVSN Or Mid(RegMeasure.MeasurePV_SN, 1, 1) <> NamePVSN2) And chbAutoMeasure.Checked Then ' MsgBox("T/D SN 번호를 형식에 맞게 입력해주세요") ' ElseIf txbPV_Freq.Text = "N/A" Or txbPV_Freq.Text = "" Then ' MsgBox("T/D 주파수를 형식에 맞게 입력해주세요") ' End If ' End If ' btnRunIQC.Enabled = True ' btnRunIQC.Refresh() ' If chbUseBarcode.Checked Then txbPV_SN.Focus() ' Catch ResultNull As NullReferenceException ' btnRunIQC.Enabled = True ' btnRunIQC.Refresh() ' MsgBox("Mea ERR:장비와 연결되어 있지 않습니다. 연결 상태를 확인하여 주십시오", vbCritical) ' Catch ex As Exception ' btnRunIQC.Enabled = True ' btnRunIQC.Refresh() ' MsgBox("Mea ERR:" & Err.Description) ' SetBeep(SoundError) ' End Try ' End Sub Private Function CheckCartConnect() As Boolean Dim retVal As String Try tmpCmdMessage = "getctcon" cmdMessage = "[" & tmpCmdMessage & "]" + vbCrLf SendData(cmdMessage) retVal = PollingReceiveData(1000) If retVal <> 0 Then Return False Else Return True End If Catch Return True End Try End Function Private Function SetWriteFrequency() As Boolean Dim tmpStr As String tmpCmdMessage = "cartfreq" cmdMessage = "[" & tmpCmdMessage & " " & txbPV_Freq.Text & "]" + vbCrLf SendData(cmdMessage) tmpStr = PollingReceiveData(3000) If tmpStr <> txbPV_Freq.Text Then Return True End If Return False End Function Private Function SetWriteCartManCode() As Boolean Dim tmpStr As String tmpCmdMessage = "cartmanu" cmdMessage = "[" & tmpCmdMessage & " JOMT]" + vbCrLf SendData(cmdMessage) tmpStr = PollingReceiveData(10000) If tmpStr <> "jomt" Then Return True End If Return False End Function Private Function SetWriteCartModel() As Boolean Dim tmpStr As String If CartType = CART_TYPE.CART_NONE Then Return True tmpCmdMessage = "ctmodel" cmdMessage = "[" & tmpCmdMessage & " " & CartType & "]" + vbCrLf SendData(cmdMessage) tmpStr = PollingReceiveData(3000) If tmpStr <> CartType Then Return True End If Return False End Function Private Function SetWriteCartType() As Boolean Dim tmpStr As String Dim tmpCartType As Integer If CartType = CART_TYPE.CART_NONE Then Return True If CartType = CART_TYPE.PRO_EYE Or CartType = CART_TYPE.LUX_EYE Then tmpCartType = 1 ElseIf CartType = CART_TYPE.PRO_FACE Or CartType = CART_TYPE.LUX_FACE Then tmpCartType = 2 End If tmpCmdMessage = "carttype" cmdMessage = "[" & tmpCmdMessage & " " & tmpCartType & "]" + vbCrLf SendData(cmdMessage) tmpStr = PollingReceiveData(3000) If tmpStr <> tmpCartType Then Return True End If Return False End Function Private Function SetPV_SN() As Boolean Dim tmpStr As String tmpCmdMessage = "initcart" cmdMessage = "[" & tmpCmdMessage & " " & txbPV_SN.Text & "]" + vbCrLf SendData(cmdMessage) tmpStr = PollingReceiveData(10000) If UCase(tmpStr) <> txbPV_SN.Text Then Return True End If Return False End Function Public Function UploadDB_PD1() As Boolean Dim UpdateSetDataStr As String Dim P1_Model As String = "NULL" Dim P1_CartType As String = "NULL" Try Select Case CartType Case CART_TYPE.PRO_FACE P1_Model = "PRO" P1_CartType = "FACE" Case CART_TYPE.PRO_EYE P1_Model = "PRO" P1_CartType = "EYE" Case CART_TYPE.LUX_FACE P1_Model = "LUX" P1_CartType = "FACE" Case CART_TYPE.LUX_EYE P1_Model = "LUX" P1_CartType = "EYE" Case CART_TYPE.PRO_BODY P1_Model = "PRO" P1_CartType = "BODY" Case CART_TYPE.LUX_BODY P1_Model = "LUX" P1_CartType = "BODY" Case CART_TYPE.ALPHA_FACE P1_Model = "ALPHA" P1_CartType = "FACE" Case CART_TYPE.ALPHA_EYE P1_Model = "ALPHA" P1_CartType = "EYE" Case CART_TYPE.ALPHA_BODY P1_Model = "ALPHA" P1_CartType = "BODY" Case CART_TYPE.MAX_SET P1_Model = "MAXIMUM" P1_CartType = "SET" End Select If ShowDetailLog Then cmdDisplay("Enter the 'UploadDB_PD1' processor") If RegMeasure.PreTestStep <= 29 Then If ckbSerialUse.Checked = True Then UpdateSetDataStr = "TestStep='" & RegMeasure.MeasureTestStep & "',P1_Frequency='" & RegTD_VALUE.PV_Frequency & "',P1_Model='" & P1_Model & "',P1_CartType='" & P1_CartType & "'" If RegMeasure.PreTestStep < TeststepSet.Re_OK Then UpdateSetDataStr = UpdateSetDataStr & ",P1_Date='" & getNowDate() & "',P1_Time='" & getNowTime() & "'" End If Else UpdateSetDataStr = "TestStep='" & RegMeasure.MeasureTestStep & "',P0_Model='" & P1_Model & "',P0_Type='" & P1_CartType & "'" If RegMeasure.PreTestStep < TeststepSet.Re_OK Then UpdateSetDataStr = UpdateSetDataStr & ",P0_Date='" & getNowDate() & "',P0_Time='" & getNowTime() & "'" End If End If StrCmd = "update jomtCartridgeTbl set " & UpdateSetDataStr & " where PV_SN ='" & RegTD_VALUE.PV_SN & "';" DBCommand(StrCmd) Return False End If Return True Catch ex As Exception Return True End Try End Function Private Sub CalCntDB_PD1() Dim cnt As Integer If ShowDetailLog Then cmdDisplay("Enter the 'CalCntDB_PD1' processor") ResetCntRegMesPD1() If RegMeasure.PreTestStep < TeststepSet.First_Ok - 1 Then CntRegMesPD1.PD1_TotalCnt += 1 If RegMeasure.MeasureOkNg = "OK" Then CntRegMesPD1.PD1_OKCnt += 1 cnt = GradeToValue(RegMeasure.MeasureGrade) CntRegMesPD1.PD1_GradeCnt(cnt) += 1 For cnt = 1 To 10 If RegMeasure.MeasureCapacitor = RELAY_C(cnt) Then CntRegMesPD1.PD1_CapCnt(cnt) += 1 Exit For End If Next RegMeasure.MeasureTestStep = TeststepSet.First_Ok Else CntRegMesPD1.PD1_NGCnt += 1 RegMeasure.MeasureTestStep = TeststepSet.First_Ng End If ElseIf RegMeasure.MeasureTestStep >= TeststepSet.First_Ok Then If RegMeasure.MeasureOkNg = "OK" Then '현재 OK 이면서 RegMeasure.MeasureTestStep = TeststepSet.First_Ok If RegMeasure.PreTestStep = TeststepSet.First_Ok Or RegMeasure.PreTestStep = TeststepSet.Re_OK Then '이전 OK 일때 ElseIf RegMeasure.PreTestStep = TeststepSet.First_Ng Or RegMeasure.PreTestStep = TeststepSet.RE_Ng Then '이전 NG 일때 CntRegMesPD1.PD1_OKCnt += 1 CntRegMesPD1.PD1_NGCnt -= 1 cnt = GradeToValue(RegMeasure.MeasureGrade) CntRegMesPD1.PD1_GradeCnt(cnt) += 1 For cnt = 1 To 10 If RegMeasure.MeasureCapacitor = RELAY_C(cnt) Then CntRegMesPD1.PD1_CapCnt(cnt) += 1 Exit For End If Next End If Else '현재 NG 이면서 RegMeasure.MeasureTestStep = TeststepSet.First_Ng If RegMeasure.PreTestStep = TeststepSet.First_Ok Or RegMeasure.PreTestStep = TeststepSet.Re_OK Then '이전 OK 일때 CntRegMesPD1.PD1_OKCnt -= 1 CntRegMesPD1.PD1_NGCnt += 1 cnt = GradeToValue(RegMeasure.MeasureGrade) CntRegMesPD1.PD1_GradeCnt(cnt) -= 1 For cnt = 1 To 5 If RegMeasure.MeasureCapacitor = RELAY_C(cnt) Then CntRegMesPD1.PD1_CapCnt(cnt) -= 1 Exit For End If Next ElseIf RegMeasure.PreTestStep = TeststepSet.First_Ng Or RegMeasure.PreTestStep = TeststepSet.RE_Ng Then '이전 NG 일때 End If End If End If RegMesPD1.PD1_TotalCnt += CntRegMesPD1.PD1_TotalCnt RegMesPD1.PD1_OKCnt += CntRegMesPD1.PD1_OKCnt RegMesPD1.PD1_NGCnt += CntRegMesPD1.PD1_NGCnt RegLocalPD1.PD1_TotalCnt += CntRegMesPD1.PD1_TotalCnt RegLocalPD1.PD1_OKCnt += CntRegMesPD1.PD1_OKCnt RegLocalPD1.PD1_NGCnt += CntRegMesPD1.PD1_NGCnt For i = MODEL_NAME.PRO To MODEL_NAME.MAX RegMesPD1.PD1_GradeCnt(i) += CntRegMesPD1.PD1_GradeCnt(i) RegLocalPD1.PD1_GradeCnt(i) += CntRegMesPD1.PD1_GradeCnt(i) Next For i = RELAY_NUM.RL1 To RELAY_NUM.MAX_RELAY_NUM - 1 RegMesPD1.PD1_CapCnt(i) += CntRegMesPD1.PD1_CapCnt(i) RegLocalPD1.PD1_CapCnt(i) += CntRegMesPD1.PD1_CapCnt(i) Next End Sub Private Sub SaveDB_PD1() Dim SaveLogStr As String CalCntDB_PD1() '보드 장착 수량 계산 UploadDB_PD1() 'PD1 단계 DB 업로드 'LoadTextPD1() '보드 장착 수량 화면 표시 업데이트 UploadCntDB_PD1() '보드 장착 수량 정보 DB 업로드 SaveLocalCount() LoadLocalCount() 'LoadRegProduct() '생산 MES 수량 정보 DB 다운로드 'CalRegProductPD1() '생산 MES 수량 계산 'UploadRegProductPD1() '생산 MES 수량 정보 DB 업로드 SaveLogStr = getNowDate() & "," & getNowTime() & "," & txbPV_SN.Text & "," & txbPV_Date.Text & "," & txbPV_Freq.Text & "," & txbPV_Z.Text & "," & txbPV_C.Text & "," & txbPV_R.Text & "," & txbGradePD1.Text & "," & txbCapacitorPD1.Text & "," & "," & txbTotalCntPD1.Text & "," & txbOkCntPD1.Text & "," & txbNgCntPD1.Text & "," & txbProCntPD1.Text & "," & txbLuxCntPD1.Text & "," & txbEyeCntPD1.Text & "," & txbR1CntPD1.Text & "," & txbR2CntPD1.Text & "," & txbR3CntPD1.Text & "," & txbR4CntPD1.Text & "," & txbR5CntPD1.Text & txbR6CntPD1.Text & txbR7CntPD1.Text & txbR8CntPD1.Text & txbR9CntPD1.Text & txbR10CntPD1.Text Save_CSV(SaveLogStr) End Sub Private Sub RunProcessPD1() Dim tmpCmd As String If ckbSerialUse.Checked = False Then If LoadDB() Then Exit Sub End If If RunCartInfoReadPD1() Then ' IQC 측정값 읽기 btnRunPD1.Refresh() End If RegMeasure.MeasureOkNg = "OK" RegMeasure.MeasureGrade = "MAX" CartType = CART_TYPE.MAX_SET If ckbPlay.Checked = True Then SaveDB_PD1() End If btnRunPD1.Enabled = True Else Select Case PD1_STATUS Case PD1_ENUM.STANDBY If LoadDB() Then PD1_STATUS = PD1_ENUM.STANDBY Exit Select End If If RunCartInfoReadPD1() Then ' IQC 측정값 읽기 PD1_STATUS = PD1_ENUM.STANDBY btnRunPD1.Enabled = True btnRunPD1.Refresh() Else PD1_STATUS = PD1_ENUM.WAIT If chbAutoMeasure.Checked Then If CheckCartConnect() Then btnRunPD1.Text = "카트리지 보드를 장착해주세요!" btnRunPD1.Refresh() txbCartridgePD1.BackColor = Color.Blue txbCartridgePD1.Refresh() Else PD1_STATUS = PD1_ENUM.WRITE btnRunPD1.Text = "카트리지 정보를 기록하는 중." btnRunPD1.Refresh() RunCartInitWrite() End If Else btnRunPD1.Enabled = True btnRunPD1.Focus() btnRunPD1.Refresh() End If End If Case PD1_ENUM.WAIT If chbAutoMeasure.Checked Then tmpCmd = ParsingData(False) If tmpCmd <> "0" Then PD1_STATUS = PD1_ENUM.WRITE btnRunPD1.Text = "카트리지 정보를 기록하는 중." btnRunPD1.Refresh() RunCartInitWrite() End If Else If CheckCartConnect() Then btnRunPD1.Text = "카트리지 보드를 장착해주세요!" btnRunPD1.Refresh() txbCartridgePD1.BackColor = Color.Blue txbCartridgePD1.Refresh() Else PD1_STATUS = PD1_ENUM.WRITE btnRunPD1.Text = "카트리지 정보를 기록하는 중." btnRunPD1.Refresh() RunCartInitWrite() End If btnRunPD1.Focus() End If Case PD1_ENUM.WRITE If chbAutoMeasure.Checked Then tmpCmd = ParsingData(False) If tmpCmd = "1" Or (Mid(tmpCmd, 1, 3) = "dit" And Len(tmpCmd) = 9) Or (Mid(tmpCmd, 1, 3) = "dit" And Len(tmpCmd) = 10) Or (Mid(tmpCmd, 1, 1) = "j" And Len(tmpCmd) = 10) Then PD1_STATUS = PD1_ENUM.WRITE btnRunPD1.Text = "카트리지 정보를 기록하는 중." btnRunPD1.Refresh() RunCartInitWrite() End If End If End Select If PD1_STATUS = PD1_ENUM.SAVE Then SaveDB_PD1() PD1_STATUS = PD1_ENUM.STANDBY End If End If End Sub Private Sub RunProcessPD2() Dim tmpCmd As String Dim RetStr As String Dim StatusFail As Boolean = False Try If chbAutoMeasure.Checked Then tmpCmd = ParsingData(False) Else tmpCmd = txbPV_SN.Text End If tmpCmd = UCase(tmpCmd) If (Mid(tmpCmd, 1, 3) = "DIT" And Len(tmpCmd) = 9) Or (Mid(tmpCmd, 1, 3) = "DIT" And Len(tmpCmd) = 10) Then DispToggle = False txbPV_SN.BackColor = DefaultBackColor txbPV_SN.Clear() txbPV_SN.AppendText(tmpCmd) LoadDB() LoadGrade() cmdDisplay("Start measurement.") txbJudge.BackColor = DefaultBackColor txbJudge.Text = "측정중" txbJudge.Refresh() txbWriteInfo.BackColor = DefaultBackColor txbWriteInfo.Text = "대기" txbWriteInfo.Refresh() MeasureTime(MeasSTART) myScope.IO.Clear() ' Clear the interface. myScope.IO.Timeout = Val(txbTimeout.Text) ' Set I/O communication timeout. RetStr = DoCommand("*CLS") If RetStr = "Fail" Then StatusFail = True GoTo MEASURE_END End If SetFrequency(txbPV_Freq.Text) DelayMs(Val(txbStartWaitDelay.Text)) RunShot(txbOntime.Text) PollingReceiveData(300) RunShot(txbOntime.Text) PollingReceiveData(300) txbJudge.Text = "측정대기중" txbJudge.Refresh() RunStableTime() RetStr = DoCommand(":Single") If RetStr = "Fail" Then StatusFail = True GoTo MEASURE_END End If RunShot(txbOntime.Text) PollingReceiveData(300) DelayMs(Val(txbOntime.Text) + 50) RetStr = RunMeasure() If RetStr = "Fail" Then StatusFail = True DoCommand(":RUN") GoTo MEASURE_END End If 'DoCommand(":RUN") PD2_Current = Val(RetStr) + Val(txbOffsetValue.Text) cmdDisplay("Measurement : " & Format(PD2_Current, "0.000") & " A") TransDB_PD2() If (QC_Current >= (PD2_Current - Val(txbErrorFactor.Text))) And (QC_Current <= (PD2_Current + Val(txbErrorFactor.Text))) Then txbJudge.Text = "OK" txbJudge.BackColor = Color.Green txbJudge.Refresh() Else txbJudge.Text = "NG" txbJudge.BackColor = Color.Red txbJudge.Refresh() End If ElseIf tmpCmd = "0" Then DispToggle = True txbPV_SN.Clear() txbPV_SN.AppendText("대기중") txbPV_Date.Text = "N/A" txbPV_Freq.Text = "N/A" txbPV_Z.Text = "N/A" txbPV_C.Text = "N/A" txbPV_R.Text = "N/A" txbGradeP2.Text = "N/A" txbCapacitorP2.Text = "N/A" txbJudge.Text = "N/A" txbWriteInfo.Text = "N/A" txbPV_Date.Refresh() txbPV_Freq.Refresh() txbPV_Z.Refresh() txbPV_C.Refresh() txbPV_R.Refresh() txbGradeP2.Refresh() txbCapacitorP2.Refresh() txbJudge.Refresh() txbWriteInfo.Refresh() End If txbCmdWindowP2.Focus() Exit Sub Catch ex As Exception MsgBox(Err.Description) End Try MEASURE_END: txbJudge.Text = "NG" txbJudge.BackColor = Color.Red txbJudge.Refresh() End Sub Private Sub RunProcessPD3() Dim Cnt As Integer Try If (txbPV_Freq.Text = "N/A" Or txbPV_Freq.Text = "") And (txbCapacitorPD3.Text = "대기" Or txbCapacitorPD3.Text = "") Then MsgBox("카트리지 정보를 입력해주세요.") GoTo FAIL_END End If If (rdbMode1.Checked = False And rdbMode2.Checked = False And rdbMode3.Checked = False) Then MsgBox("카트리지 모드 정보를 입력해주세요.") GoTo FAIL_END End If If SetFrequencyReturn(txbPV_Freq.Text) Then ''txbGradePD3.Text = "FAIL" ''txbGradePD3.BackColor = Color.Red ''txbGradePD3.Refresh() GoTo FAIL_END End If For Cnt = 1 To 10 If RELAY_C(Cnt) = txbCapacitorPD3.Text Then If SetRelay(Cnt, 1) Then ''txbCapacitorPD3.Text = "FAIL" ''txbCapacitorPD3.BackColor = Color.Red ''txbCapacitorPD3.Refresh() GoTo FAIL_END End If End If Next If chbAutoMeasure.Checked Then txbPV_SN.Focus() End If Exit Sub Catch ex As Exception txbGradePD3.Text = "FAIL" txbCapacitorPD3.Text = "FAIL" txbGradePD3.BackColor = Color.Red txbCapacitorPD3.BackColor = Color.Red txbGradePD3.Refresh() txbCapacitorPD3.Refresh() End Try FAIL_END: txbGradePD3.Text = "FAIL" txbCapacitorPD3.Text = "FAIL" txbGradePD3.BackColor = Color.Red txbCapacitorPD3.BackColor = Color.Red txbGradePD3.Refresh() txbCapacitorPD3.Refresh() If chbAutoMeasure.Checked Then txbPV_SN.Focus() End If End Sub Private Function RunCartInfoReadPD1() As Boolean Dim tmpBackColor As Object = txbGradePD1.BackColor Dim RunBol As Boolean = True Dim OKRunSwitch As Boolean = False Try If (((Len(txbPV_SN.Text) = LenPVSN Or Len(txbPV_SN.Text) = LenPVSN - 1) And (Mid(txbPV_SN.Text, 1, 3) = NamePVSN Or Mid(txbPV_SN.Text, 1, 1) = NamePVSN2) Or chbAutoMeasure.Checked = False) And (txbPV_Freq.Text <> "N/A" And txbPV_Freq.Text <> "")) Then txbGradePD1.BackColor = DefaultBackColor txbGradePD1.Text = "로딩중" txbGradePD1.Refresh() txbCapacitorPD1.BackColor = DefaultBackColor txbCapacitorPD1.Text = "로딩중" txbCapacitorPD1.Refresh() txbCartridgePD1.BackColor = DefaultBackColor txbCartridgePD1.Text = "대기" txbCartridgePD1.Refresh() btnRunPD1.Enabled = False btnRunPD1.Refresh() If ckbSerialUse.Checked = False Then If Mid(txbPV_SN.Text, 1, 4) = "DITH" Or Mid(txbPV_SN.Text, 1, 2) = "J2" Then OKRunSwitch = False Else OKRunSwitch = True End If Else OKRunSwitch = True End If If OKRunSwitch = True Then cmd = "select TestStep,QC_Grade,QC_Capacitor from jomtCartridgeTbl where PV_SN = '" + txbPV_SN.Text + "';" If DBQueryReader(cmd) Then RegMeasure.MeasureTestStep = sqlDataQuery(0) RegMeasure.MeasureGrade = sqlDataQuery(1) RegMeasure.MeasureCapacitor = sqlDataQuery(2) If GradeStop Mod 3 = 2 Or GradeStop Mod 3 = 1 Then If RegMeasure.MeasureGrade = "0" Then txbGradePD1.Text = "미측정" txbCapacitorPD1.Text = "N/A" txbGradePD1.BackColor = Color.Red txbCapacitorPD1.BackColor = Color.Red RegMeasure.MeasureOkNg = "NG" End If If txbCapacitorPD1.Text = "N/A" Then txbGradePD1.BackColor = Color.Red txbCapacitorPD1.BackColor = Color.Red RegMeasure.MeasureOkNg = "NG" End If If RegMeasure.MeasureOkNg <> "NG" Then txbCapacitorPD1.BackColor = Color.Green txbCapacitorPD1.Text = RegMeasure.MeasureCapacitor RegMeasure.MeasureGrade = SettingMeasure txbGradePD1.BackColor = Color.Green txbGradePD1.Text = RegMeasure.MeasureGrade End If Else If RegMeasure.MeasureGrade = "OVER" Then txbGradePD1.Text = "OVER" txbCapacitorPD1.Text = "사용불가" txbCartridgePD1.Text = "사용불가" txbCapacitorPD1.BackColor = Color.Red txbGradePD1.BackColor = Color.Red txbCartridgePD1.BackColor = Color.Red RegMeasure.MeasureOkNg = "NG" txbGradePD1.Refresh() txbCapacitorPD1.Refresh() txbCartridgePD1.Refresh() End If If RegMeasure.MeasureGrade = "0" Then txbGradePD1.Text = "미측정" txbCapacitorPD1.Text = "N/A" txbCartridgePD1.Text = "사용불가" txbCapacitorPD1.BackColor = Color.Red txbGradePD1.BackColor = Color.Red txbCartridgePD1.BackColor = Color.Red RegMeasure.MeasureOkNg = "NG" txbGradePD1.Refresh() txbCapacitorPD1.Refresh() txbCartridgePD1.Refresh() End If If txbCapacitorPD1.Text = "N/A" Then txbCartridgePD1.Text = "사용불가" txbCapacitorPD1.BackColor = Color.Red txbGradePD1.BackColor = Color.Red txbCartridgePD1.BackColor = Color.Red RegMeasure.MeasureOkNg = "NG" txbGradePD1.Refresh() txbCapacitorPD1.Refresh() txbCartridgePD1.Refresh() End If If RegMeasure.MeasureOkNg <> "NG" Then If rdbCmat_5.Checked = True Then For run = 0 To 1 Select Case RegMeasure.MeasureCapacitor Case RELAY_C(1) txbCapacitorPD1.BackColor = Color.Red txbCapacitorPD1.ForeColor = Color.Black txbCapacitorPD1.Text = "RED" Case RELAY_C(2) txbCapacitorPD1.BackColor = Color.Green txbCapacitorPD1.ForeColor = Color.Black txbCapacitorPD1.Text = "GREEN" Case RELAY_C(3) txbCapacitorPD1.BackColor = Color.Blue txbCapacitorPD1.ForeColor = Color.Black txbCapacitorPD1.Text = "BLUE" Case RELAY_C(4) txbCapacitorPD1.BackColor = Color.Black txbCapacitorPD1.ForeColor = Color.White txbCapacitorPD1.Text = "BLACK" Case RELAY_C(5) txbCapacitorPD1.BackColor = Color.SeaShell txbCapacitorPD1.ForeColor = Color.Black txbCapacitorPD1.Text = "WHITE" Case Else If cValueChange() Then RunBol = False End If End Select If RunBol = True Then Exit For Else RunBol = True End If Next If RunBol = True Then If RegMeasure.MeasureGrade <> "OVER" And RegMeasure.MeasureGrade <> "UNDER" And RegMeasure.MeasureGrade <> "EYE" Then txbGradePD1.Text = RegMeasure.MeasureGrade txbGradePD1.BackColor = Color.Green Else txbGradePD1.Text = RegMeasure.MeasureGrade txbCapacitorPD1.Text = "N/A" txbGradePD1.BackColor = Color.Red txbCapacitorPD1.BackColor = Color.Red End If Else txbGradePD1.Text = "N/A" txbCapacitorPD1.Text = "N/A" txbGradePD1.BackColor = Color.Red txbCapacitorPD1.BackColor = Color.Red End If Else txbGradePD1.BackColor = Color.Green txbCapacitorPD1.BackColor = Color.Green txbGradePD1.Text = RegMeasure.MeasureGrade txbCapacitorPD1.Text = RegMeasure.MeasureCapacitor End If End If End If txbGradePD1.Refresh() txbCapacitorPD1.Refresh() Else txbGradePD1.Text = "N/A" txbCapacitorPD1.Text = "N/A" txbGradePD1.BackColor = Color.Red txbCapacitorPD1.BackColor = Color.Red txbGradePD1.Refresh() txbCapacitorPD1.Refresh() End If Else txbGradePD1.Text = "사용불가" txbCapacitorPD1.Text = "N/A" txbCartridgePD1.Text = "사용불가" txbCapacitorPD1.BackColor = Color.Red txbGradePD1.BackColor = Color.Red txbCartridgePD1.BackColor = Color.Red RegMeasure.MeasureOkNg = "NG" txbGradePD1.Refresh() txbCapacitorPD1.Refresh() txbCartridgePD1.Refresh() End If Else If (txbPV_SN.Text = "" Or txbPV_SN.Text = "입력하세요!") And chbAutoMeasure.Checked Then MsgBox("T/D SN 번호를 입력해주세요") ElseIf (Len(txbPV_SN.Text) <> LenPVSN And Len(txbPV_SN.Text) <> (LenPVSN - 1)) And chbAutoMeasure.Checked Then MsgBox("T/D SN 번호를 형식에 맞게 입력해주세요") ElseIf Mid(txbPV_SN.Text, 1, 3) <> NamePVSN And chbAutoMeasure.Checked Then MsgBox("T/D SN 번호를 형식에 맞게 입력해주세요") End If Return False End If If chbUseBarcode.Checked Then txbPV_SN.Focus() If txbGradePD1.Text = "N/A" Or txbCapacitorPD1.Text = "N/A" Or RegMeasure.MeasureOkNg = "NG" Then Return True Else Return False End If Catch e As Exception MsgBox(e, vbCritical) SetBeep(SoundError) Return True End Try End Function Private Function cValueChange() As Boolean ReDim RegMeasure.MeasureValue(10) RegMeasure.MeasureValue(0) = 0 If Mid(txtPVSN, 1, 3) = NamePVSN Then IQCValueStandard(True) Else IQCValueStandard(False) End If cmd = "SELECT QC_R1Value,QC_R2Value,QC_R3Value,QC_R4Value,QC_R5Value,QC_R6Value,QC_R7Value,QC_R8Value,QC_R9Value,QC_R10Value FROM jomtCartridgeTbl WHERE PV_SN = '" + txbPV_SN.Text + "'" If DBQueryReader(cmd) Then For i = 1 To sqlDataQuery.Length RegMeasure.MeasureValue(i) = sqlDataQuery(i - 1) Next For Cnt = 1 To 10 If Cnt = nudmat_1.Value Or Cnt = nudmat_2.Value Or Cnt = nudmat_3.Value Or Cnt = nudmat_4.Value Or Cnt = nudmat_5.Value Then If RegMeasure.MeasureValue(Cnt) <= ProMAX And RegMeasure.MeasureValue(0) = 0 Then RegMeasure.MeasureValue(0) = Cnt If RegMeasure.MeasureValue(0) Then If RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) < RegMeasure.MeasureValue(Cnt) Then If RegMeasure.MeasureValue(Cnt) <= ProMAX Then RegMeasure.MeasureValue(0) = Cnt End If End If End If End If Next If RegMeasure.MeasureValue(0) = 0 Then RegMeasure.MeasureGrade = "OVER" ElseIf RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) >= ProMIN Then RegMeasure.MeasureGrade = "PRO" ElseIf RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) >= LuxMIN Then RegMeasure.MeasureGrade = "LUX" ElseIf RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) >= EyeMIN Then RegMeasure.MeasureGrade = "EYE" Else RegMeasure.MeasureGrade = "UNDER" RegMeasure.MeasureValue(0) = 0 End If If RegMeasure.MeasureValue(0) <> 0 Then RegMeasure.MeasureCapacitor = RelayTxb(RegMeasure.MeasureValue(0)).Text Return True Else Return False End If Else Return False End If End Function Private Function RunCartInfoReadPD3() As Boolean Dim tmpBackColor As Object = txbGradePD1.BackColor Try If (((Len(txbPV_SN.Text) = LenPVSN Or Len(txbPV_SN.Text) = LenPVSN - 1) And Mid(txbPV_SN.Text, 1, 3) = NamePVSN) Or chbAutoMeasure.Checked = False) And (txbPV_Freq.Text <> "N/A" And txbPV_Freq.Text <> "") Then txbGradePD3.BackColor = DefaultBackColor txbGradePD3.Text = "로딩중" txbGradePD3.Refresh() txbCapacitorPD3.BackColor = DefaultBackColor txbCapacitorPD3.Text = "로딩중" txbCapacitorPD3.Refresh() cmd = "select TestStep,QC_Grade,QC_Capacitor from jomtCartridgeTbl where PV_SN = '" + txbPV_SN.Text + "';" If DBQueryReader(cmd) Then RegMeasure.MeasureTestStep = sqlDataQuery(0) RegMeasure.MeasureGrade = sqlDataQuery(1) RegMeasure.MeasureCapacitor = sqlDataQuery(2) txbGradePD3.BackColor = Color.Green txbCapacitorPD3.BackColor = Color.Green txbGradePD3.Text = RegMeasure.MeasureGrade txbCapacitorPD3.Text = RegMeasure.MeasureCapacitor txbGradePD3.Refresh() txbCapacitorPD3.Refresh() Else txbGradePD3.Text = "N/A" txbCapacitorPD3.Text = "N/A" txbGradePD3.BackColor = Color.Red txbCapacitorPD3.BackColor = Color.Red txbGradePD3.Refresh() txbCapacitorPD3.Refresh() End If Else If (txbPV_SN.Text = "" Or txbPV_SN.Text = "입력하세요!") And chbAutoMeasure.Checked Then MsgBox("T/D SN 번호를 입력해주세요") ElseIf (Len(txbPV_SN.Text) <> LenPVSN And Len(txbPV_SN.Text) <> (LenPVSN - 1)) And chbAutoMeasure.Checked Then MsgBox("T/D SN 번호를 형식에 맞게 입력해주세요") ElseIf Mid(txbPV_SN.Text, 1, 3) <> NamePVSN And chbAutoMeasure.Checked Then MsgBox("T/D SN 번호를 형식에 맞게 입력해주세요") End If Return False End If If chbUseBarcode.Checked Then txbPV_SN.Focus() If txbGradePD3.Text = "N/A" Or txbCapacitorPD3.Text = "N/A" Then Return True Else Return False End If Catch SetBeep(SoundError) Return True End Try End Function Public Sub SetCartModelType() If ckbUseModelSelect.Checked Then frmModelSelect.ShowDialog() Else If ckbUseGradeChange.Checked Then If CartType = CART_TYPE.PRO_FACE Then If RegMeasure.MeasureGrade = "LUX" Or RegMeasure.MeasureGrade = "EYE" Then frmModelSelect.ShowDialog() End If ElseIf CartType = CART_TYPE.LUX_FACE Then If RegMeasure.MeasureGrade = "EYE" Then frmModelSelect.ShowDialog() End If End If End If End If End Sub Public Function TD_SNSearch() As String tmpCmdMessage = "carttdsn" cmdMessage = "[" & tmpCmdMessage & "]" + vbCrLf SendData(cmdMessage) Return PollingReceiveData(3000) End Function Public Sub RunCartInitWrite() Dim FailFlag As Boolean = False Try If (txbGradePD1.Text = "FAIL" Or txbGradePD1.Text = "N/A") Or (txbCapacitorPD1.Text = "FAIL" Or txbCapacitorPD1.Text = "N/A") Then txbCartridgePD1.Text = "N/A" txbCartridgePD1.Refresh() MsgBox("T/D 정보를 확인 해주세요") PD1_STATUS = PD1_ENUM.STANDBY Exit Sub End If txbCartridgePD1.Text = "쓰기중" txbCartridgePD1.BackColor = DefaultBackColor btnRunPD1.Enabled = False txbCartridgePD1.Refresh() Dim tdSnData As String = TD_SNSearch() 'If UCase(Mid(tdSnData, 1, 3)) = "DIT" Or UCase(Mid(tdSnData, 1, 1)) = "J" Then ' txbCartridgePD1.BackColor = Color.Yellow ' txbCartridgePD1.Text = "정보입력중" ' txbCartridgePD1.Refresh() ' If SetInfo() Then ' FailFlag = True ' txbCartridgePD1.BackColor = Color.OrangeRed ' GoTo MEASURE_END ' End If 'Else ' If SetAuth() Then ' FailFlag = True ' txbCartridgePD1.BackColor = Color.OrangeRed ' GoTo MEASURE_END ' End If ' txbCartridgePD1.BackColor = Color.Yellow ' txbCartridgePD1.Text = "정보입력중" ' txbCartridgePD1.Refresh() ' If SetInfo() Then ' FailFlag = True ' txbCartridgePD1.BackColor = Color.OrangeRed ' GoTo MEASURE_END ' End If 'End If If UCase(Mid(tdSnData, 1, 3)) <> "DIT" Or UCase(Mid(tdSnData, 1, 1)) <> "J" Then If SetAuth() Then FailFlag = True txbCartridgePD1.BackColor = Color.OrangeRed GoTo MEASURE_END End If txbCartridgePD1.BackColor = Color.Yellow txbCartridgePD1.Text = "정보입력중" txbCartridgePD1.Refresh() If SetInfo() Then FailFlag = True txbCartridgePD1.BackColor = Color.OrangeRed GoTo MEASURE_END End If Else txbCartridgePD1.BackColor = Color.Yellow txbCartridgePD1.Text = "정보입력중" txbCartridgePD1.Refresh() If SetInfo() Then FailFlag = True txbCartridgePD1.BackColor = Color.OrangeRed GoTo MEASURE_END End If End If MEASURE_END: If FailFlag Then RegMeasure.MeasureOkNg = "NG" txbCartridgePD1.Text = "FAIL" txbCartridgePD1.Refresh() btnRunPD1.Text = "재실행" btnRunPD1.Visible = True btnRunPD1.Enabled = True btnRunPD1.Focus() btnRunPD1.Refresh() PD1_STATUS = PD1_ENUM.WAIT Else RegMeasure.MeasureOkNg = "OK" txbCartridgePD1.BackColor = Color.Green txbCartridgePD1.Text = "OK" txbCartridgePD1.Refresh() btnRunPD1.Text = "실행" btnRunPD1.Visible = True If chbAutoMeasure.Checked And chbUseBarcode.Checked Then btnRunPD1.Enabled = False Else btnRunPD1.Enabled = True End If btnRunPD1.Refresh() PD1_STATUS = PD1_ENUM.SAVE End If Catch RegMeasure.MeasureOkNg = "NG" txbCartridgePD1.Text = "FAIL" txbCartridgePD1.BackColor = Color.PaleVioletRed txbCartridgePD1.Refresh() btnRunPD1.Text = "재실행" btnRunPD1.Visible = True btnRunPD1.Enabled = True btnRunPD1.Focus() btnRunPD1.Refresh() PD1_STATUS = PD1_ENUM.WAIT SetBeep(SoundError) End Try End Sub Private Function SetAuth() As Boolean Dim tmpStr As String tmpCmdMessage = "cartauth" cmdMessage = "[" & tmpCmdMessage & "]" + vbCrLf SendData(cmdMessage) tmpStr = PollingReceiveData(5000) If Mid(tmpStr, 1, 7) = "success" Then Return False End If Return True End Function Public Function SetInfo() As Boolean Dim retVal, power, tShot, rShot As String power = 0 If Mid(txbPV_SN.Text, 1, 4) = "DITH" Or Mid(txbPV_SN.Text, 1, 2) = "J2" Then If rdb20mm.Checked = True Then If txbGradePD1.Text = "PRO" Then CartType = CART_TYPE.PRO_BODY tShot = 30000 rShot = 30000 Else tShot = 20000 rShot = 20000 End If Else If txbGradePD1.Text = "PRO" Then CartType = CART_TYPE.ALPHA_BODY tShot = 50000 rShot = 50000 Else Return True End If End If Else If rdb20mm.Checked = True Then If txbGradePD1.Text = "PRO" Then CartType = CART_TYPE.PRO_FACE tShot = 6000 rShot = 6000 Else CartType = CART_TYPE.PRO_EYE tShot = 60000 rShot = 60000 End If Else If txbGradePD1.Text = "PRO" Then CartType = CART_TYPE.ALPHA_FACE tShot = 20000 rShot = 20000 Else CartType = CART_TYPE.ALPHA_EYE tShot = 90000 rShot = 90000 End If End If End If tmpCmdMessage = "cartinfo" cmdMessage = "[" & tmpCmdMessage & " " & txbPV_SN.Text & "," & CartType & "," & txbPV_Freq.Text & "," & power & "," & tShot & "," & rShot & "]" + vbCrLf SendData(cmdMessage) retVal = PollingReceiveData(5000) If UCase(Mid(retVal, 1, InStr(1, retVal, ",") - 1)) <> txbPV_SN.Text Then Return True End If If Mid(retVal, 12, 2) = CartType.ToString Or Mid(retVal, 11, 2) = CartType.ToString Then Return True End If If Mid(retVal, 17, 4) = txbPV_Freq.Text Or Mid(retVal, 16, 4) = txbPV_Freq.Text Then Return False Else Return True End If End Function Private Sub txbPV_SN_TextChanged(sender As Object, e As EventArgs) Handles txbPV_SN.TextChanged Dim tmpStr As String If DevNum = 1 Or DevNum = 2 Or DevNum = 4 Then If InputCnt = 0 And chbUseBarcode.Checked = True Then tmpStr = txbPV_SN.Text If (Len(tmpStr) > 1) Then tmpStr = Mid(tmpStr, Len(tmpStr), 1) txbPV_SN.Clear() txbPV_SN.AppendText(tmpStr) End If SetInputCnt() End If ElseIf DevNum = 3 Then If chbAutoMeasure.Checked Then txbCmdWindowP2.Focus() Else txbPV_SN.Focus() End If Else End If End Sub Sub SetInputCnt() InputCnt = InputCntVal InputTimer.Enabled = True End Sub Function LoadDB() As Boolean Try ResetRegMeasure() RegMeasure.MeasurePV_SN = txtPVSN If LoadRegTD(RegMeasure.MeasurePV_SN) Then txbPV_Date.Text = "N/A" txbPV_Date.ForeColor = Color.Red txbPV_Freq.Text = "N/A" txbPV_Freq.ForeColor = Color.Red txbPV_Z.Text = "N/A" txbPV_Z.ForeColor = Color.Red txbPV_C.Text = "N/A" txbPV_C.ForeColor = Color.Red txbPV_R.Text = "N/A" txbPV_R.ForeColor = Color.Red cmdDisplay("T/D(SN:" + txtPVSN + ") Database loading failed.") txbPV_Date.Refresh() txbPV_Freq.Refresh() txbPV_Z.Refresh() txbPV_C.Refresh() txbPV_R.Refresh() Return True Else txbPV_Date.Text = RegTD_VALUE.PV_Date txbPV_Date.ForeColor = Color.Black txbPV_Freq.Text = RegTD_VALUE.PV_Frequency txbPV_Freq.ForeColor = Color.Black txbPV_Z.Text = RegTD_VALUE.PV_Impedance txbPV_Z.ForeColor = Color.Black txbPV_C.Text = RegTD_VALUE.PV_Capacitance txbPV_C.ForeColor = Color.Black txbPV_R.Text = RegTD_VALUE.PV_Resistance txbPV_R.ForeColor = Color.Black cmdDisplay("T/D(SN:" + RegTD_VALUE.PV_SN + ") DB loading succeeded.") txbPV_Date.Refresh() txbPV_Freq.Refresh() txbPV_Z.Refresh() txbPV_C.Refresh() txbPV_R.Refresh() Return False End If Catch ex As Exception Return True End Try End Function Sub LoadGrade() If (Len(txbPV_SN.Text) = LenPVSN Or Len(txbPV_SN.Text) = LenPVSN - 1) And Mid(txbPV_SN.Text, 1, 3) = NamePVSN Then txbGradeP2.Clear() txbCapacitorP2.Clear() cmd = "select TestStep,QC_Grade,QC_Capacitor,QC_Current from jomtCartridgeTbl where PV_SN = '" + txbPV_SN.Text + "';" If DBQueryReader(cmd) Then TestStep = Val(Mid(sqlDataQuery(0), 1, InStr(sqlDataQuery(0), " "))) txbGradeP2.Text = sqlDataQuery(1) txbCapacitorP2.Text = sqlDataQuery(2) QC_Current = Val(sqlDataQuery(3)) 'cmdDisplay("T/D(SN:" + txbPV_SN.Text + ") DB loading succeeded.") Else txbGradeP2.Text = "N/A" txbCapacitorP2.Text = "N/A" 'cmdDisplay("T/D(SN:" + txbPV_SN.Text + ") Database loading failed.") End If txbGradeP2.Refresh() txbCapacitorP2.Refresh() Else ' cmdDisplay("T/D(SN:" + txbPV_SN.Text + ") Database loading failed.") End If End Sub Public Sub runSetupWindow() If EnableSetup Then loadSetupWindows() Else MsgBox("권한이 있는지 확인하세요.") End If frmLogin.Hide() End Sub Private Sub btnSetup_Click(sender As Object, e As EventArgs) Handles btnSetup.Click frmLogin.ShowDialog() End Sub Private Sub btnSetupExit_Click(sender As Object, e As EventArgs) Handles btnSetupExit.Click If ParametarLoad() Then initDevice() OpenSerial() gpbSetupWindow.Visible = False DefaultTextColor() btnSetup.Enabled = True Me.Size = New Size(1040, 784) Else End End If End Sub Private Sub btnSetupSave_Click(sender As Object, e As EventArgs) Handles btnSetupSave.Click Dim retVal As Integer retVal = MsgBox("설정을 저장하시겠습니까?", vbYesNo + vbExclamation, "DUALSONIC Configuation") If retVal = 6 Then Dim valueList As List(Of String) = New List(Of String)() From {nudmat_1.Value, nudmat_2.Value, nudmat_3.Value, nudmat_4.Value, nudmat_5.Value} If valueList.Count <> valueList.Distinct().Count Then MsgBox("C값 매칭 데이터 중 중복값이 존재합니다.", vbExclamation) Exit Sub End If Save_ini(False) PrintSaveData() DefaultTextColor() End If End Sub Private Sub txbMeasureDelay_TextChanged(sender As Object, e As EventArgs) Handles txbMeasureDelay.TextChanged txbMeasureDelay.ForeColor = Color.Red End Sub Private Sub txbTimeout_TextChanged(sender As Object, e As EventArgs) Handles txbTimeout.TextChanged txbTimeout.ForeColor = Color.Red End Sub Private Sub txbOntime_TextChanged(sender As Object, e As EventArgs) Handles txbOntime.TextChanged txbOntime.ForeColor = Color.Red End Sub Private Sub txbHSCALE_TextChanged(sender As Object, e As EventArgs) Handles txbHSCALE.TextChanged txbHSCALE.ForeColor = Color.Red End Sub Private Sub txbHPOS_TextChanged(sender As Object, e As EventArgs) Handles txbHPOS.TextChanged txbHPOS.ForeColor = Color.Red End Sub Private Sub txbVSCALE_TextChanged(sender As Object, e As EventArgs) Handles txbVSCALE.TextChanged txbVSCALE.ForeColor = Color.Red End Sub Private Sub txbVPOS_TextChanged(sender As Object, e As EventArgs) Handles txbVPOS.TextChanged txbVPOS.ForeColor = Color.Red End Sub Private Sub txbProMax_TextChanged(sender As Object, e As EventArgs) Handles txbProMax.TextChanged txbProMax.ForeColor = Color.Red End Sub Private Sub txbProTyp_TextChanged(sender As Object, e As EventArgs) Handles txbProTyp.TextChanged txbProTyp.ForeColor = Color.Red End Sub Private Sub txbProMin_TextChanged(sender As Object, e As EventArgs) Handles txbProMin.TextChanged txbProMin.ForeColor = Color.Red End Sub Private Sub txbLuxMax_TextChanged(sender As Object, e As EventArgs) Handles txbLuxMax.TextChanged txbLuxMax.ForeColor = Color.Red End Sub Private Sub txbLuxTyp_TextChanged(sender As Object, e As EventArgs) Handles txbLuxTyp.TextChanged txbLuxTyp.ForeColor = Color.Red End Sub Private Sub txbLuxMin_TextChanged(sender As Object, e As EventArgs) Handles txbLuxMin.TextChanged txbLuxMin.ForeColor = Color.Red End Sub Private Sub txbEyeMax_TextChanged(sender As Object, e As EventArgs) Handles txbEyeMax.TextChanged txbEyeMax.ForeColor = Color.Red End Sub Private Sub txbEyeTyp_TextChanged(sender As Object, e As EventArgs) Handles txbEyeTyp.TextChanged txbEyeTyp.ForeColor = Color.Red End Sub Private Sub txbEyeMin_TextChanged(sender As Object, e As EventArgs) Handles txbEyeMin.TextChanged txbEyeMin.ForeColor = Color.Red End Sub Private Sub txbRelay1_TextChanged(sender As Object, e As EventArgs) Handles txbRelay1.TextChanged txbRelay1.ForeColor = Color.Red End Sub Private Sub txbRelay2_TextChanged(sender As Object, e As EventArgs) Handles txbRelay2.TextChanged txbRelay2.ForeColor = Color.Red End Sub Private Sub txbRelay3_TextChanged(sender As Object, e As EventArgs) Handles txbRelay3.TextChanged txbRelay3.ForeColor = Color.Red End Sub Private Sub txbRelay4_TextChanged(sender As Object, e As EventArgs) Handles txbRelay4.TextChanged txbRelay4.ForeColor = Color.Red End Sub Private Sub txbRelay5_TextChanged(sender As Object, e As EventArgs) Handles txbRelay5.TextChanged txbRelay5.ForeColor = Color.Red End Sub Private Sub txbRelay6_TextChanged(sender As Object, e As EventArgs) Handles txbRelay6.TextChanged txbRelay6.ForeColor = Color.Red End Sub Private Sub txbRelay7_TextChanged(sender As Object, e As EventArgs) Handles txbRelay7.TextChanged txbRelay7.ForeColor = Color.Red End Sub Private Sub txbRelay8_TextChanged(sender As Object, e As EventArgs) Handles txbRelay8.TextChanged txbRelay8.ForeColor = Color.Red End Sub Private Sub txbRelay9_TextChanged(sender As Object, e As EventArgs) Handles txbRelay9.TextChanged txbRelay9.ForeColor = Color.Red End Sub Private Sub txbRelay10_TextChanged(sender As Object, e As EventArgs) Handles txbRelay10.TextChanged txbRelay10.ForeColor = Color.Red End Sub Private Sub txbScopeID_TextChanged(sender As Object, e As EventArgs) Handles txbScopeID.TextChanged txbScopeID.ForeColor = Color.Red End Sub Private Sub rdbIQC_CheckedChanged(sender As Object, e As EventArgs) Handles rdbIQC.CheckedChanged rdbIQC.ForeColor = Color.Red rdbProduct1.ForeColor = Color.Black rdbProduct2.ForeColor = Color.Black rdbProduct3.ForeColor = Color.Black End Sub Private Sub rdbProduct1_CheckedChanged(sender As Object, e As EventArgs) Handles rdbProduct1.CheckedChanged rdbIQC.ForeColor = Color.Black rdbProduct1.ForeColor = Color.Red rdbProduct2.ForeColor = Color.Black rdbProduct3.ForeColor = Color.Black End Sub Private Sub rdbProduct2_CheckedChanged(sender As Object, e As EventArgs) Handles rdbProduct2.CheckedChanged rdbIQC.ForeColor = Color.Black rdbProduct1.ForeColor = Color.Black rdbProduct2.ForeColor = Color.Red rdbProduct3.ForeColor = Color.Black End Sub Private Sub rdbProduct3_CheckedChanged(sender As Object, e As EventArgs) Handles rdbProduct3.CheckedChanged rdbIQC.ForeColor = Color.Black rdbProduct1.ForeColor = Color.Black rdbProduct2.ForeColor = Color.Black rdbProduct3.ForeColor = Color.Red End Sub Private Sub rdbAvg_CheckedChanged(sender As Object, e As EventArgs) Handles rdbAvg.CheckedChanged rdbAvg.ForeColor = Color.Red rdbMax.ForeColor = Color.Black rdbTop.ForeColor = Color.Black End Sub Private Sub rdbMax_CheckedChanged(sender As Object, e As EventArgs) Handles rdbMax.CheckedChanged rdbAvg.ForeColor = Color.Black rdbMax.ForeColor = Color.Red rdbTop.ForeColor = Color.Black End Sub Private Sub rdbTop_CheckedChanged(sender As Object, e As EventArgs) Handles rdbTop.CheckedChanged rdbAvg.ForeColor = Color.Black rdbMax.ForeColor = Color.Black rdbTop.ForeColor = Color.Red End Sub Private Sub DefaultTextColor() rdbIQC.ForeColor = Color.Black rdbProduct1.ForeColor = Color.Black rdbProduct2.ForeColor = Color.Black rdbProduct3.ForeColor = Color.Black txbMeasureDelay.ForeColor = Color.Black txbTimeout.ForeColor = Color.Black txbOntime.ForeColor = Color.Black txbHSCALE.ForeColor = Color.Black txbHPOS.ForeColor = Color.Black txbVSCALE.ForeColor = Color.Black txbVPOS.ForeColor = Color.Black txbProMax.ForeColor = Color.Black txbProTyp.ForeColor = Color.Black txbProMin.ForeColor = Color.Black txbLuxMax.ForeColor = Color.Black txbLuxTyp.ForeColor = Color.Black txbLuxMin.ForeColor = Color.Black txbEyeMax.ForeColor = Color.Black txbEyeTyp.ForeColor = Color.Black txbEyeMin.ForeColor = Color.Black txbRelay1.ForeColor = Color.Black txbRelay2.ForeColor = Color.Black txbRelay3.ForeColor = Color.Black txbRelay4.ForeColor = Color.Black txbRelay5.ForeColor = Color.Black txbRelay6.ForeColor = Color.Black txbRelay7.ForeColor = Color.Black txbRelay8.ForeColor = Color.Black txbRelay9.ForeColor = Color.Black txbRelay10.ForeColor = Color.Black txbScopeID.ForeColor = Color.Black rdbAvg.ForeColor = Color.Black rdbMax.ForeColor = Color.Black rdbTop.ForeColor = Color.Black rdbDev1.ForeColor = Color.Black rdbDev2.ForeColor = Color.Black rdbDev3.ForeColor = Color.Black txbErrorFactor.ForeColor = Color.Black txbOffsetValue.ForeColor = Color.Black txbWaitDelay.ForeColor = Color.Black txbStartWaitDelay.ForeColor = Color.Black txbValueError.ForeColor = Color.Black txbMotorOnTime.ForeColor = Color.Black End Sub Private Sub rdbDev1_CheckedChanged(sender As Object, e As EventArgs) Handles rdbDev1.CheckedChanged txbScopeID.Text = "0x1797::CN56526457" rdbDev1.ForeColor = Color.Red rdbDev2.ForeColor = Color.Black rdbDev3.ForeColor = Color.Black End Sub Private Sub rdbDev2_CheckedChanged(sender As Object, e As EventArgs) Handles rdbDev2.CheckedChanged txbScopeID.Text = "0x178B::CN59280175" rdbDev1.ForeColor = Color.Black rdbDev2.ForeColor = Color.Red rdbDev3.ForeColor = Color.Black End Sub Private Sub rdbDev3_CheckedChanged(sender As Object, e As EventArgs) Handles rdbDev3.CheckedChanged txbScopeID.Text = "0x178B::CN59280334" rdbDev1.ForeColor = Color.Black rdbDev2.ForeColor = Color.Black rdbDev3.ForeColor = Color.Red End Sub Private Sub btnSetupLoad_Click(sender As Object, e As EventArgs) Handles btnSetupLoad.Click Print_Read_ini() Read_ini() End Sub Private Sub RunProcess() Try If DevNum = 1 Then If chbAutoMeasure.Checked And CalModeOn = False Then If ckbPlay.Checked = True Then If txtPVSN.ToUpper = "[START]" Then If RegMeasure.MeasurePV_SN = Nothing Then MsgBox("측정하려는 TD의 데이터가 존재하지 않습니다. TD 시리얼 번호를 스캔하여 주십시오", vbExclamation, "DUALSONIC_TD_IQC_JIG") Return Else txbRun.Text = "측정중" txbRun.BackColor = Color.Khaki End If Else SetDefaultText() If Mid(txbPV_SN.Text, 1, 1).ToLower = "i" Or Mid(txbPV_SN.Text, 1, 1).ToLower = "h" Or Mid(txbPV_SN.Text, 1, 1).ToLower = "s" Then txtPVSN = MySqlModule.NamePVSN & txbPV_SN.Text Else txtPVSN = txbPV_SN.Text End If If LoadDB() Then ' 자동측정 진행설명(DB로드 한 후 측정한 값 DB 저장) RegMeasure.MeasurePV_SN = Nothing txbRun.Text = "TD 정보 에러" txbRun.BackColor = Color.Red btnRunIQC.Enabled = False txbPV_SN.Focus() Else txbRun.Text = "TD 정보 확인" txbRun.BackColor = Color.Green btnRunIQC.Enabled = True txbPV_SN.Focus() End If Return End If Else SetDefaultText() If Mid(txbPV_SN.Text, 1, 1).ToLower = "i" Then txtPVSN = MySqlModule.NamePVSN & Mid(txbPV_SN.Text, 2, txbPV_SN.Text.Length) Else txtPVSN = txbPV_SN.Text End If If LoadDB() Then ' 자동측정 진행설명(DB로드 한 후 측정한 값 DB 저장) RegMeasure.MeasurePV_SN = Nothing txbPV_SN.Focus() Return End If End If End If RunProcessIQC() ElseIf DevNum = 2 Then PD1_STATUS = PD1_ENUM.STANDBY txtPVSN = txbPV_SN.Text SetDefaultText() RunProcessPD1() ElseIf DevNum = 3 Then ''LoadDB() ''If chbAutoMeasure.Checked Then '' RunProcessPD1() ''End If ElseIf DevNum = 4 Then If chbAutoMeasure.Checked Then LoadDB() RunCartInfoReadPD3() End If RunProcessPD3() End If Catch nullable As NullReferenceException Exit Sub Catch ex As Exception MsgBox(ex.Message, vbCritical) End Try End Sub Private Sub InputTimer_Tick(sender As Object, e As EventArgs) Handles InputTimer.Tick If InputCnt Then InputCnt -= 1 Else InputTimer.Enabled = False If chbAutoMeasure.Checked Then PD1_STATUS = PD1_ENUM.STANDBY txtPVSN = Nothing txtPVSN = txbPV_SN.Text btnRunIQC_Click(sender, e) Else btnRunPD1.Focus() btnRunPD1.Refresh() End If End If End Sub Private Sub chbAutoMeasure_CheckedChanged(sender As Object, e As EventArgs) Handles chbAutoMeasure.CheckedChanged Dim tmpStr As String Select Case DevNum Case 1 If chbAutoMeasure.Checked Then btnRunIQC.Enabled = False 'btnRunIQC.Location = New Size(513, 410) 'btnRunIQC.Size = New Size(505, 95) btnRunIQC.Refresh() btnCal.Visible = True btnCal.Enabled = True btnRunIQCDB.Visible = False btnRunIQCDB.Refresh() chbUseBarcode.Checked = True chbUseBarcode.Refresh() txbPV_SN.BackColor = Color.White txbPV_SN.Refresh() txbPV_Freq.Text = "N/A" txbPV_Freq.BackColor = Color.White txbPV_Freq.Refresh() Else btnRunIQC.Visible = True btnRunIQC.Enabled = True 'btnRunIQC.Location = New Size(768, 410) 'btnRunIQC.Size = New Size(250, 95) btnRunIQC.Refresh() btnRunIQCDB.Visible = True btnRunIQCDB.Enabled = True btnCal.Visible = False btnCal.Enabled = False 'btnRunIQCDB.Location = New Size(513, 410) 'btnRunIQCDB.Size = New Size(250, 95) btnRunIQCDB.Refresh() txbPV_SN.BackColor = Color.LightYellow txbPV_SN.Refresh() txbPV_Freq.Text = "" txbPV_Freq.BackColor = Color.LightYellow txbPV_Freq.Refresh() End If Case 2 If chbAutoMeasure.Checked Then If chbUseBarcode.Checked Then btnRunPD1.Enabled = False Else btnRunPD1.Enabled = True End If Case 3 If chbAutoMeasure.Checked Then btnRunPD2.Enabled = False DispToggle = True txbPV_SN.Text = "대기중" txbPV_SN.Refresh() Else btnRunPD2.Enabled = True txbPV_SN.BackColor = DefaultBackColor DispToggle = False End If Case 4 If chbAutoMeasure.Checked Then lblGradePD3.Location = New Size(202, 35) lblGradePD3.Size = New Size(147, 77) lblGradePD3.Text = "등급" lblGradePD3.Refresh() txbGradePD3.Location = New Size(406, 25) txbGradePD3.Size = New Size(384, 95) txbGradePD3.Refresh() lblCapacitorPD3.Location = New Size(202, 145) lblCapacitorPD3.Size = New Size(148, 77) lblCapacitorPD3.Refresh() txbCapacitorPD3.Location = New Size(406, 135) txbCapacitorPD3.Size = New Size(384, 95) txbCapacitorPD3.Refresh() lblCapSelectPD3.Visible = False pnlCapSelectPD3.Visible = False txbGradePD3.Text = "대기" txbGradePD3.Refresh() txbCapacitorPD3.Text = "대기" txbCapacitorPD3.Refresh() txbPV_Freq.Text = "N/A" txbPV_Freq.BackColor = Color.White txbPV_Freq.Refresh() If chbUseBarcode.Checked = True Then btnRunPD3.Enabled = False Else btnRunPD3.Enabled = True End If Else lblGradePD3.Location = New Size(10, 40) lblGradePD3.Size = New Size(204, 77) lblGradePD3.Text = "주파수" lblGradePD3.Refresh() txbGradePD3.Location = New Size(200, 30) txbGradePD3.Size = New Size(320, 95) txbGradePD3.Refresh() lblCapacitorPD3.Location = New Size(535, 40) lblCapacitorPD3.Size = New Size(148, 77) lblCapacitorPD3.Refresh() txbCapacitorPD3.Location = New Size(685, 30) txbCapacitorPD3.Size = New Size(320, 95) txbCapacitorPD3.Refresh() lblCapSelectPD3.Visible = True pnlCapSelectPD3.Visible = True tmpStr = txbGradePD3.Text txbPV_Freq.Text = "" txbGradePD3.Text = tmpStr txbGradePD3.Refresh() txbPV_Freq.BackColor = Color.LightYellow txbPV_Freq.Refresh() btnRunPD3.Enabled = True End If End Select If chbUseBarcode.Checked And chbUseBarcode.Enabled Then txbPV_SN.Focus() End If End Sub Private Sub chbUseBarcode_CheckedChanged(sender As Object, e As EventArgs) Handles chbUseBarcode.CheckedChanged If DevNum = 1 Or DevNum = 2 Or DevNum = 3 Or DevNum = 4 Then If chbUseBarcode.Checked And chbAutoMeasure.Checked Then txbPV_SN.Focus() btnRunIQC.Enabled = False btnRunPD3.Enabled = False Else btnRunIQC.Enabled = True btnRunPD3.Enabled = True End If End If End Sub Private Sub btnRunIQC_Click(sender As Object, e As EventArgs) Handles btnRunIQC.Click txbGrade.Text = "대기" txbCapacitor.Text = "대기" txbGrade.BackColor = DefaultBackColor txbCapacitor.BackColor = DefaultBackColor If CalModeOn = True Then CalModeOn = False btnRunIQC.Text = "검사시작" txbCmdWindow.Visible = False gbTestWindow.Visible = True If chbAutoMeasure.Checked = True And chbUseBarcode.Checked = True Then btnRunIQC.Enabled = False Else btnRunIQC.Enabled = True End If Else If RegMeasure.MeasurePV_SN <> Nothing Then If txbPV_SN.Text = "[START]" Then If ckbWarPnt.Checked = True Then Dim RunThread As Thread = New Thread(New ParameterizedThreadStart(AddressOf print_on)) RunThread.IsBackground = True RunThread.Start(RegMeasure.MeasurePV_SN) End If RunProcess() RegMeasure.MeasurePV_SN = Nothing Else RunProcess() End If Else RunProcess() End If End If End Sub Private Sub btnRunPD1_Click(sender As Object, e As EventArgs) Handles btnRunPD1.Click RunProcess() End Sub Private Sub btnRunP2_Click(sender As Object, e As EventArgs) Handles btnRunPD2.Click RunProcessPD2() End Sub Private Sub cmdRunTimer_Tick(sender As Object, e As EventArgs) Handles cmdRunTimer.Tick Try If cmdSerialPort.IsOpen = True Then If cmdSerialPort.BytesToRead <> 0 Then cmdSerialPort.ReadTimeout = 0 rxMessage = cmdSerialPort.ReadLine() If rxMessage <> "" Then If DevNum = 2 And chbAutoMeasure.Checked Then If Mid(rxMessage, 2, 10) <> "cartconn 0" And (PD1_STATUS = PD1_ENUM.WAIT Or PD1_STATUS = PD1_ENUM.WRITE) Then RunProcessPD1() End If ElseIf DevNum = 3 And chbAutoMeasure.Checked Then RunProcessPD2() ElseIf DevNum = 4 Then If Mid(rxMessage, 2, 8) = "setctype" Then If Mid(rxMessage, 11, 1) = "1" Then CkbNoRun = True rdbEye.Checked = True ElseIf Mid(rxMessage, 11, 1) = "2" Then CkbNoRun = True rdbFace.Checked = True End If ElseIf Mid(rxMessage, 2, 8) = "setdtype" Then 'DUAL : 1 , 3.0 : 2 , 4.5 : 3 If Mid(rxMessage, 11, 1) = "1" Then CkbNoRun = True rdbMode3.Checked = True ElseIf Mid(rxMessage, 11, 1) = "2" Then CkbNoRun = True rdbMode1.Checked = True ElseIf Mid(rxMessage, 11, 1) = "3" Then CkbNoRun = True rdbMode2.Checked = True End If ElseIf Mid(rxMessage, 2, 8) = "sethertz" Then If Mid(rxMessage, 11, 1) = "1" Then CkbNoRun = True rdbMode1.Checked = True ElseIf Mid(rxMessage, 11, 1) = "2" Then CkbNoRun = True rdbMode2.Checked = True ElseIf Mid(rxMessage, 11, 1) = "3" Then CkbNoRun = True rdbMode3.Checked = True End If End If End If End If End If End If Catch ex As Exception 'MsgBox(Err.Description) End Try End Sub Private Sub txbGradePD1_GotFocus(sender As Object, e As EventArgs) Handles txbGradePD1.GotFocus txbPV_SN.Focus() End Sub Private Sub txbCapacitorPD1_GotFocus(sender As Object, e As EventArgs) Handles txbCapacitorPD1.GotFocus txbPV_SN.Focus() End Sub Private Sub txbCartridgePD1_GotFocus(sender As Object, e As EventArgs) Handles txbCartridgePD1.GotFocus txbPV_SN.Focus() End Sub Private Sub btnRunIQCDB_Click(sender As Object, e As EventArgs) Handles btnRunIQCDB.Click LoadDB() End Sub Private Sub txbErrorFactor_TextChanged(sender As Object, e As EventArgs) Handles txbErrorFactor.TextChanged txbErrorFactor.ForeColor = Color.Red End Sub Private Sub txbOffsetValue_TextChanged(sender As Object, e As EventArgs) Handles txbOffsetValue.TextChanged txbOffsetValue.ForeColor = Color.Red End Sub Private Sub txbStartWaitDelay_TextChanged(sender As Object, e As EventArgs) Handles txbStartWaitDelay.TextChanged txbStartWaitDelay.ForeColor = Color.Red End Sub Private Sub txbWaitDelay_TextChanged(sender As Object, e As EventArgs) Handles txbWaitDelay.TextChanged txbWaitDelay.ForeColor = Color.Red End Sub Function GradeToValue(TmpGrade As String) As Integer If TmpGrade = "PRO" Then Return MODEL_NAME.PRO ElseIf TmpGrade = "LUX" Then Return MODEL_NAME.LUX ElseIf TmpGrade = "EYE" Then Return MODEL_NAME.EYE ElseIf TmpGrade = "MAX" Then Return MODEL_NAME.MAX Else Return 0 End If End Function Private Sub SetDefaultText() 'IQC txbTotalCnt.ForeColor = DefaultForeColor txbOKCnt.ForeColor = DefaultForeColor txbNGCnt.ForeColor = DefaultForeColor txbProCnt.ForeColor = DefaultForeColor txbLuxCnt.ForeColor = DefaultForeColor txbEyeCnt.ForeColor = DefaultForeColor txbR1CntIQC.ForeColor = DefaultForeColor txbR2CntIQC.ForeColor = DefaultForeColor txbR3CntIQC.ForeColor = DefaultForeColor txbR4CntIQC.ForeColor = DefaultForeColor txbR5CntIQC.ForeColor = DefaultForeColor txbR6CntIQC.ForeColor = DefaultForeColor txbR7CntIQC.ForeColor = DefaultForeColor txbR8CntIQC.ForeColor = DefaultForeColor txbR9CntIQC.ForeColor = DefaultForeColor txbR10CntIQC.ForeColor = DefaultForeColor txbReTotalCnt.ForeColor = DefaultForeColor txbReOkCnt.ForeColor = DefaultForeColor txbReNgCnt.ForeColor = DefaultForeColor txbTotalCnt.Refresh() txbOKCnt.Refresh() txbNGCnt.Refresh() txbProCnt.Refresh() txbLuxCnt.Refresh() txbEyeCnt.Refresh() txbR1CntIQC.Refresh() txbR2CntIQC.Refresh() txbR3CntIQC.Refresh() txbR4CntIQC.Refresh() txbR5CntIQC.Refresh() txbR6CntIQC.Refresh() txbR7CntIQC.Refresh() txbR8CntIQC.Refresh() txbR9CntIQC.Refresh() txbR10CntIQC.Refresh() txbReTotalCnt.Refresh() txbReOkCnt.Refresh() txbReNgCnt.Refresh() 'PD1 txbOkCntPD1 txbTotalCntPD1.ForeColor = Color.Black txbOkCntPD1.ForeColor = Color.Black txbNgCntPD1.ForeColor = Color.Black txbR1CntPD1.ForeColor = Color.Black txbR2CntPD1.ForeColor = Color.Black txbR3CntPD1.ForeColor = Color.Black txbR4CntPD1.ForeColor = Color.Black txbR5CntPD1.ForeColor = Color.Black txbR6CntPD1.ForeColor = Color.Black txbR7CntPD1.ForeColor = Color.Black txbR8CntPD1.ForeColor = Color.Black txbR9CntPD1.ForeColor = Color.Black txbR10CntPD1.ForeColor = Color.Black txbProCntPD1.ForeColor = Color.Black txbLuxCntPD1.ForeColor = Color.Black txbEyeCntPD1.ForeColor = Color.Black txbTotalCntPD1.Refresh() txbOkCntPD1.Refresh() txbNgCntPD1.Refresh() txbR1CntPD1.Refresh() txbR2CntPD1.Refresh() txbR3CntPD1.Refresh() txbR4CntPD1.Refresh() txbR5CntPD1.Refresh() txbR6CntPD1.Refresh() txbR7CntPD1.Refresh() txbR8CntPD1.Refresh() txbR9CntPD1.Refresh() txbR10CntPD1.Refresh() txbProCntPD1.Refresh() txbLuxCntPD1.Refresh() txbEyeCntPD1.Refresh() RelayTxb(1) = txbRelay1 RelayTxb(2) = txbRelay2 RelayTxb(3) = txbRelay3 RelayTxb(4) = txbRelay4 RelayTxb(5) = txbRelay5 RelayTxb(6) = txbRelay6 RelayTxb(7) = txbRelay7 RelayTxb(8) = txbRelay8 RelayTxb(9) = txbRelay9 RelayTxb(10) = txbRelay10 End Sub Private Sub txbTotalCnt_TextChanged(sender As Object, e As EventArgs) Handles txbTotalCnt.TextChanged If txbTotalCnt.Text > PreCnt_IQC.TotalCnt Then txbTotalCnt.ForeColor = Color.Red ElseIf txbTotalCnt.Text < PreCnt_IQC.TotalCnt Then txbTotalCnt.ForeColor = Color.Blue End If PreCnt_IQC.TotalCnt = txbTotalCnt.Text txbTotalCnt.Refresh() End Sub Private Sub txbOKCnt_TextChanged(sender As Object, e As EventArgs) Handles txbOKCnt.TextChanged If Val(txbOKCnt.Text) > PreCnt_IQC.OKCnt Then txbOKCnt.ForeColor = Color.Red ElseIf Val(txbOKCnt.Text) < PreCnt_IQC.OKCnt Then txbOKCnt.ForeColor = Color.Blue End If PreCnt_IQC.OKCnt = Val(txbOKCnt.Text) txbOKCnt.Refresh() End Sub Private Sub txbNGCnt_TextChanged(sender As Object, e As EventArgs) Handles txbNGCnt.TextChanged If Val(txbNGCnt.Text) > PreCnt_IQC.NGCnt Then txbNGCnt.ForeColor = Color.Red ElseIf Val(txbNGCnt.Text) < PreCnt_IQC.NGCnt Then txbNGCnt.ForeColor = Color.Blue End If PreCnt_IQC.NGCnt = txbNGCnt.Text txbNGCnt.Refresh() End Sub Private Sub txbProCnt_TextChanged(sender As Object, e As EventArgs) Handles txbProCnt.TextChanged If Val(txbProCnt.Text) > PreCnt_IQC.ProCnt Then txbProCnt.ForeColor = Color.Red ElseIf Val(txbProCnt.Text) < PreCnt_IQC.ProCnt Then txbProCnt.ForeColor = Color.Blue End If PreCnt_IQC.ProCnt = txbProCnt.Text txbProCnt.Refresh() End Sub Private Sub txbLuxCnt_TextChanged(sender As Object, e As EventArgs) Handles txbLuxCnt.TextChanged If Val(txbLuxCnt.Text) > PreCnt_IQC.LuxCnt Then txbLuxCnt.ForeColor = Color.Red ElseIf Val(txbLuxCnt.Text) < PreCnt_IQC.LuxCnt Then txbLuxCnt.ForeColor = Color.Blue End If PreCnt_IQC.LuxCnt = txbLuxCnt.Text txbLuxCnt.Refresh() End Sub Private Sub txbEyeCnt_TextChanged(sender As Object, e As EventArgs) Handles txbEyeCnt.TextChanged If Val(txbEyeCnt.Text) > PreCnt_IQC.EyeCnt Then txbEyeCnt.ForeColor = Color.Red ElseIf Val(txbEyeCnt.Text) < PreCnt_IQC.EyeCnt Then txbEyeCnt.ForeColor = Color.Blue End If PreCnt_IQC.EyeCnt = txbEyeCnt.Text txbEyeCnt.Refresh() End Sub Private Sub txbR1CntIQC_TextChanged(sender As Object, e As EventArgs) Handles txbR1CntIQC.TextChanged If Val(txbR1CntIQC.Text) > PreCnt_IQC.R1Cnt Then txbR1CntIQC.ForeColor = Color.Red ElseIf Val(txbR1CntIQC.Text) < PreCnt_IQC.R1Cnt Then txbR1CntIQC.ForeColor = Color.Blue End If PreCnt_IQC.R1Cnt = txbR1CntIQC.Text txbR1CntIQC.Refresh() End Sub Private Sub txbR2CntIQC_TextChanged(sender As Object, e As EventArgs) Handles txbR2CntIQC.TextChanged If Val(txbR2CntIQC.Text) > PreCnt_IQC.R2Cnt Then txbR2CntIQC.ForeColor = Color.Red ElseIf Val(txbR2CntIQC.Text) < PreCnt_IQC.R2Cnt Then txbR2CntIQC.ForeColor = Color.Blue End If PreCnt_IQC.R2Cnt = txbR2CntIQC.Text txbR2CntIQC.Refresh() End Sub Private Sub txbR3CntIQC_TextChanged(sender As Object, e As EventArgs) Handles txbR3CntIQC.TextChanged If Val(txbR3CntIQC.Text) > PreCnt_IQC.R3Cnt Then txbR3CntIQC.ForeColor = Color.Red ElseIf Val(txbR3CntIQC.Text) < PreCnt_IQC.R3Cnt Then txbR3CntIQC.ForeColor = Color.Blue End If PreCnt_IQC.R3Cnt = txbR3CntIQC.Text txbR3CntIQC.Refresh() End Sub Private Sub txbR4CntIQC_TextChanged(sender As Object, e As EventArgs) Handles txbR4CntIQC.TextChanged If Val(txbR4CntIQC.Text) > PreCnt_IQC.R4Cnt Then txbR4CntIQC.ForeColor = Color.Red ElseIf Val(txbR4CntIQC.Text) < PreCnt_IQC.R4Cnt Then txbR4CntIQC.ForeColor = Color.Blue End If PreCnt_IQC.R4Cnt = txbR4CntIQC.Text txbR4CntIQC.Refresh() End Sub Private Sub txbR5CntIQC_TextChanged(sender As Object, e As EventArgs) Handles txbR5CntIQC.TextChanged If Val(txbR5CntIQC.Text) > PreCnt_IQC.R5Cnt Then txbR5CntIQC.ForeColor = Color.Red ElseIf Val(txbR5CntIQC.Text) < PreCnt_IQC.R5Cnt Then txbR5CntIQC.ForeColor = Color.Blue End If PreCnt_IQC.R5Cnt = txbR5CntIQC.Text txbR5CntIQC.Refresh() End Sub Private Sub txbR6CntIQC_TextChanged(sender As Object, e As EventArgs) Handles txbR6CntIQC.TextChanged If Val(txbR6CntIQC.Text) > PreCnt_IQC.R6Cnt Then txbR6CntIQC.ForeColor = Color.Red ElseIf Val(txbR6CntIQC.Text) < PreCnt_IQC.R6Cnt Then txbR6CntIQC.ForeColor = Color.Blue End If PreCnt_IQC.R6Cnt = txbR6CntIQC.Text txbR6CntIQC.Refresh() End Sub Private Sub txbR7CntIQC_TextChanged(sender As Object, e As EventArgs) Handles txbR7CntIQC.TextChanged If Val(txbR7CntIQC.Text) > PreCnt_IQC.R7Cnt Then txbR7CntIQC.ForeColor = Color.Red ElseIf Val(txbR7CntIQC.Text) < PreCnt_IQC.R7Cnt Then txbR7CntIQC.ForeColor = Color.Blue End If PreCnt_IQC.R7Cnt = txbR7CntIQC.Text txbR7CntIQC.Refresh() End Sub Private Sub txbR8CntIQC_TextChanged(sender As Object, e As EventArgs) Handles txbR8CntIQC.TextChanged If Val(txbR8CntIQC.Text) > PreCnt_IQC.R8Cnt Then txbR8CntIQC.ForeColor = Color.Red ElseIf Val(txbR8CntIQC.Text) < PreCnt_IQC.R8Cnt Then txbR8CntIQC.ForeColor = Color.Blue End If PreCnt_IQC.R8Cnt = txbR8CntIQC.Text txbR8CntIQC.Refresh() End Sub Private Sub txbR9CntIQC_TextChanged(sender As Object, e As EventArgs) Handles txbR9CntIQC.TextChanged If Val(txbR9CntIQC.Text) > PreCnt_IQC.R9Cnt Then txbR9CntIQC.ForeColor = Color.Red ElseIf Val(txbR9CntIQC.Text) < PreCnt_IQC.R9Cnt Then txbR9CntIQC.ForeColor = Color.Blue End If PreCnt_IQC.R9Cnt = txbR9CntIQC.Text txbR9CntIQC.Refresh() End Sub Private Sub txbR10CntIQC_TextChanged(sender As Object, e As EventArgs) Handles txbR10CntIQC.TextChanged If Val(txbR10CntIQC.Text) > PreCnt_IQC.R10Cnt Then txbR10CntIQC.ForeColor = Color.Red ElseIf Val(txbR10CntIQC.Text) < PreCnt_IQC.R10Cnt Then txbR10CntIQC.ForeColor = Color.Blue End If PreCnt_IQC.R10Cnt = txbR10CntIQC.Text txbR10CntIQC.Refresh() End Sub Private Sub txbReTotalCnt_TextChanged(sender As Object, e As EventArgs) Handles txbReTotalCnt.TextChanged If Val(txbReTotalCnt.Text) > PreCnt_IQC.ReTotalCnt Then txbReTotalCnt.ForeColor = Color.Red ElseIf Val(txbReTotalCnt.Text) < PreCnt_IQC.ReTotalCnt Then txbReTotalCnt.ForeColor = Color.Blue End If PreCnt_IQC.ReTotalCnt = txbReTotalCnt.Text txbReTotalCnt.Refresh() End Sub Private Sub txbReOkCnt_TextChanged(sender As Object, e As EventArgs) Handles txbReOkCnt.TextChanged If Val(txbReOkCnt.Text) > PreCnt_IQC.ReOkCnt Then txbReOkCnt.ForeColor = Color.Red ElseIf Val(txbReOkCnt.Text) < PreCnt_IQC.ReOkCnt Then txbReOkCnt.ForeColor = Color.Blue End If PreCnt_IQC.ReOkCnt = txbReOkCnt.Text txbReOkCnt.Refresh() End Sub Private Sub txbReNgCnt_TextChanged(sender As Object, e As EventArgs) Handles txbReNgCnt.TextChanged If Val(txbReNgCnt.Text) > PreCnt_IQC.ReNgCnt Then txbReNgCnt.ForeColor = Color.Red ElseIf Val(txbReNgCnt.Text) < PreCnt_IQC.ReNgCnt Then txbReNgCnt.ForeColor = Color.Blue End If PreCnt_IQC.ReNgCnt = txbReNgCnt.Text txbReNgCnt.Refresh() End Sub Private Sub txbTotalCnt_GotFocus(sender As Object, e As EventArgs) Handles txbTotalCnt.GotFocus pnlIQCDisp.Focus() End Sub Private Sub txbOKCnt_GotFocus(sender As Object, e As EventArgs) Handles txbOKCnt.GotFocus pnlIQCDisp.Focus() End Sub Private Sub txbNGCnt_GotFocus(sender As Object, e As EventArgs) Handles txbNGCnt.GotFocus pnlIQCDisp.Focus() End Sub Private Sub txbProCnt_GotFocus(sender As Object, e As EventArgs) Handles txbProCnt.GotFocus pnlIQCDisp.Focus() End Sub Private Sub txbLuxCnt_GotFocus(sender As Object, e As EventArgs) Handles txbLuxCnt.GotFocus pnlIQCDisp.Focus() End Sub Private Sub txbEyeCnt_GotFocus(sender As Object, e As EventArgs) Handles txbEyeCnt.GotFocus pnlIQCDisp.Focus() End Sub Private Sub txbR1CntIQC_GotFocus(sender As Object, e As EventArgs) Handles txbR1CntIQC.GotFocus pnlIQCDisp.Focus() End Sub Private Sub txbR2CntIQC_GotFocus(sender As Object, e As EventArgs) Handles txbR2CntIQC.GotFocus pnlIQCDisp.Focus() End Sub Private Sub txbR3CntIQC_GotFocus(sender As Object, e As EventArgs) Handles txbR3CntIQC.GotFocus pnlIQCDisp.Focus() End Sub Private Sub txbR4CntIQC_GotFocus(sender As Object, e As EventArgs) Handles txbR4CntIQC.GotFocus pnlIQCDisp.Focus() End Sub Private Sub txbR5CntIQC_GotFocus(sender As Object, e As EventArgs) Handles txbR5CntIQC.GotFocus pnlIQCDisp.Focus() End Sub Private Sub txbR6CntIQC_GotFocus(sender As Object, e As EventArgs) Handles txbR6CntIQC.GotFocus pnlIQCDisp.Focus() End Sub Private Sub txbR7CntIQC_GotFocus(sender As Object, e As EventArgs) Handles txbR7CntIQC.GotFocus pnlIQCDisp.Focus() End Sub Private Sub txbR8CntIQC_GotFocus(sender As Object, e As EventArgs) Handles txbR8CntIQC.GotFocus pnlIQCDisp.Focus() End Sub Private Sub txbR9CntIQC_GotFocus(sender As Object, e As EventArgs) Handles txbR9CntIQC.GotFocus pnlIQCDisp.Focus() End Sub Private Sub txbR10CntIQC_GotFocus(sender As Object, e As EventArgs) Handles txbR10CntIQC.GotFocus pnlIQCDisp.Focus() End Sub Private Sub txbReTotalCnt_GotFocus(sender As Object, e As EventArgs) Handles txbReTotalCnt.GotFocus pnlIQCDisp.Focus() End Sub Private Sub txbReOkCnt_GotFocus(sender As Object, e As EventArgs) Handles txbReOkCnt.GotFocus pnlIQCDisp.Focus() End Sub Private Sub txbReNgCnt_GotFocus(sender As Object, e As EventArgs) Handles txbReNgCnt.GotFocus pnlIQCDisp.Focus() End Sub Private Sub lblOntime_DoubleClick(sender As Object, e As EventArgs) Handles lblOntime.DoubleClick If ckbLogDetail.Visible = True Then ckbLogDetail.Visible = False Else ckbLogDetail.Visible = True End If End Sub Private Sub ckbLogDetail_CheckedChanged(sender As Object, e As EventArgs) Handles ckbLogDetail.CheckedChanged If ckbLogDetail.Checked Then ShowDetailLog = True Else ShowDetailLog = False End If End Sub Private Sub lblMesureDelaytime_DoubleClick(sender As Object, e As EventArgs) Handles lblMesureDelaytime.DoubleClick If ckbRunDemoMode.Visible = True Then ckbRunDemoMode.Visible = False Else ckbRunDemoMode.Visible = True End If End Sub Private Sub ckbRunDemoMode_CheckedChanged(sender As Object, e As EventArgs) Handles ckbRunDemoMode.CheckedChanged If ckbRunDemoMode.Checked Then RunDemoMode = True Else RunDemoMode = False End If End Sub Private Sub txbIQCOffsetValue_TextChanged(sender As Object, e As EventArgs) Handles txbValueError.TextChanged txbValueError.ForeColor = Color.Red End Sub Private Sub ckbUseInfoInput_CheckedChanged(sender As Object, e As EventArgs) Handles ckbUseInfoInput.CheckedChanged If ckbUseInfoInput.Checked Then lblGradePD1.Location = New Size(96, 29) txbGradePD1.Location = New Size(300, 14) lblCapacitorPD1.Location = New Size(96, 136) txbCapacitorPD1.Location = New Size(300, 121) lblCartridgePD1.Location = New Size(39, 243) txbCartridgePD1.Location = New Size(300, 228) gpbCheckGrade.Visible = True Else lblGradePD1.Location = New Size(202, 29) txbGradePD1.Location = New Size(406, 14) lblCapacitorPD1.Location = New Size(202, 136) txbCapacitorPD1.Location = New Size(406, 121) lblCartridgePD1.Location = New Size(145, 243) txbCartridgePD1.Location = New Size(406, 228) gpbCheckGrade.Visible = False End If lblGradePD1.Refresh() txbGradePD1.Refresh() lblCapacitorPD1.Refresh() txbCapacitorPD1.Refresh() lblCartridgePD1.Refresh() txbCartridgePD1.Refresh() gpbCheckGrade.Refresh() End Sub Private Sub cboGrade_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboGrade.SelectedIndexChanged txbPV_SN.Focus() End Sub Private Sub cboCapacitor_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboCapacitor.SelectedIndexChanged txbPV_SN.Focus() End Sub Private Sub gpbProduct1_Enter(sender As Object, e As EventArgs) Handles gpbProduct1.Enter If ckbUseInfoInput.Checked = False And chbAutoMeasure.Checked Then txbPV_SN.Focus() End If End Sub Private Sub txbTotalCntPD1_TextChanged(sender As Object, e As EventArgs) Handles txbTotalCntPD1.TextChanged If txbTotalCntPD1.Text > PreCnt_PD1.TotalCnt Then txbTotalCntPD1.ForeColor = Color.Red ElseIf txbTotalCntPD1.Text < PreCnt_PD1.TotalCnt Then txbTotalCntPD1.ForeColor = Color.Blue End If PreCnt_PD1.TotalCnt = txbTotalCntPD1.Text txbTotalCntPD1.Refresh() End Sub Private Sub txbOkCntPD1_TextChanged(sender As Object, e As EventArgs) Handles txbOkCntPD1.TextChanged If txbOkCntPD1.Text > PreCnt_PD1.OKCnt Then txbOkCntPD1.ForeColor = Color.Red ElseIf txbOkCntPD1.Text < PreCnt_PD1.OKCnt Then txbOkCntPD1.ForeColor = Color.Blue End If PreCnt_PD1.OKCnt = txbOkCntPD1.Text txbOkCntPD1.Refresh() End Sub Private Sub txbNgCntPD1_TextChanged(sender As Object, e As EventArgs) Handles txbNgCntPD1.TextChanged If txbNgCntPD1.Text > PreCnt_PD1.NGCnt Then txbNgCntPD1.ForeColor = Color.Red ElseIf txbNgCntPD1.Text < PreCnt_PD1.NGCnt Then txbNgCntPD1.ForeColor = Color.Blue End If PreCnt_PD1.NGCnt = txbNgCntPD1.Text txbNgCntPD1.Refresh() End Sub Private Sub txbProCntPD1_TextChanged(sender As Object, e As EventArgs) Handles txbProCntPD1.TextChanged If txbProCntPD1.Text > PreCnt_PD1.ProCnt Then txbProCntPD1.ForeColor = Color.Red ElseIf txbProCntPD1.Text < PreCnt_PD1.ProCnt Then txbProCntPD1.ForeColor = Color.Blue End If PreCnt_PD1.ProCnt = txbProCntPD1.Text txbProCntPD1.Refresh() End Sub Private Sub txbLuxCntPD1_TextChanged(sender As Object, e As EventArgs) Handles txbLuxCntPD1.TextChanged If txbLuxCntPD1.Text > PreCnt_PD1.LuxCnt Then txbLuxCntPD1.ForeColor = Color.Red ElseIf txbLuxCntPD1.Text < PreCnt_PD1.LuxCnt Then txbLuxCntPD1.ForeColor = Color.Blue End If PreCnt_PD1.LuxCnt = txbLuxCntPD1.Text txbLuxCntPD1.Refresh() End Sub Private Sub txbEyeCntPD1_TextChanged(sender As Object, e As EventArgs) Handles txbEyeCntPD1.TextChanged If txbEyeCntPD1.Text > PreCnt_PD1.EyeCnt Then txbEyeCntPD1.ForeColor = Color.Red ElseIf txbEyeCntPD1.Text < PreCnt_PD1.EyeCnt Then txbEyeCntPD1.ForeColor = Color.Blue End If PreCnt_PD1.EyeCnt = txbEyeCntPD1.Text txbEyeCntPD1.Refresh() End Sub Private Sub txbR1CntPD1_TextChanged(sender As Object, e As EventArgs) Handles txbR1CntPD1.TextChanged If txbR1CntPD1.Text > PreCnt_PD1.R1Cnt Then txbR1CntPD1.ForeColor = Color.Red ElseIf txbR1CntPD1.Text < PreCnt_PD1.R1Cnt Then txbR1CntPD1.ForeColor = Color.Blue End If PreCnt_PD1.R1Cnt = txbR1CntPD1.Text txbR1CntPD1.Refresh() End Sub Private Sub txbR2CntPD1_TextChanged(sender As Object, e As EventArgs) Handles txbR2CntPD1.TextChanged If txbR2CntPD1.Text > PreCnt_PD1.R2Cnt Then txbR2CntPD1.ForeColor = Color.Red ElseIf txbR2CntPD1.Text < PreCnt_PD1.R2Cnt Then txbR2CntPD1.ForeColor = Color.Blue End If PreCnt_PD1.R2Cnt = txbR2CntPD1.Text txbR2CntPD1.Refresh() End Sub Private Sub txbR3CntPD1_TextChanged(sender As Object, e As EventArgs) Handles txbR3CntPD1.TextChanged If txbR3CntPD1.Text > PreCnt_PD1.R3Cnt Then txbR3CntPD1.ForeColor = Color.Red ElseIf txbR3CntPD1.Text < PreCnt_PD1.R3Cnt Then txbR3CntPD1.ForeColor = Color.Blue End If PreCnt_PD1.R3Cnt = txbR3CntPD1.Text txbR3CntPD1.Refresh() End Sub Private Sub txbR4CntPD1_TextChanged(sender As Object, e As EventArgs) Handles txbR4CntPD1.TextChanged If txbR4CntPD1.Text > PreCnt_PD1.R4Cnt Then txbR4CntPD1.ForeColor = Color.Red ElseIf txbR4CntPD1.Text < PreCnt_PD1.R4Cnt Then txbR4CntPD1.ForeColor = Color.Blue End If PreCnt_PD1.R4Cnt = txbR4CntPD1.Text txbR4CntPD1.Refresh() End Sub Private Sub txbR5CntPD1_TextChanged(sender As Object, e As EventArgs) Handles txbR5CntPD1.TextChanged If txbR5CntPD1.Text > PreCnt_PD1.R5Cnt Then txbR5CntPD1.ForeColor = Color.Red ElseIf txbR5CntPD1.Text < PreCnt_PD1.R5Cnt Then txbR5CntPD1.ForeColor = Color.Blue End If PreCnt_PD1.R5Cnt = txbR5CntPD1.Text txbR5CntPD1.Refresh() End Sub Private Sub txbR6CntPD1_TextChanged(sender As Object, e As EventArgs) Handles txbR6CntPD1.TextChanged If txbR6CntPD1.Text > PreCnt_PD1.R6Cnt Then txbR6CntPD1.ForeColor = Color.Red ElseIf txbR6CntPD1.Text < PreCnt_PD1.R6Cnt Then txbR6CntPD1.ForeColor = Color.Blue End If PreCnt_PD1.R6Cnt = txbR6CntPD1.Text txbR6CntPD1.Refresh() End Sub Private Sub txbR7CntPD1_TextChanged(sender As Object, e As EventArgs) Handles txbR7CntPD1.TextChanged If txbR7CntPD1.Text > PreCnt_PD1.R7Cnt Then txbR7CntPD1.ForeColor = Color.Red ElseIf txbR7CntPD1.Text < PreCnt_PD1.R7Cnt Then txbR7CntPD1.ForeColor = Color.Blue End If PreCnt_PD1.R7Cnt = txbR7CntPD1.Text txbR7CntPD1.Refresh() End Sub Private Sub txbR8CntPD1_TextChanged(sender As Object, e As EventArgs) Handles txbR8CntPD1.TextChanged If txbR8CntPD1.Text > PreCnt_PD1.R8Cnt Then txbR8CntPD1.ForeColor = Color.Red ElseIf txbR8CntPD1.Text < PreCnt_PD1.R8Cnt Then txbR8CntPD1.ForeColor = Color.Blue End If PreCnt_PD1.R8Cnt = txbR8CntPD1.Text txbR8CntPD1.Refresh() End Sub Private Sub txbR9CntPD1_TextChanged(sender As Object, e As EventArgs) Handles txbR9CntPD1.TextChanged If txbR9CntPD1.Text > PreCnt_PD1.R9Cnt Then txbR9CntPD1.ForeColor = Color.Red ElseIf txbR9CntPD1.Text < PreCnt_PD1.R9Cnt Then txbR9CntPD1.ForeColor = Color.Blue End If PreCnt_PD1.R9Cnt = txbR9CntPD1.Text txbR9CntPD1.Refresh() End Sub Private Sub txbR10CntPD1_TextChanged(sender As Object, e As EventArgs) Handles txbR10CntPD1.TextChanged If txbR10CntPD1.Text > PreCnt_PD1.R10Cnt Then txbR10CntPD1.ForeColor = Color.Red ElseIf txbR10CntPD1.Text < PreCnt_PD1.R10Cnt Then txbR10CntPD1.ForeColor = Color.Blue End If PreCnt_PD1.R10Cnt = txbR10CntPD1.Text txbR10CntPD1.Refresh() End Sub Public Sub UpdateCartType() CartType = CART_TYPE.CART_NONE If ckbUseGradeChange.Checked Then If rdbModelPro.Checked And rdbTypeFace.Checked Then CartType = CART_TYPE.PRO_FACE ElseIf rdbModelPro.Checked And rdbTypeEye.Checked Then CartType = CART_TYPE.PRO_EYE ElseIf rdbModelLux.Checked And rdbTypeFace.Checked Then CartType = CART_TYPE.LUX_FACE ElseIf rdbModelLux.Checked And rdbTypeEye.Checked Then CartType = CART_TYPE.LUX_EYE End If Else If rdbModelPro.Checked Then CartType = CART_TYPE.PRO_EYE ElseIf rdbModelLux.Checked Then CartType = CART_TYPE.LUX_EYE End If End If txbModelSelect.Text = CartTypeName(CartType) txbModelSelect.Refresh() End Sub Public Sub UpdateCartTypeWindow() CartType = CART_TYPE.CART_NONE If ckbUseGradeChange.Checked Then If frmModelSelect.rdbModelProWindow.Checked And frmModelSelect.rdbTypeFaceWindow.Checked Then CartType = CART_TYPE.PRO_FACE ElseIf frmModelSelect.rdbModelProWindow.Checked And frmModelSelect.rdbTypeEyeWindow.Checked Then CartType = CART_TYPE.PRO_EYE ElseIf frmModelSelect.rdbModelLuxWindow.Checked And frmModelSelect.rdbTypeFaceWindow.Checked Then CartType = CART_TYPE.LUX_FACE ElseIf frmModelSelect.rdbModelLuxWindow.Checked And frmModelSelect.rdbTypeEyeWindow.Checked Then CartType = CART_TYPE.LUX_EYE End If Else If frmModelSelect.rdbModelProWindow.Checked Then CartType = CART_TYPE.PRO_EYE ElseIf frmModelSelect.rdbModelLuxWindow.Checked Then CartType = CART_TYPE.LUX_EYE End If End If frmModelSelect.txbModelSelectWindow.Text = CartTypeName(CartType) frmModelSelect.txbModelSelectWindow.Refresh() If ckbUseGradeChange.Checked Then If frmModelSelect.rdbModelProWindow.Checked Or frmModelSelect.rdbModelLuxWindow.Checked Then If frmModelSelect.rdbTypeFaceWindow.Checked = False And frmModelSelect.rdbTypeEyeWindow.Checked = False Then frmModelSelect.lblModelSelectTitle.Text = "카트리지 타입을 선택해주세요!" End If ElseIf frmModelSelect.rdbTypeFaceWindow.Checked Or frmModelSelect.rdbTypeEyeWindow.Checked Then If frmModelSelect.rdbModelProWindow.Checked = False And frmModelSelect.rdbTypeFaceWindow.Checked = False Then frmModelSelect.lblModelSelectTitle.Text = "카트리지 모델을 선택해주세요!" End If End If End If If CartType Then frmModelSelect.lblModelSelectTitle.Text = " 사양 선택이 완료되었습니다!" frmModelSelect.Refresh() 'DelayMs(5000) 'frmModelSelect.Close() End If End Sub Private Sub ckbUseGradeChange_CheckedChanged(sender As Object, e As EventArgs) Handles ckbUseGradeChange.CheckedChanged If ckbUseGradeChange.Checked Then pnlModelSelect.Location = New Size(6, 148) pnlTypeSelect.Location = New Size(6, 180) pnlTypeSelect.Visible = True frmModelSelect.pnlModelSelectWindow.Location = New Size(1, 312) frmModelSelect.pnlTypeSelectWindow.Location = New Size(1, 412) frmModelSelect.pnlTypeSelectWindow.Visible = True gpbCartType.Text = "카트리지 모델 선택 설정" Else pnlModelSelect.Location = New Size(6, 164) pnlTypeSelect.Visible = False frmModelSelect.pnlModelSelectWindow.Location = New Size(1, 362) frmModelSelect.pnlTypeSelectWindow.Visible = False gpbCartType.Text = "EYE 카트리지 모델 선택 설정" End If gpbCartType.Refresh() pnlModelSelect.Refresh() pnlTypeSelect.Refresh() frmModelSelect.pnlModelSelectWindow.Refresh() frmModelSelect.pnlTypeSelectWindow.Refresh() frmModelSelect.pnlTypeSelectWindow.Refresh() End Sub Private Sub rdbModelPro_CheckedChanged(sender As Object, e As EventArgs) Handles rdbModelPro.CheckedChanged If rdbModelPro.Checked Then rdbModelPro.ForeColor = Color.Red Else rdbModelPro.ForeColor = Color.Black End If rdbModelPro.Refresh() UpdateCartType() End Sub Private Sub rdbModelLux_CheckedChanged(sender As Object, e As EventArgs) Handles rdbModelLux.CheckedChanged If rdbModelLux.Checked Then rdbModelLux.ForeColor = Color.Red Else rdbModelLux.ForeColor = Color.Black End If rdbModelLux.Refresh() UpdateCartType() End Sub Private Sub rdbTypeFace_CheckedChanged(sender As Object, e As EventArgs) Handles rdbTypeFace.CheckedChanged If rdbTypeFace.Checked Then rdbTypeFace.ForeColor = Color.Red Else rdbTypeFace.ForeColor = Color.Black End If rdbTypeFace.Refresh() UpdateCartType() End Sub Private Sub rdbTypeEye_CheckedChanged(sender As Object, e As EventArgs) Handles rdbTypeEye.CheckedChanged If rdbTypeEye.Checked Then rdbTypeEye.ForeColor = Color.Red Else rdbTypeEye.ForeColor = Color.Black End If rdbTypeEye.Refresh() UpdateCartType() End Sub Private Sub ckbUseModelSelect_CheckedChanged(sender As Object, e As EventArgs) Handles ckbUseModelSelect.CheckedChanged If ckbUseModelSelect.Checked Then lblGradePD1.Location = New Size(202, 29) txbGradePD1.Location = New Size(406, 14) lblCapacitorPD1.Location = New Size(202, 136) txbCapacitorPD1.Location = New Size(406, 121) lblCartridgePD1.Location = New Size(145, 243) txbCartridgePD1.Location = New Size(406, 228) gpbCartType.Visible = False Else lblGradePD1.Location = New Size(96, 29) txbGradePD1.Location = New Size(300, 14) lblCapacitorPD1.Location = New Size(96, 136) txbCapacitorPD1.Location = New Size(300, 121) lblCartridgePD1.Location = New Size(39, 243) txbCartridgePD1.Location = New Size(300, 228) gpbCartType.Visible = True End If lblGradePD1.Refresh() txbGradePD1.Refresh() lblCapacitorPD1.Refresh() txbCapacitorPD1.Refresh() lblCartridgePD1.Refresh() txbCartridgePD1.Refresh() gpbCheckGrade.Refresh() End Sub Private Sub AutoAgingTimer_Tick(sender As Object, e As EventArgs) Handles AutoAgingTimer.Tick If AutoAgingCnt > 0 Then AutoAgingCnt -= 1 txbAgingWait.Text = AutoAgingCnt txbAgingWait.Refresh() Else AutoAgingCnt = Val(txbAutoInterval.Text) txbAgingWait.Text = AutoAgingCnt txbAgingWait.Refresh() AutoAgingTimer.Enabled = False RunProcess() txbShotCnt.Text += 1 AutoAgingTimer.Enabled = True End If End Sub Private Sub btnAutoAging_Click(sender As Object, e As EventArgs) Handles btnAutoAging.Click If btnAutoAging.Text = "자동시작" Then AutoAgingTimer.Enabled = True btnAutoAging.Text = "자동멈춤" Else AutoAgingTimer.Enabled = False btnAutoAging.Text = "자동시작" AutoAgingCnt = 0 End If btnAutoAging.Refresh() End Sub Private Sub btnRunPD3_Click(sender As Object, e As EventArgs) Handles btnRunPD3.Click RunProcess() End Sub Private Sub rdbCapacitor1_CheckedChanged(sender As Object, e As EventArgs) Handles rdbCapacitor1.CheckedChanged If (rdbCapacitor1.Checked) Then txbCapacitorPD3.Text = "0" End Sub Private Sub rdbCapacitor2_CheckedChanged(sender As Object, e As EventArgs) Handles rdbCapacitor2.CheckedChanged If (rdbCapacitor2.Checked) Then txbCapacitorPD3.Text = "22" End Sub Private Sub rdbCapacitor3_CheckedChanged(sender As Object, e As EventArgs) Handles rdbCapacitor3.CheckedChanged If (rdbCapacitor3.Checked) Then txbCapacitorPD3.Text = "56" End Sub Private Sub rdbCapacitor4_CheckedChanged(sender As Object, e As EventArgs) Handles rdbCapacitor4.CheckedChanged If (rdbCapacitor4.Checked) Then txbCapacitorPD3.Text = "82" End Sub Private Sub rdbCapacitor5_CheckedChanged(sender As Object, e As EventArgs) Handles rdbCapacitor5.CheckedChanged If (rdbCapacitor5.Checked) Then txbCapacitorPD3.Text = "100" End Sub Private Sub rdbCapacitor6_CheckedChanged(sender As Object, e As EventArgs) Handles rdbCapacitor6.CheckedChanged If (rdbCapacitor6.Checked) Then txbCapacitorPD3.Text = "120" End Sub Private Sub rdbCapacitor7_CheckedChanged(sender As Object, e As EventArgs) Handles rdbCapacitor7.CheckedChanged If (rdbCapacitor7.Checked) Then txbCapacitorPD3.Text = "150" End Sub Private Sub rdbCapacitor8_CheckedChanged(sender As Object, e As EventArgs) Handles rdbCapacitor8.CheckedChanged If (rdbCapacitor8.Checked) Then txbCapacitorPD3.Text = "180" End Sub Private Sub rdbCapacitor9_CheckedChanged(sender As Object, e As EventArgs) Handles rdbCapacitor9.CheckedChanged If (rdbCapacitor9.Checked) Then txbCapacitorPD3.Text = "220" End Sub Private Sub rdbCapacitor10_CheckedChanged(sender As Object, e As EventArgs) Handles rdbCapacitor10.CheckedChanged If (rdbCapacitor10.Checked) Then txbCapacitorPD3.Text = "270" End Sub Private Sub txbPV_Freq_TextChanged(sender As Object, e As EventArgs) Handles txbPV_Freq.TextChanged If chbAutoMeasure.Checked = False And DevNum = 4 Then txbGradePD3.Text = txbPV_Freq.Text End If End Sub Private Sub txbGradePD3_GotFocus(sender As Object, e As EventArgs) Handles txbGradePD3.GotFocus gpbProduct3.Focus() End Sub Private Sub txbCapacitorPD3_GotFocus(sender As Object, e As EventArgs) Handles txbCapacitorPD3.GotFocus gpbProduct3.Focus() End Sub Private Sub rdbFace_CheckedChanged(sender As Object, e As EventArgs) Handles rdbFace.CheckedChanged lblMode.Text = "모드" rdbMode1.Checked = True rdbMode1.Text = "3.0" rdbMode1.Refresh() rdbMode2.Checked = False rdbMode2.Text = "4.5" rdbMode2.Refresh() rdbMode3.Checked = False rdbMode3.Text = "Dual" rdbMode3.Refresh() 'EYE_CART : 1 , FACE_CART : 2 If CkbNoRun = False Then If SetCartType(2) Then MsgBox("카트리지 정보 설정 실패.") End If End If CkbNoRun = False If chbUseBarcode.Checked Then txbPV_SN.Focus() End If End Sub Private Sub rdbEye_CheckedChanged(sender As Object, e As EventArgs) Handles rdbEye.CheckedChanged lblMode.Text = "속도" rdbMode1.Checked = False rdbMode1.Text = "1Hz" rdbMode1.Refresh() rdbMode2.Checked = False rdbMode2.Text = "2Hz" rdbMode2.Refresh() rdbMode3.Checked = True rdbMode3.Text = "3Hz" rdbMode3.Refresh() 'EYE_CART : 1 , FACE_CART : 2 If CkbNoRun = False Then If SetCartType(1) Then MsgBox("카트리지 정보 설정 실패.") End If End If CkbNoRun = False If chbUseBarcode.Checked Then txbPV_SN.Focus() End If End Sub Private Sub gpbProduct3_GotFocus(sender As Object, e As EventArgs) Handles gpbProduct3.GotFocus If chbAutoMeasure.Checked Then txbPV_SN.Focus() End If End Sub Private Sub rdbMode1_CheckedChanged(sender As Object, e As EventArgs) Handles rdbMode1.CheckedChanged If CkbNoRun = False Then If rdbFace.Checked Then 'DUAL : 1 , 3.0 : 2 , 4.5 : 3 If SetDepthType(2) Then MsgBox("카트리지 정보 설정 실패.") End If ElseIf rdbEye.Checked Then '1Hz : 1 , 2Hz : 2 , 3Hz : 3 If SetHertzType(1) Then MsgBox("카트리지 정보 설정 실패.") End If End If End If CkbNoRun = False txbPV_SN.Focus() End Sub Private Sub rdbMode2_CheckedChanged(sender As Object, e As EventArgs) Handles rdbMode2.CheckedChanged If CkbNoRun = False Then If rdbFace.Checked Then 'DUAL : 1 , 3.0 : 2 , 4.5 : 3 If SetDepthType(3) Then MsgBox("카트리지 정보 설정 실패.") End If ElseIf rdbEye.Checked Then '1Hz : 1 , 2Hz : 2 , 3Hz : 3 If SetHertzType(2) Then MsgBox("카트리지 정보 설정 실패.") End If End If End If CkbNoRun = False txbPV_SN.Focus() End Sub Private Sub rdbMode3_CheckedChanged(sender As Object, e As EventArgs) Handles rdbMode3.CheckedChanged If CkbNoRun = False Then If rdbFace.Checked Then 'DUAL : 1 , 3.0 : 2 , 4.5 : 3 If SetDepthType(1) Then MsgBox("카트리지 정보 설정 실패.") End If ElseIf rdbEye.Checked Then '1Hz : 1 , 2Hz : 2 , 3Hz : 3 If SetHertzType(3) Then MsgBox("카트리지 정보 설정 실패.") End If End If End If CkbNoRun = False txbPV_SN.Focus() End Sub Private Sub txbMotorOnTime_TextChanged(sender As Object, e As EventArgs) Handles txbMotorOnTime.TextChanged txbMotorOnTime.ForeColor = Color.Red End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ReDim RegMeasure.MeasureValue(11) For i = 0 To 10 Next RegMeasure.MeasureValue(0) = 0 RegMeasure.MeasureValue(1) = TextBox2.Text RegMeasure.MeasureValue(2) = TextBox27.Text RegMeasure.MeasureValue(3) = TextBox26.Text RegMeasure.MeasureValue(4) = TextBox25.Text RegMeasure.MeasureValue(5) = TextBox24.Text RegMeasure.MeasureValue(6) = TextBox23.Text RegMeasure.MeasureValue(7) = TextBox22.Text RegMeasure.MeasureValue(8) = TextBox21.Text RegMeasure.MeasureValue(9) = TextBox20.Text RegMeasure.MeasureValue(10) = TextBox19.Text 'For Cnt = 1 To 9 ' If RegMeasure.MeasureValue(Cnt) <= ProMAX And RegMeasure.MeasureValue(0) = 0 Then RegMeasure.MeasureValue(0) = Cnt ' If RegMeasure.MeasureValue(0) Then ' If RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) < RegMeasure.MeasureValue(Cnt + 1) Then ' If RegMeasure.MeasureValue(Cnt + 1) <= ProMAX Then ' RegMeasure.MeasureValue(0) = Cnt + 1 ' Else ' If MySqlModule.RegMeasure.MeasureValue(Cnt) <= ProMAX Then RegMeasure.MeasureValue(0) = Cnt ' End If ' End If ' End If 'Next 'For Cnt = 1 To 10 ' If RegMeasure.MeasureValue(Cnt) <= ProMAX And RegMeasure.MeasureValue(0) = 0 Then RegMeasure.MeasureValue(0) = Cnt ' If RegMeasure.MeasureValue(0) Then ' If RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) < RegMeasure.MeasureValue(Cnt) Then ' If RegMeasure.MeasureValue(Cnt) <= ProMAX Then ' RegMeasure.MeasureValue(0) = Cnt ' End If ' End If ' End If 'Next If RegMeasure.MeasureValue(0) = 0 Then RegMeasure.MeasureOkNg = "NG" RegMeasure.MeasureGrade = "OVER" txbGrade.Text = RegMeasure.MeasureGrade RegMeasure.MeasureValue(0) = 0 txbGrade.BackColor = Color.Red ElseIf RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) >= ProMIN Then RegMeasure.MeasureOkNg = "OK" RegMeasure.MeasureGrade = "PRO" txbGrade.Text = RegMeasure.MeasureGrade txbGrade.BackColor = Color.Green ElseIf RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) >= LuxMIN Then RegMeasure.MeasureOkNg = "OK" RegMeasure.MeasureGrade = "LUX" txbGrade.Text = RegMeasure.MeasureGrade txbGrade.BackColor = Color.Green ElseIf RegMeasure.MeasureValue(RegMeasure.MeasureValue(0)) >= EyeMIN Then RegMeasure.MeasureOkNg = "OK" RegMeasure.MeasureGrade = "EYE" txbGrade.Text = RegMeasure.MeasureGrade txbGrade.BackColor = Color.Green Else RegMeasure.MeasureOkNg = "NG" RegMeasure.MeasureGrade = "UNDER" txbGrade.Text = RegMeasure.MeasureGrade RegMeasure.MeasureValue(0) = 0 txbGrade.BackColor = Color.Red End If txbGrade.Refresh() RegMeasure.MeasureCapacitor = RELAY_C(RegMeasure.MeasureValue(0)) txbCapacitor.Text = RegMeasure.MeasureCapacitor If RegMeasure.MeasureValue(0) Then txbCapacitor.BackColor = Color.Green Else txbCapacitor.BackColor = Color.Red End If txbCapacitor.Refresh() End Sub Private Sub btnCal_Click(sender As Object, e As EventArgs) Handles btnCal.Click If CalModeOn = False Then CalModeOn = True txbCmdWindow.Clear() txbCmdWindow.Visible = True gbTestWindow.Visible = False btnRunIQC.Enabled = True btnRunIQC.Text = "완료" End If txbPV_Freq.Text = "7000" RegMeasure.MeasurePV_SN = "DITTEST" RunProcess() btnRunIQC.Enabled = True txbPV_Freq.Text = "N/A" End Sub Private Sub btPrintref_Click(sender As Object, e As EventArgs) Handles btPrintref.Click Dim lvi(1) As String Dim alList As System.Collections.ArrayList = New System.Collections.ArrayList(PrinterSettings.InstalledPrinters) alList.Sort() dgvPrinter.Rows.Clear() For i = 0 To alList.Count - 1 lvi(0) = i + 1 lvi(1) = alList(i).ToString dgvPrinter.Rows.Add(lvi) Next End Sub Private Sub btnName1_Click(sender As Object, e As EventArgs) Handles btnName1.Click Dim row As DataGridViewRow = dgvPrinter.SelectedRows(0) Dim printname As String = row.Cells(1).Value.ToString txbPrintApply.Text = printname End Sub Private Sub btnLabel1_Click(sender As Object, e As EventArgs) Handles btnLabel1.Click Dim fileAddress As String = openfile() If fileAddress <> "fail" Then txbLabel1.Text = fileAddress End If End Sub Private Function openfile() As String Dim ofd As OpenFileDialog = New OpenFileDialog ofd.Title = "라벨 파일 주소 불러오기" ofd.FileName = "" ofd.Filter = "라벨 파일(*.lbx) | *.lbx" Dim dr As DialogResult = ofd.ShowDialog If dr = DialogResult.OK Then Return ofd.FileName End If Return "fail" End Function Private Sub Mqtt_DataSend(loadText As String) Try If loadText.Replace(" ", "") = "" Then MsgBox("저장할 데이터가 존재하지 않습니다. 데이터를 확인하여 주십시오.", vbCritical) Exit Sub End If If MQTClient IsNot Nothing AndAlso MQTClient.IsConnected Then If mqttTopic.Length <> 0 Then Try Dim qos As Byte = 0 MQTClient.Publish(mqttTopic, System.Text.Encoding.Default.GetBytes(loadText), qos, False) Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical) End Try Else MsgBox("토픽을 지정하지 않았습니다. 토픽을 지정하여 주십시오.", vbExclamation) End If Else MsgBox("Broker 호스트와 연결되지 않았습니다. 호스트와 연결하여 주십시오.", vbExclamation) End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub frmTD_JIG_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing End End Sub Private Sub lblTime_DoubleClick(sender As Object, e As EventArgs) Handles lblTime.DoubleClick MsgBox("MQTT 정보" + vbCrLf + "MQTT Broker : " + mqttBroker + vbCrLf + "MQTT Topic : " + mqttTopic + vbCrLf + "DUALSONIC VER 3.2.2", vbInformation) End Sub Private Sub rdbCmat_5_CheckedChanged(sender As Object, e As EventArgs) Handles rdbCmat_5.CheckedChanged If rdbCmat_5.Checked = True Then nudmat_1.Enabled = True nudmat_2.Enabled = True nudmat_3.Enabled = True nudmat_4.Enabled = True nudmat_5.Enabled = True ckbSerialUse.Checked = False ckbSerialUse.Enabled = False btnGradeStop.Enabled = False gbDSMode.Enabled = False GradeStop = 3 SettingMeasure = String.Empty End If End Sub Private Sub rdbCmat_10_CheckedChanged(sender As Object, e As EventArgs) Handles rdbCmat_10.CheckedChanged If rdbCmat_10.Checked = True Then nudmat_1.Enabled = False nudmat_2.Enabled = False nudmat_3.Enabled = False nudmat_4.Enabled = False nudmat_5.Enabled = False ckbSerialUse.Checked = True ckbSerialUse.Enabled = True If ckbSerialUse.Checked = True Then btnGradeStop.Enabled = True gbDSMode.Enabled = True End If End If End Sub Private Sub btnGradeStop_Click(sender As Object, e As EventArgs) Handles btnGradeStop.Click GradeStop += 1 If GradeStop Mod 3 = 2 Then gradeChange("EYE") ElseIf GradeStop Mod 3 = 1 Then gradeChange("PRO") Else gradeReset() End If End Sub Private Sub gradeChange(typeName As String) SettingMeasure = typeName txbGradePD1.BackColor = Color.Green txbGradePD1.Text = SettingMeasure txbGradePD1.Refresh() End Sub Private Sub gradeReset() SettingMeasure = String.Empty txbGradePD1.BackColor = DefaultBackColor txbGradePD1.Text = "대기" txbGradePD1.Refresh() End Sub Private Sub ckbSerialUse_CheckedChanged(sender As Object, e As EventArgs) Handles ckbSerialUse.CheckedChanged If ckbSerialUse.Checked = True Then If cmdSerialPort.IsOpen = False Then OpenSerial() End If End If OkNgTestStepSet() End Sub Private Sub OkNgTestStepSet() If ckbSerialUse.Checked = False Then TeststepSet.First_Ok = TestStepList.MAX_First_OK TeststepSet.First_Ng = TestStepList.MAX_First_NG TeststepSet.Re_OK = TestStepList.MAX_RE_OK TeststepSet.RE_Ng = TestStepList.MAX_RE_NG gbDSMode.Enabled = False btnGradeStop.Enabled = False Else TeststepSet.First_Ok = TestStepList.DUAL_First_OK TeststepSet.First_Ng = TestStepList.DUAL_First_NG TeststepSet.Re_OK = TestStepList.DUAL_RE_OK TeststepSet.RE_Ng = TestStepList.DUAL_RE_NG gbDSMode.Enabled = True btnGradeStop.Enabled = True End If End Sub End Class