Imports System.Math Imports System.IO Imports System.Threading Imports System.IO.Ports Public Class mainForm Private Enum formModList Search Write Delete ReturnP End Enum Private runMod As Int16 Private Enum tdDataList TDSN TDDate TestDate TestTime Grade End Enum Private tdReadData(tdDataList.Grade) As String Private tdReadTxb(tdDataList.Grade) As TextBox Private Enum dotDataList dotDate dotTime dotPower dotDepth End Enum Private dotReadData(dotDataList.dotDepth) As String Private dotReadTxb(dotDataList.dotDepth) As TextBox Private Enum hifuDataList hifuDate hifuTime hifuFW hifuBaterry hifuDtemp hifuCtemp hifuFreq hifuData1_txb hifuData2 hifuData3 End Enum Private hifuReadData(hifuDataList.hifuData3) As String Private hifuReadTxb(hifuDataList.hifuData1_txb) As TextBox Private Enum rfDataList rfDate rfTime rfR1Vrms_txb1 rfR1Freq_txb2 rfR2Vrms_txb3 rfR2Freq rfR3Vrms rfR3Freq epR1Vpp epR1Freq epR1PWidth epR1NWidth epR2Vpp epR2Freq epR2PWidth epR2NWidth epR3Vpp epR3Freq epR3PWidth epR3NWidth mcR1Wave mcR1Vpp mcR1Freq mcR2Wave mcR2Vpp mcR2Freq End Enum Private rfReadData(rfDataList.mcR2Freq) As String Private rfReadTxb(rfDataList.rfR2Vrms_txb3) As TextBox Private Enum pd2DataList pd2DateTime prodDate pd2Serial pd2Factory pd2Model pd2Type pd2Country pd2Agency pd2Face pd2Eye pd2Max End Enum Private pd2ReadData(pd2DataList.pd2Max - 1) As String Private pd2ReadTxb(pd2DataList.pd2Max - 1) As TextBox Private Enum saveDataList opFw opFreqMax opFreqMin opBatMax opBatMin opDtempMax opDtempMin opCtempMax opCtempMin opHF1Max opHF1Min opHF2Max opHF2Min opHF3Max opHF3Min opHF12 opHF23 optg1FrqMax optg1FrqMin optg1VrMax optg1VrMin optg2FrqMax optg2FrqMin optg2VrMax optg2VrMin optg3FrqMax optg3FrqMin optg3VrMax optg3VrMin opdy1DtMax opdy1DtMin opdy1FrMax opdy1FrMin opdy1VpMax opdy1VpMin opdy2DtMax opdy2DtMin opdy2FrMax opdy2FrMin opdy2VpMax opdy2VpMin opcs1Dy opcs1FrMax opcs1FrMin opcs1VpMax opcs1VpMin opcs2Dy opcs2FrMax opcs2FrMin opcs2VpMax opcs2VpMin opcs3Dy opcs3FrMax opcs3FrMin opcs3VpMax opcs3VpMin opFW_AT opBatMax_AT opBatMin_AT opDtempMax_AT opDtempMin_AT opCtempMax_AT opCtempMin_AT optg1FrqMax_AT optg1FrqMin_AT optg1VrMax_AT optg1VrMin_AT optg2FrqMax_AT optg2FrqMin_AT optg2VrMax_AT optg2VrMin_AT optg3FrqMax_AT optg3FrqMin_AT optg3VrMax_AT optg3VrMin_AT opcs1Dy_AT opcs1FrMax_AT opcs1FrMin_AT opcs1VpMax_AT opcs1VpMin_AT opcs2Dy_AT opcs2FrMax_AT opcs2FrMin_AT opcs2VpMax_AT opcs2VpMin_AT opcs3Dy_AT opcs3FrMax_AT opcs3FrMin_AT opcs3VpMax_AT opcs3VpMin_AT End Enum Private saveTextData(saveDataList.opcs3VpMin_AT) As TextBox Private Enum dbRegList dbTD dbDot dbHifu dbWave dbInfo DBALL End Enum Private saveDBCkb(dbRegList.dbInfo) As CheckBox Private dataOkNg(dbRegList.DBALL) As Boolean Private Enum prodTypeList cartSet_V1 cartFace_V2 cartEye cartBody cartEtc End Enum Private Enum prodVersionList cartSet_V2 cart_V1 cart_V2 cart_V3 End Enum Private cartSerial(prodTypeList.cartEtc) As String Private TDUseCompare As Boolean Private searchType As Int16 Private Enum maxAlphaColorList Ruby_Red = 0 Topaz_Orange = 2 Emerald_Green = 3 Sapphire_Blue = 4 Topaz_Brown = 5 Sitrin_Gold = 7 End Enum Private colorTypeMaxAlpha As Int16 Private Enum maxColorList White = 0 ShineMint = 2 Pink = 3 Black = 4 Yellow = 5 Mint = 7 Purple = 8 Black_Gold = 9 End Enum Private colorTypeMax As Int16 Private Enum altoColorList White = 0 Purple = 8 Black_Gold = 9 End Enum Private colorTypeAlto As Int16 Private Enum eftColorList White_Pink = 1 White_Sky = 2 White_Brown = 3 LineFriends_Brown = 4 LineFriends_Sally = 5 End Enum Private colorTypeEft As Int16 Private Enum alphaColorList Black = 1 End Enum Private colorTypeAlpha As Int16 Private Enum luxColorList White = 0 Black = 1 End Enum Private colorTypeLux As Int16 Private Enum proColorList White = 0 Black = 1 End Enum Private colorTypePro As Int16 Private Enum prodModelList prodPro = 1 prodLux prodMax prodAlpha prodAlto prodEffect prodMaxAlpha End Enum Private modelType As Int16 Private Enum csvDataList csvModel csvShot csvVersion csvProWeight csvLuxWeight csvMaxWeight csvOkNg csvSetSr csvFaceSr csvEyeSr csvBodySr csvEtcSr csvRefer End Enum Private Const prodLength As Int16 = 12 Private monCalNum As String Private monCalTime As Boolean Public InputCnt As Long Public InputCntVal As Integer = 10 Private DBCmd As String Private tmpCmdMessage As String Private cmdMessage, rxMessage, CsvRegData As String Private itemList As String Private runThread As Thread Private Delegate Sub commDelegate() Private commDelegateFunc As commDelegate Private Delegate Sub failDelegate(ngCount As Int16) Private failDelegateFunc As failDelegate Private Sub mainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load startSetting() formFullReset() '메인 화면 청소 dataSetting() configLoad() End Sub Private Sub txbProdSerial_TextChanged(sender As Object, e As EventArgs) Handles txbProdSerial.TextChanged Dim tmpStr As String If InputCnt = 0 And ckbBarcode.Checked = True Then tmpStr = txbProdSerial.Text If (Len(tmpStr) > 1) Then tmpStr = Mid(tmpStr, Len(tmpStr), 1) txbProdSerial.Clear() txbProdSerial.AppendText(tmpStr) End If SetInputCnt() End If End Sub Private Sub SetInputCnt() InputCnt = InputCntVal barTimer.Enabled = True End Sub Private Sub barTimer_Tick(sender As Object, e As EventArgs) Handles barTimer.Tick If InputCnt Then InputCnt -= 1 Else barTimer.Enabled = False If ckbBarcode.Checked Then btnSearch_Click(sender, e) Else txbProdSerial.Focus() txbProdSerial.Refresh() End If End If End Sub Private Sub startSetting() Const programName As String = "MAXIMUM FUNCTION DATA INFO VER." Const programVer As String = "1.1.5" Me.Text = programName & programVer Me.Size = New Size(1920, 1060) Me.Location = New Point(0, 0) ckbBarcode.Checked = True '' 기본 설정 ckbExcel.Checked = True rdbSearch.Checked = True End Sub Private Sub btnSerial_Click(sender As Object, e As EventArgs) Handles btnSerial.Click If btnSerial.Text = "스캔" Then If cmdSerial.IsOpen = True Then cmdSerial.Close() End If LoadComport() btnSerial.Text = "연결" Else openSerial(cboSerial.SelectedItem) btnSerial.Text = "스캔" End If txbProdSerial.Focus() End Sub Private Function openSerial(serialName As String) Try If serialName <> "" Or serialName <> Nothing Then With cmdSerial .PortName = serialName .BaudRate = 230400 .DataBits = 8 .Parity = Parity.None .StopBits = StopBits.One .Handshake = Handshake.None End With cmdSerial.Open() Return False Else MsgBox("통신 포트를 지정하여 주십시오.", vbCritical) Return True End If Return False Catch ex As Exception MsgBox("통신 포트 에러 !! :: " & ex.Message, vbCritical) Return True End Try End Function Private Sub LoadComport() Dim port() As String Try cboSerial.Items.Clear() port = SerialPort.GetPortNames For i = 0 To port.Length - 1 cboSerial.Items.Add(port(i)) Next cboSerial.Text = "PRESS!" Catch ex As Exception MsgBox("포트를 불러오는 도중 오류가 발생하였습니다. :: " & ex.Message, vbCritical) End Try End Sub Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click If txbProdSerial.Text = String.Empty Or txbProdSerial.Text.Replace(" ", "") = "" Then MsgBox("시리얼 번호를 입력하지 않았습니다.", vbExclamation) Exit Sub End If If txbProdSerial.Text.Length <> prodLength Then MsgBox("잘못된 시리얼 번호를 입력하였습니다.", vbExclamation) Exit Sub End If Dim prodSerial As String = txbProdSerial.Text If dataSearchFunc(prodSerial) Then txbProdSerial.BackColor = Color.Green If rdbWrite.Checked = True Or rdbDelete.Checked = True Or rdbReturn.Checked = True Then If ckbAutoReg.Checked = True Then TypeFunction() End If End If Else txbProdSerial.BackColor = Color.Red End If End Sub Private Sub TypeFunction() Select Case runMod Case formModList.Write If cmdSerial.IsOpen = True Then threadOn() Else MsgBox("통신 포트가 닫혀 있습니다!", vbExclamation) End If Case formModList.Delete runningcomm() Case formModList.ReturnP runningcomm() End Select End Sub Private Sub threadOff() runThread = New Thread(AddressOf threadRunFunc) If runThread.IsAlive = True Then runThread.Abort() End If txbRunState.Text = "대 기" txbRunState.BackColor = Color.White End Sub Private Sub threadOn() runThread = New Thread(AddressOf threadRunFunc) txbRunState.Text = "입력대기" txbRunState.BackColor = Color.DarkGray If runThread.IsAlive = True Then runThread.Abort() End If runThread.IsBackground = True runThread.Start() End Sub Const ngLimit As Int16 = 3 Private Sub threadRunFunc() Dim okNg As Boolean = False Dim ngCount As Int16 = 0 Do Until okNg = True Dim conCheck As String = shot_search() If IsNumeric(conCheck) And conCheck <> "-1" Then commDelegateFunc = New commDelegate(AddressOf runningcomm) Me.Invoke(commDelegateFunc) okNg = True End If Thread.Sleep(1000) If ngCount = ngLimit Then okNg = True End If ngCount += 1 Loop failDelegateFunc = New failDelegate(AddressOf loadFail) Me.Invoke(failDelegateFunc, ngCount) End Sub Private Sub loadFail(ngCount As Int16) If ngCount > ngLimit Then txbRunState.Text = "시간초과" txbRunState.BackColor = Color.Red End If End Sub Private Function shot_search() As String Dim retVal As String = "-1" tmpCmdMessage = "shotconf" cmdMessage = "[" & tmpCmdMessage & "]" + vbCrLf If SendData(cmdMessage) Then Return "-1" End If retVal = PollingReceiveData(1000) Return retVal End Function Private Sub startReset() For i = 0 To dbRegList.dbInfo dataOkNg(i) = True Next dataOkNg(dbRegList.DBALL) = False ReDim tdReadData(tdDataList.Grade) ReDim dotReadData(dotDataList.dotDepth) ReDim hifuReadData(hifuDataList.hifuData3) ReDim rfReadData(rfDataList.mcR2Freq) ReDim pd2ReadData(pd2DataList.pd2Max - 1) ReDim cartSerial(prodTypeList.cartEtc) End Sub Private Sub FormReset() For i = 0 To tdDataList.Grade With tdReadTxb(i) .Text = "대기" .BackColor = Color.White .Refresh() End With Next For i = 0 To dotDataList.dotDepth With dotReadTxb(i) .Text = "대기" .BackColor = Color.White .Refresh() End With Next For i = 0 To hifuDataList.hifuData1_txb With hifuReadTxb(i) .Text = "대기" .BackColor = Color.White .Refresh() End With Next For i = 0 To rfDataList.rfR2Vrms_txb3 With rfReadTxb(i) .Text = "대기" .BackColor = Color.White .Refresh() End With Next For i = 0 To pd2DataList.pd2Max - 1 With pd2ReadTxb(i) .Text = "대기" .BackColor = Color.White .Refresh() End With Next With txbReCount .Text = "대기" .BackColor = Color.White .Refresh() End With End Sub Private Function dataSearchFunc(prodSerial As String) As Boolean FormReset() startReset() prodSerialType(prodSerial) If prodSerialExist(prodSerial) Then '' 제품 시리얼 번호가 있는지 확인 Return False End If If prodSerialTD(prodSerial) Then '' TD 정보 검색 Return False End If If prodSerialDot(prodSerial) Then '' 도트 정보 검색 Return False End If If ckbopV1.Checked = True And modelType <> prodModelList.prodAlto Then If v1BeforeHifu() Then Return False End If If v1BeforeRF() Then Return False End If Else If prodSerialHIFU() Then '' hifu 테스트 결과 검색 Return False End If If modelType = prodModelList.prodMax Then If prodSerialRF() Then '' rf 테스트 결과 검색 Return False End If End If End If If prodSerialPD2(prodSerial) Then '' 정보 입력 결과 검색 Return False End If ReturnDataSearch() 'saveCsvData(prodSerial) If lastQCDBReg(prodSerial) Then Return False Else If saveCsvData(prodSerial) Then Return False End If End If Return True End Function Private Sub ReturnDataSearch() DBCmd = "SELECT IFNULL(MAX(ReturnCount),'0') FROM " & ApplyReturnDB & " where Product_SN = '" & txbProdSerial.Text & "'" txbReCount.Text = DBQueryScalar(DBCmd) End Sub Private Function saveCsvData(prodSerial As String) As Boolean '엑셀 파일로 저장' Try If ckbExcel.Checked = True Then Dim strData As String = String.Empty Dim shotData As String = String.Empty Dim rowData(,) As String Dim saveYear As String = Format(Now, "yyyy") Dim saveMonth As String = Format(Now, "MM") Dim saveDay As String = Format(Now, "dd") Dim firstRowData As String = "순번,모델,샷,버전,PRO 최종무게,LUX 최종무게,MAX 최종무게,합격여부,셋트 S/N,페이스 카트리지 S/N,아이 카트리지 S/N,바디 카트리지 S/N,기타 S/N,상세설명" & vbLf If pd2ReadData(pd2DataList.pd2Face) = "0" And pd2ReadData(pd2DataList.pd2Eye) = "0" Then shotData = "무제한" End If Dim saveRowData As String = pd2ReadData(pd2DataList.pd2Model) & "," & shotData & "," & hifuReadData(hifuDataList.hifuFW) & ",,,해당,합격," & cartSerial(prodTypeList.cartSet_V1) & "," & cartSerial(prodTypeList.cartFace_V2) & "," & cartSerial(prodTypeList.cartEye) & "," & cartSerial(prodTypeList.cartBody) & "," & cartSerial(prodTypeList.cartEtc) & "," & "" & vbLf Dim filePath As String = System.AppDomain.CurrentDomain.BaseDirectory & "\SaveData" If Dir(filePath, vbDirectory) = "" Then MkDir(filePath) End If Dim modelName As String = fileModelCompare() Dim typeName As String = fileTypeCompare() Dim colorName As String If modelName = "EFFECT" Then colorName = fileColorComareForEffectModel() ElseIf modelName = "ALTO" Then colorName = fileColorComareForAltoModel() ElseIf modelName = "MAXIMUM" Then colorName = fileColorComareForMaxModel() ElseIf modelName = "MAXIMUM AlPHA" Then colorName = fileColorComareForMaxAlphaModel() Else MsgBox("모델이 없습니다.") End If Dim fileName As String = filePath & "\" & saveYear & "-" & saveMonth & "-" & saveDay & "(" & modelName & "_" & typeName & "_" & colorName & ")" & ".csv" If File.Exists(fileName) Then strData = File.ReadAllText(fileName) strData = Mid(strData, InStr(strData, vbLf) + 1, strData.Length) If strData <> String.Empty Then Dim rowCount As Integer = UBound(Split(strData, vbLf)) - 1 ReDim rowData(csvDataList.csvRefer, rowCount) For i = 0 To rowCount Dim rowLineData As String = Mid(strData, 1, InStr(strData, vbLf) - 1) strData = Mid(strData, InStr(strData, vbLf) + 1, strData.Length) rowLineData = Mid(rowLineData, InStr(rowLineData, ",") + 1, rowLineData.Length) & "," For row = 0 To csvDataList.csvRefer rowData(row, i) = Mid(rowLineData, 1, InStr(rowLineData, ",") - 1) rowLineData = Mid(rowLineData, InStr(rowLineData, ",") + 1, rowLineData.Length) Next Next Dim chkSerial As Int16 = 0 Select Case searchType Case prodTypeList.cartSet_V1 chkSerial = csvDataList.csvSetSr Case prodTypeList.cartFace_V2 chkSerial = csvDataList.csvFaceSr Case prodTypeList.cartEye chkSerial = csvDataList.csvEyeSr Case prodTypeList.cartBody chkSerial = csvDataList.csvBodySr Case Else chkSerial = csvDataList.csvEtcSr End Select Dim delSwitch As Boolean = False For chk = 0 To rowData.GetLength(1) - 1 If rowData(chkSerial, chk) = prodSerial Then For del = 0 To csvDataList.csvRefer rowData(del, chk) = String.Empty Next delSwitch = True End If Next If delSwitch = True Then Dim nowRow As Integer = 0 For row = 0 To rowData.GetLength(1) - 1 If rowData(csvDataList.csvModel, row) <> String.Empty Then For csv = 0 To csvDataList.csvRefer rowData(csv, nowRow) = rowData(csv, row) Next nowRow += 1 End If Next ReDim Preserve rowData(csvDataList.csvRefer, nowRow - 1) End If Dim lastNum As Integer = 0 strData = String.Empty For row = 0 To rowData.GetLength(1) - 1 lastNum = row + 1 For csv = 0 To csvDataList.csvRefer If csv = csvDataList.csvRefer Then strData = strData & rowData(csv, row) & vbLf Else If csv = csvDataList.csvModel Then strData = strData & lastNum & "," & rowData(csv, row) & "," Else strData = strData & rowData(csv, row) & "," End If End If Next Next lastNum += 1 strData = firstRowData & strData & lastNum & "," & saveRowData Else strData = firstRowData & "1," & saveRowData End If Else strData = firstRowData & "1," & saveRowData End If File.WriteAllText(fileName, strData, System.Text.Encoding.UTF8) End If Return False Catch ex As Exception MsgBox("csv 저장 오류 발생!! :: " & ex.Message, vbCritical) Return True End Try End Function Private Function fileTypeCompare() As String Select Case searchType Case prodTypeList.cartSet_V1 Return "SET_V1" Case prodTypeList.cartFace_V2 Return "FACE_V2" Case prodTypeList.cartEye Return "EYE" Case prodTypeList.cartBody Return "BODY_V3" 'BODY Case Else Return "ETC" End Select End Function Private Function fileModelCompare() As String Select Case modelType Case prodModelList.prodPro Return "PRO" Case prodModelList.prodLux Return "LUX" Case prodModelList.prodMax Return "MAXIMUM" Case prodModelList.prodAlpha Return "ALPHA" Case prodModelList.prodAlto Return "ALTO" Case prodModelList.prodEffect Return "EFFECT" Case prodModelList.prodMaxAlpha Return "MAXIMUM ALPHA" Case Else Return "ETC" End Select End Function Private Function fileColorComareForAltoModel() As String 'Alto model color' Select Case colorTypeAlto Case altoColorList.White Return "White" Case altoColorList.Purple Return "Purple" Case altoColorList.Black_Gold Return "BlackGold" Case Else Return "ETC" End Select End Function Private Function fileColorComareForEffectModel() As String 'effect model color' Select Case colorTypeEft Case eftColorList.White_Pink Return "WhitePink" Case eftColorList.White_Sky Return "WhiteSky" Case eftColorList.White_Brown Return "WhiteBrown" Case eftColorList.White_Brown Return "WhiteBrown" Case eftColorList.LineFriends_Brown Return "LineFriendsBrown" Case eftColorList.LineFriends_Sally Return "LineFriendsSally" Case Else Return "ETC" End Select End Function Private Function fileColorComareForMaxAlphaModel() As String 'Maximum alpha model color' Select Case colorTypeMaxAlpha Case maxAlphaColorList.Ruby_Red Return "RubyRed" Case maxAlphaColorList.Topaz_Orange Return "TopazOrange" Case maxAlphaColorList.Emerald_Green Return "EmeraldGreen" Case maxAlphaColorList.Sapphire_Blue Return "SapphireBlue" Case maxAlphaColorList.Topaz_Brown Return "TopazBrown" Case maxAlphaColorList.Sitrin_Gold Return "SitrinGold" Case Else Return "ETC" End Select End Function Private Function fileColorComareForMaxModel() As String 'Maximum model color' Select Case colorTypeMax Case maxColorList.White Return "White" Case maxColorList.ShineMint Return "ShineMint" Case maxColorList.Pink Return "Pink" Case maxColorList.Black Return "Black" Case maxColorList.Yellow Return "Yellow" Case maxColorList.Mint Return "Mint" Case maxColorList.Purple Return "Purple" Case maxColorList.Black_Gold Return "BlackGold" Case Else Return "etc" End Select End Function Private Function fileColorCompareAltoModel() As String Select Case colorTypeAlto Case altoColorList.White Return "White" Case altoColorList.Purple Return "Purple" Case altoColorList.Black_Gold Return "BlackGold" Case Else Return "etc" End Select End Function Private Function fileColorCompareAlphaModel() As String Select Case colorTypeAlpha Case alphaColorList.Black Return "Black" Case Else Return "etc" End Select End Function Private Function fileColorCompareLuxModel() As String Select Case colorTypeLux Case luxColorList.White Return "White" Case luxColorList.Black Return "Black" Case Else Return "etc" End Select End Function Private Function fileColorCompareProModel() As String Select Case colorTypePro Case proColorList.White Return "White" Case proColorList.Black Return "Black" Case Else Return "etc" End Select End Function Private Function lastQCDBReg(prodSerial As String) As Boolean If ckbopTD.Checked = True Then If dataOkNg(dbRegList.dbTD) = False Then MsgBox("TD 정보 중 불량 데이터 존재", vbCritical) Return True End If End If If ckbopDot.Checked = True Then If dataOkNg(dbRegList.dbDot) = False Then MsgBox("DOT 정보 중 불량 데이터 존재", vbCritical) Return True End If End If If ckbopHifu.Checked = True Then If dataOkNg(dbRegList.dbHifu) = False Then MsgBox("HIFU 정보 중 불량 데이터 존재", vbCritical) Return True End If End If If ckbopWave.Checked = True Then If dataOkNg(dbRegList.dbWave) = False Then MsgBox("파형 정보 중 불량 데이터 존재", vbCritical) Return True End If End If If ckbopInfo.Checked = True Then If dataOkNg(dbRegList.dbInfo) = False Then MsgBox("정보입력 정보 중 불량 데이터 존재", vbCritical) Return True End If End If Dim regDate As String = Format(Now, "yyyy") & "-" & Format(Now, "MM") & "-" & Format(Now, "dd") Dim regTime As String = Format(Now, "HH") & ":" & Format(Now, "mm") & ":" & Format(Now, "ss") DBCmd = "UPDATE " & applyCartDB & " SET LastQC_Date = '" & regDate & "', LastQC_Time = '" & regTime & "' WHERE Product_SN = '" & prodSerial & "'" If DBCommand(DBCmd) Then dataOkNg(dbRegList.DBALL) = True Return False Else MsgBox("서버에 데이터 등록 중 오류가 발생하였습니다.", vbCritical) Return True End If End Function Private Function v1BeforeRF() As Boolean DBCmd = "SELECT CONVERT(P1_Date,CHAR),CONVERT(P1_Time,CHAR) FROM " & applyCartDB & " WHERE PV_SN = '" & tdReadData(tdDataList.TDSN) & "'" If DBQueryReader(DBCmd) Then txbRDate_M1.Text = sqlDataQuery(0) txbRTime_M1.Text = sqlDataQuery(1) txbRRF_M1.Text = "합격" txbRMC_M1.Text = "합격" txbREP_M1.Text = "합격" txbRDate_M1.BackColor = Color.Green txbRTime_M1.BackColor = Color.Green txbRRF_M1.BackColor = Color.Green txbRMC_M1.BackColor = Color.Green txbREP_M1.BackColor = Color.Green Return False Else GoTo DataFail End If DataFail: For i = 0 To rfDataList.rfR2Vrms_txb3 rfReadData(i) = "NULL" rfReadTxb(i).Text = rfReadData(i) rfReadTxb(i).BackColor = Color.Red Next Return True End Function Private Function prodSerialRF() As Boolean DBCmd = "SELECT CONVERT(TestDate,CHAR),CONVERT(TestTime,CHAR),RF_R1Vrms,RF_R1Freq,RF_R2Vrms,RF_R2Freq,RF_R3Vrms,RF_R3Freq,EP_R1Vpp,EP_R1Freq,EP_R1PWidth,EP_R1NWidth,EP_R2Vpp,EP_R2Freq,EP_R2PWidth,EP_R2NWidth,EP_R3Vpp,EP_R3Freq,EP_R3PWidth,EP_R3NWidth,MC_R1Wave,MC_R1Vpp,MC_R1Freq,MC_R2Wave,MC_R2Vpp,MC_R2Freq FROM " & applyRFDB & " WHERE PV_SN = '" & tdReadData(tdDataList.TDSN) & "'" If DBQueryReader(DBCmd) Then If rfDataList.mcR2Freq = sqlDataQuery.Length - 1 Then For i = 0 To rfDataList.mcR2Freq rfReadData(i) = sqlDataQuery(i) Next For i = 0 To rfDataList.rfR2Vrms_txb3 Dim oKNG As Boolean = False If TDUseCompare = True Then Select Case i Case rfDataList.rfR1Vrms_txb1 If Val(rfReadData(rfDataList.rfR1Vrms_txb1)) >= Val(txboptg1_VrMin.Text) And Val(rfReadData(rfDataList.rfR1Vrms_txb1)) <= Val(txboptg1_VrMax.Text) Then If Val(rfReadData(rfDataList.rfR1Freq_txb2)) >= Val(txboptg1_FrMin.Text) And Val(rfReadData(rfDataList.rfR1Freq_txb2)) <= Val(txboptg1_FrMax.Text) Then If Val(rfReadData(rfDataList.rfR2Vrms_txb3)) >= Val(txboptg2_VrMin.Text) And Val(rfReadData(rfDataList.rfR2Vrms_txb3)) <= Val(txboptg2_VrMax.Text) Then If Val(rfReadData(rfDataList.rfR2Freq)) >= Val(txboptg2_FrMin.Text) And Val(rfReadData(rfDataList.rfR2Freq)) <= Val(txboptg2_FrMax.Text) Then If Val(rfReadData(rfDataList.rfR3Vrms)) >= Val(txboptg3_VrMin.Text) And Val(rfReadData(rfDataList.rfR3Vrms)) <= Val(txboptg3_VrMax.Text) Then If Val(rfReadData(rfDataList.rfR3Freq)) >= Val(txboptg3_FrMin.Text) And Val(rfReadData(rfDataList.rfR3Freq)) <= Val(txboptg3_FrMax.Text) Then rfReadData(i) = "합격" oKNG = True Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Case rfDataList.rfR1Freq_txb2 If Val(rfReadData(rfDataList.mcR1Wave)) >= Val(txbopdy1_DtMin.Text) And Val(rfReadData(rfDataList.mcR1Wave)) <= Val(txbopdy1_DtMax.Text) Then If Val(rfReadData(rfDataList.mcR1Vpp)) >= Val(txbopdy1_VpMin.Text) And Val(rfReadData(rfDataList.mcR1Vpp)) <= Val(txbopdy1_VpMax.Text) Then If Val(rfReadData(rfDataList.mcR1Freq)) >= Val(txbopdy1_FrMin.Text) And Val(rfReadData(rfDataList.mcR1Freq)) <= Val(txbopdy1_FrMax.Text) Then If Val(rfReadData(rfDataList.mcR2Wave)) >= Val(txbopdy2_DtMin.Text) And Val(rfReadData(rfDataList.mcR2Wave)) <= Val(txbopdy2_DtMax.Text) Then If Val(rfReadData(rfDataList.mcR2Vpp)) >= Val(txbopdy2_VpMin.Text) And Val(rfReadData(rfDataList.mcR2Vpp)) <= Val(txbopdy2_VpMax.Text) Then If Val(rfReadData(rfDataList.mcR2Freq)) >= Val(txbopdy2_FrMin.Text) And Val(rfReadData(rfDataList.mcR2Freq)) <= Val(txbopdy2_FrMax.Text) Then rfReadData(i) = "합격" oKNG = True Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Case rfDataList.rfR2Vrms_txb3 If Val(rfReadData(rfDataList.epR1Vpp)) >= Val(txbopcs1_VpMin.Text) And Val(rfReadData(rfDataList.epR1Vpp)) <= Val(txbopcs1_VpMax.Text) Then If Val(rfReadData(rfDataList.epR1Freq)) >= Val(txbopcs1_FrMin.Text) And Val(rfReadData(rfDataList.epR1Freq)) <= Val(txbopcs1_FrMax.Text) Then Dim pnWidth As Single = Val(rfReadData(rfDataList.epR1PWidth)) - Val(rfReadData(rfDataList.epR1NWidth)) If Abs(pnWidth) < Val(txbopcs1_DyRg.Text) Then If Val(rfReadData(rfDataList.epR2Vpp)) >= Val(txbopcs2_VpMin.Text) And Val(rfReadData(rfDataList.epR2Vpp)) <= Val(txbopcs2_VpMax.Text) Then If Val(rfReadData(rfDataList.epR2Freq)) >= Val(txbopcs2_FrMin.Text) And Val(rfReadData(rfDataList.epR2Freq)) <= Val(txbopcs2_FrMax.Text) Then pnWidth = Val(rfReadData(rfDataList.epR2PWidth)) - Val(rfReadData(rfDataList.epR2NWidth)) If Abs(pnWidth) < Val(txbopcs2_DyRg.Text) Then If Val(rfReadData(rfDataList.epR3Vpp)) >= Val(txbopcs3_VpMin.Text) And Val(rfReadData(rfDataList.epR3Vpp)) <= Val(txbopcs3_VpMax.Text) Then If Val(rfReadData(rfDataList.epR3Freq)) >= Val(txbopcs3_FrMin.Text) And Val(rfReadData(rfDataList.epR3Freq)) <= Val(txbopcs3_FrMax.Text) Then pnWidth = Val(rfReadData(rfDataList.epR3PWidth)) - Val(rfReadData(rfDataList.epR3NWidth)) If Abs(pnWidth) < Val(txbopcs3_DyRg.Text) Then rfReadData(i) = "합격" oKNG = True Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Case Else oKNG = True End Select Else Select Case i Case rfDataList.rfR1Vrms_txb1 If Val(rfReadData(rfDataList.rfR1Vrms_txb1)) >= Val(txboptg1_VrMinAT.Text) And Val(rfReadData(rfDataList.rfR1Vrms_txb1)) <= Val(txboptg1_VrMaxAT.Text) Then If Val(rfReadData(rfDataList.rfR1Freq_txb2)) >= Val(txboptg1_FrMinAT.Text) And Val(rfReadData(rfDataList.rfR1Freq_txb2)) <= Val(txboptg1_FrMaxAT.Text) Then If Val(rfReadData(rfDataList.rfR2Vrms_txb3)) >= Val(txboptg2_VrMinAT.Text) And Val(rfReadData(rfDataList.rfR2Vrms_txb3)) <= Val(txboptg2_VrMaxAT.Text) Then If Val(rfReadData(rfDataList.rfR2Freq)) >= Val(txboptg2_FrMinAT.Text) And Val(rfReadData(rfDataList.rfR2Freq)) <= Val(txboptg2_FrMaxAT.Text) Then If Val(rfReadData(rfDataList.rfR3Vrms)) >= Val(txboptg3_VrMinAT.Text) And Val(rfReadData(rfDataList.rfR3Vrms)) <= Val(txboptg3_VrMaxAT.Text) Then If Val(rfReadData(rfDataList.rfR3Freq)) >= Val(txboptg3_FrMinAT.Text) And Val(rfReadData(rfDataList.rfR3Freq)) <= Val(txboptg3_FrMaxAT.Text) Then rfReadData(i) = "합격" oKNG = True Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Case rfDataList.rfR1Freq_txb2 rfReadData(i) = "NULL" oKNG = True Case rfDataList.rfR2Vrms_txb3 If Val(rfReadData(rfDataList.epR1Vpp)) >= Val(txbopcs1_VpMinAT.Text) And Val(rfReadData(rfDataList.epR1Vpp)) <= Val(txbopcs1_VpMaxAT.Text) Then If Val(rfReadData(rfDataList.epR1Freq)) >= Val(txbopcs1_FrMinAT.Text) And Val(rfReadData(rfDataList.epR1Freq)) <= Val(txbopcs1_FrMaxAT.Text) Then Dim pnWidth As Single = Val(rfReadData(rfDataList.epR1PWidth)) - Val(rfReadData(rfDataList.epR1NWidth)) If Abs(pnWidth) < Val(txbopcs1_DyRgAT.Text) Then If Val(rfReadData(rfDataList.epR2Vpp)) >= Val(txbopcs2_VpMinAT.Text) And Val(rfReadData(rfDataList.epR2Vpp)) <= Val(txbopcs2_VpMaxAT.Text) Then If Val(rfReadData(rfDataList.epR2Freq)) >= Val(txbopcs2_FrMinAT.Text) And Val(rfReadData(rfDataList.epR2Freq)) <= Val(txbopcs2_FrMaxAT.Text) Then pnWidth = Val(rfReadData(rfDataList.epR2PWidth)) - Val(rfReadData(rfDataList.epR2NWidth)) If Abs(pnWidth) < Val(txbopcs2_DyRgAT.Text) Then If Val(rfReadData(rfDataList.epR3Vpp)) >= Val(txbopcs3_VpMinAT.Text) And Val(rfReadData(rfDataList.epR3Vpp)) <= Val(txbopcs3_VpMaxAT.Text) Then If Val(rfReadData(rfDataList.epR3Freq)) >= Val(txbopcs3_FrMinAT.Text) And Val(rfReadData(rfDataList.epR3Freq)) <= Val(txbopcs3_FrMaxAT.Text) Then pnWidth = Val(rfReadData(rfDataList.epR3PWidth)) - Val(rfReadData(rfDataList.epR3NWidth)) If Abs(pnWidth) < Val(txbopcs3_DyRgAT.Text) Then rfReadData(i) = "합격" oKNG = True Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Else rfReadData(i) = "불합격" dataOkNg(dbRegList.dbWave) = False End If Case Else oKNG = True End Select End If dataResult(rfReadTxb(i), rfReadData(i), oKNG) Next Else GoTo FailData End If Return False Else GoTo FailData End If FailData: For i = 0 To rfDataList.rfR2Vrms_txb3 rfReadData(i) = "NULL" rfReadTxb(i).Text = rfReadData(i) rfReadTxb(i).BackColor = Color.Red Next Return True End Function Private Function v1BeforeHifu() DBCmd = "SELECT CONVERT(P1_Date,CHAR),CONVERT(P1_Time,CHAR),P1_Frequency FROM " & applyCartDB & " WHERE PV_SN = '" & tdReadData(tdDataList.TDSN) & "'" If DBQueryReader(DBCmd) Then txbHDate_M1.Text = sqlDataQuery(0) txbHTime_M1.Text = sqlDataQuery(1) txbHFreq_M1.Text = sqlDataQuery(2) hifuReadData(hifuDataList.hifuFreq) = sqlDataQuery(2) txbHFW_M1.Text = "1.0.9" hifuReadData(hifuDataList.hifuFW) = txbHFW_M1.Text txbHBettery_M1.Text = "합격" txbHCtemp_M1.Text = "합격" txbHDtemp_M1.Text = "합격" txbHHifu_M1.Text = "합격" txbHDate_M1.BackColor = Color.Green txbHTime_M1.BackColor = Color.Green txbHFreq_M1.BackColor = Color.Green txbHFW_M1.BackColor = Color.Green txbHBettery_M1.BackColor = Color.Green txbHCtemp_M1.BackColor = Color.Green txbHDtemp_M1.BackColor = Color.Green txbHHifu_M1.BackColor = Color.Green Return False Else GoTo DataFail End If DataFail: For i = 0 To hifuDataList.hifuData1_txb hifuReadData(i) = "NULL" hifuReadTxb(i).Text = hifuReadData(i) hifuReadTxb(i).BackColor = Color.Red Next Return True End Function Private Function prodSerialHIFU() As Boolean Dim ForCnt As Int16 If TDUseCompare = True Then DBCmd = "SELECT CONVERT(h.TestDate,CHAR),CONVERT(h.TestTime,CHAR),h.FW_Ver,h.BatteryLv,h.DivTemp,h.CtTemp,c.P1_Frequency,h.HF_R1Value,h.HF_R2Value,h.HF_R3Value FROM " & applyCartDB & " AS c INNER JOIN " & applyHIFUDB & " AS h ON c.PV_SN = h.PV_SN WHERE h.PV_SN = '" & tdReadData(tdDataList.TDSN) & "'" If DBQueryReader(DBCmd) Then ForCnt = hifuDataList.hifuData1_txb If hifuDataList.hifuData3 = sqlDataQuery.Length - 1 Then ReDim hifuReadData(sqlDataQuery.Length - 1) For i = 0 To sqlDataQuery.Length - 1 hifuReadData(i) = sqlDataQuery(i) Next Else GoTo DataFail End If Else GoTo DataFail End If Else DBCmd = "SELECT DATE_FORMAT(P1_DateTime,'%Y-%m-%d'),DATE_FORMAT(P1_DateTime,'%H:%i:%S'),Fw_Ver,BatteryLv,DivTemp,CtTemp FROM " & applyNonTDDB & " WHERE PV_SN = '" & tdReadData(tdDataList.TDSN) & "'" If DBQueryReader(DBCmd) Then ForCnt = hifuDataList.hifuCtemp If hifuDataList.hifuCtemp = sqlDataQuery.Length - 1 Then ReDim hifuReadData(sqlDataQuery.Length - 1) For i = 0 To sqlDataQuery.Length - 1 hifuReadData(i) = sqlDataQuery(i) Next End If Else GoTo DataFail End If End If For i = 0 To ForCnt Dim OkNg As Boolean = False If TDUseCompare = True Then Select Case i Case hifuDataList.hifuFW If hifuReadData(i) = txbopFW.Text Then OkNg = True End If Case hifuDataList.hifuBaterry If Val(hifuReadData(i)) >= Val(txbopBat_RgMin.Text) And Val(hifuReadData(i)) <= Val(txbopBat_RgMax.Text) Then '' 배터리 상태 확인 hifuReadData(i) = "합격" OkNg = True Else hifuReadData(i) = "불합격" dataOkNg(dbRegList.dbHifu) = False End If Case hifuDataList.hifuDtemp If Val(hifuReadData(i)) >= Val(txbopDiv_TpMin.Text) And Val(hifuReadData(i)) <= Val(txbopDiv_TpMax.Text) Then '' 본체 온도 확인 hifuReadData(i) = "합격" OkNg = True Else hifuReadData(i) = "불합격" dataOkNg(dbRegList.dbHifu) = False End If Case hifuDataList.hifuCtemp If Val(hifuReadData(i)) >= Val(txbopCt_TpMin.Text) And Val(hifuReadData(i)) <= Val(txbopCt_TpMax.Text) Then '' 카트리지 온도 확인 hifuReadData(i) = "합격" OkNg = True Else hifuReadData(i) = "불합격" dataOkNg(dbRegList.dbHifu) = False End If Case hifuDataList.hifuFreq If Val(hifuReadData(i)) >= Val(txbOpFreq_RgMin.Text) And Val(hifuReadData(i)) <= Val(txbOpFreq_RgMax.Text) Then '' 주파수 확인 OkNg = True End If Case hifuDataList.hifuData1_txb If Val(hifuReadData(i)) >= Val(txbopHF1_TpMin.Text) And Val(hifuReadData(i)) <= Val(txbopHF1_TpMax.Text) Then '' hifu 확인 If Val(hifuReadData(i + 1)) >= Val(txbopHF2_TpMin.Text) And Val(hifuReadData(i + 1)) <= Val(txbopHF2_TpMax.Text) Then If Val(hifuReadData(i + 2)) >= Val(txbopHF3_TpMin.Text) And Val(hifuReadData(i + 2)) <= Val(txbopHF3_TpMax.Text) Then Dim hifuData12 As Single = Val(hifuReadData(i + 1)) - Val(hifuReadData(i)) Dim hifuData23 As Single = Val(hifuReadData(i + 2)) - Val(hifuReadData(i + 1)) If Abs(hifuData12) < Val(txbopHF12_Tp.Text) Then hifuReadData(i) = "합격" OkNg = True Else hifuReadData(i) = "불합격" dataOkNg(dbRegList.dbHifu) = False End If Else hifuReadData(i) = "불합격" dataOkNg(dbRegList.dbHifu) = False End If Else hifuReadData(i) = "불합격" dataOkNg(dbRegList.dbHifu) = False End If Else hifuReadData(i) = "불합격" dataOkNg(dbRegList.dbHifu) = False End If Case Else OkNg = True End Select Else Select Case i Case hifuDataList.hifuFW If hifuReadData(i) = txbopFW_AT.Text Then OkNg = True End If Case hifuDataList.hifuBaterry If Val(hifuReadData(i)) >= Val(txbopBat_RgMinAT.Text) And Val(hifuReadData(i)) <= Val(txbopBat_RgMaxAT.Text) Then '' 배터리 상태 확인 hifuReadData(i) = "합격" OkNg = True Else hifuReadData(i) = "불합격" dataOkNg(dbRegList.dbHifu) = False End If Case hifuDataList.hifuDtemp If Val(hifuReadData(i)) >= Val(txbopDiv_TpMinAT.Text) And Val(hifuReadData(i)) <= Val(txbopDiv_TpMaxAT.Text) Then '' 본체 온도 확인 hifuReadData(i) = "합격" OkNg = True Else hifuReadData(i) = "불합격" dataOkNg(dbRegList.dbHifu) = False End If Case hifuDataList.hifuCtemp If Val(hifuReadData(i)) >= Val(txbopCt_TpMinAT.Text) And Val(hifuReadData(i)) <= Val(txbopCt_TpMaxAT.Text) Then '' 카트리지 온도 확인 hifuReadData(i) = "합격" OkNg = True Else hifuReadData(i) = "불합격" dataOkNg(dbRegList.dbHifu) = False End If Case Else OkNg = True End Select End If dataResult(hifuReadTxb(i), hifuReadData(i), OkNg) Next Return False DataFail: For i = 0 To hifuDataList.hifuData1_txb hifuReadData(i) = "NULL" hifuReadTxb(i).Text = hifuReadData(i) hifuReadTxb(i).BackColor = Color.Red Next Return True End Function Private Sub dataResult(setTextbox As TextBox, outData As String, OkNg As Boolean) If OkNg = True Then setTextbox.Text = outData setTextbox.BackColor = Color.Green Else setTextbox.Text = outData setTextbox.BackColor = Color.Red End If End Sub Private Function prodSerialPD2(prodSerial As String) As Boolean If TDUseCompare = True Then DBCmd = "SELECT CONVERT(P3_DateTime,CHAR), IFNULL(Manufacture_Date,'') as Manufacture_Date, Ct_SN,Ct_Manufacture_Name,Ct_Model,Ct_Type,Ct_Max_ShotCnt,Ct_Remain_ShotCnt,Ct_Abroad,Ct_Agency FROM " & applyCartDB & " WHERE Product_SN = '" & prodSerial & "'" Else DBCmd = "SELECT CONVERT(P3_DateTime,CHAR), IFNULL(Manufacture_Date,'') as Manufacture_Date, Ct_SN,Ct_Manufacture_Name,Ct_Model,Ct_Type,Ct_Abroad,Ct_Agency FROM " & applyNonTDDB & " WHERE Product_SN = '" & prodSerial & "'" End If If DBQueryReader(DBCmd) Then For i = 0 To sqlDataQuery.Length - 1 If sqlDataQuery(i).ToString <> "N" Then pd2ReadData(i) = sqlDataQuery(i) pd2ReadTxb(i).Text = pd2ReadData(i) pd2ReadTxb(i).BackColor = Color.Green Else If i = pd2DataList.prodDate Then pd2ReadData(i) = "NULL" pd2ReadTxb(i).Text = pd2ReadData(i) pd2ReadTxb(i).BackColor = Color.Yellow ' 노란색으로 표시 ' dataOkNg는 False로 설정하지 않음 Else pd2ReadData(i) = "NULL" pd2ReadTxb(i).Text = pd2ReadData(i) pd2ReadTxb(i).BackColor = Color.Red dataOkNg(dbRegList.dbInfo) = False ' 다른 필드는 False로 설정 End If End If Next If pd2ReadData(pd2DataList.pd2Model) <> modelCompare() Then pd2ReadTxb(pd2DataList.pd2Model).BackColor = Color.Red dataOkNg(dbRegList.dbInfo) = False End If If pd2ReadData(pd2DataList.pd2Type) <> typeCompare() Then If pd2ReadData(pd2DataList.pd2Type) <> typeDifferent() Then pd2ReadTxb(pd2DataList.pd2Type).BackColor = Color.Red dataOkNg(dbRegList.dbInfo) = False End If End If Return False Else For i = 0 To pd2DataList.pd2Max - 1 If i = pd2DataList.prodDate Then pd2ReadData(i) = "NULL" pd2ReadTxb(i).Text = pd2ReadData(i) pd2ReadTxb(i).BackColor = Color.Yellow ' 노란색 Else pd2ReadData(i) = "NULL" pd2ReadTxb(i).Text = pd2ReadData(i) pd2ReadTxb(i).BackColor = Color.Red End If Next Return True End If End Function Private Function typeCompare() As String Select Case searchType Case prodTypeList.cartSet_V1, prodTypeList.cartFace_V2 Return "SET" Case Else Return "FAIL" End Select End Function Private Function typeDifferent() As String If modelType = prodModelList.prodEffect Then Select Case searchType Case prodVersionList.cartSet_V2 Return "V2" Case prodVersionList.cart_V3 Return "V3" Case Else Return "FAIL" End Select Else Select Case searchType Case prodTypeList.cartSet_V1 Return "V1" Case prodTypeList.cartFace_V2 Return "V2" Case Else Return "FAIL" End Select End If End Function Private Function modelCompare() As String Select Case modelType Case prodModelList.prodPro Return "PRO" Case prodModelList.prodLux Return "LUX" Case prodModelList.prodMax Return "MAXIMUM" Case prodModelList.prodAlpha Return "ALPHA" Case prodModelList.prodAlto Return "ALTO" Case prodModelList.prodEffect Return "EFFECT" Case prodModelList.prodMaxAlpha Return "MAXIMUM ALPHA" Case Else Return "FAIL" End Select End Function Private Function prodSerialDot(prodSerial As String) As Boolean If TDUseCompare = True Then DBCmd = "SELECT CONVERT(P1_Date,CHAR),CONVERT(P1_Time,Char),Ct_Power,Ct_Motor_Lv FROM " & applyCartDB & " WHERE Product_SN = '" & prodSerial & "'" If DBQueryReader(DBCmd) Then For i = 0 To dotDataList.dotDepth If sqlDataQuery(i).ToString <> "N" Then dotReadData(i) = sqlDataQuery(i) dotReadTxb(i).Text = dotReadData(i) dotReadTxb(i).BackColor = Color.Green Else dataOkNg(dbRegList.dbDot) = False dotReadData(i) = "NULL" dotReadTxb(i).Text = dotReadData(i) dotReadTxb(i).BackColor = Color.Red End If Next Return False Else For i = 0 To dotDataList.dotDepth dotReadData(i) = "NULL" dotReadTxb(i).Text = dotReadData(i) dotReadTxb(i).BackColor = Color.Red Next Return True End If Else Return False End If End Function Private Function prodSerialTD(prodSerial As String) As Boolean If TDUseCompare = True Then DBCmd = "SELECT PV_SN,CONVERT(PV_Date,CHAR),CONVERT(QC_Date,CHAR),CONVERT(QC_Time,CHAR),QC_Grade FROM " & applyCartDB & " WHERE Product_SN = '" & prodSerial & "'" If DBQueryReader(DBCmd) Then For i = 0 To tdDataList.Grade If sqlDataQuery(i).ToString <> "N" Then tdReadData(i) = sqlDataQuery(i) tdReadTxb(i).Text = tdReadData(i) tdReadTxb(i).BackColor = Color.Green Else tdReadData(i) = "NULL" tdReadTxb(i).Text = tdReadData(i) tdReadTxb(i).BackColor = Color.Red dataOkNg(dbRegList.dbTD) = False End If Next Return False Else For i = 0 To tdDataList.Grade tdReadData(i) = "NULL" tdReadTxb(i).Text = tdReadData(i) tdReadTxb(i).BackColor = Color.Red Next Return True End If Else DBCmd = "SELECT PV_SN FROM " & applyNonTDDB & " WHERE Product_SN = '" & prodSerial & "'" tdReadData(tdDataList.TDSN) = DBQueryScalar(DBCmd) If tdReadData(tdDataList.TDSN) = "False" Then MsgBox("Board 번호를 확인할 수 없습니다.", vbCritical) Return True End If For i = 0 To tdDataList.Grade If i <> tdDataList.TDSN Then tdReadData(i) = "NULL" tdReadTxb(i).Text = tdReadData(i) Else tdReadTxb(i).Text = tdReadData(i) tdReadTxb(i).BackColor = Color.Green End If Next Return False End If End Function Private Sub prodSerialType(prodSerial As String) modelType = Mid(prodSerial, 1, 1) searchType = Mid(prodSerial, 2, 1) Dim tmpColor = Mid(prodSerial, 11, 1) If (modelType = prodModelList.prodEffect) Then colorTypeEft = tmpColor ElseIf (modelType = prodModelList.prodMaxAlpha) Then colorTypeMaxAlpha = tmpColor ElseIf (modelType = prodModelList.prodMax) Then colorTypeMax = tmpColor ElseIf (modelType = prodModelList.prodAlto) Then colorTypeAlto = tmpColor Else MsgBox("시리얼 넘버 확인") End If If modelType = prodModelList.prodPro Or modelType = prodModelList.prodLux Or modelType = prodModelList.prodAlpha Then TDUseCompare = True Select Case searchType Case prodTypeList.cartSet_V1 cartSerial(prodTypeList.cartSet_V1) = prodSerial Case prodTypeList.cartFace_V2 cartSerial(prodTypeList.cartFace_V2) = prodSerial Case prodTypeList.cartEye cartSerial(prodTypeList.cartEye) = prodSerial Case prodTypeList.cartBody cartSerial(prodTypeList.cartBody) = prodSerial Case Else cartSerial(prodTypeList.cartEtc) = prodSerial End Select Else If modelType = prodModelList.prodMax Then TDUseCompare = True Select Case searchType Case prodTypeList.cartSet_V1 cartSerial(prodTypeList.cartSet_V1) = prodSerial Case prodTypeList.cartFace_V2 cartSerial(prodTypeList.cartFace_V2) = prodSerial Case Else cartSerial(prodTypeList.cartEtc) = prodSerial End Select ElseIf modelType = prodModelList.prodEffect Then TDUseCompare = True Select Case searchType Case prodTypeList.cartSet_V1 cartSerial(prodTypeList.cartSet_V1) = prodSerial Case Else cartSerial(prodTypeList.cartEtc) = prodSerial End Select ElseIf modelType = prodModelList.prodMaxAlpha Then TDUseCompare = True Select Case searchType Case prodTypeList.cartSet_V1 cartSerial(prodTypeList.cartSet_V1) = prodSerial Case Else cartSerial(prodTypeList.cartEtc) = prodSerial End Select ElseIf modelType = prodModelList.prodAlto Then TDUseCompare = False Select Case searchType Case prodTypeList.cartSet_V1 cartSerial(prodTypeList.cartSet_V1) = prodSerial Case Else cartSerial(prodTypeList.cartEtc) = prodSerial End Select Else TDUseCompare = False Select Case searchType Case prodTypeList.cartSet_V1 cartSerial(prodTypeList.cartSet_V1) = prodSerial Case Else cartSerial(prodTypeList.cartEtc) = prodSerial End Select End If End If End Sub Private Function prodSerialExist(prodSerial As String) As Boolean If TDUseCompare = True Then DBCmd = "SELECT COUNT(PV_SN) FROM " & applyCartDB & " WHERE Product_SN = '" & prodSerial & "'" Else DBCmd = "SELECT COUNT(PV_SN) FROM " & applyNonTDDB & " WHERE Product_SN = '" & prodSerial & "'" End If Dim sqlResult As String = DBQueryScalar(DBCmd) If sqlResult = "False" Then MsgBox("제품 시리얼 번호를 가져오는데에 오류가 발생하였습니다.", vbCritical) Return True End If If Val(sqlResult) > 0 Then Return False Else MsgBox("제품 시리얼 번호가 존재하지 않습니다." & vbCrLf & "정보 입력을 진행하여 주십시오.", vbExclamation) Return True End If End Function Private Sub btnExcel_Click(sender As Object, e As EventArgs) Handles btnExcel.Click Try If btnExcel.Text = "열 기" Then If cboCsvColor.SelectedIndex = -1 Or cboCsvProd.SelectedIndex = -1 Then MsgBox("제품 및 색상 선택을 진행하지 않았습니다.", vbExclamation) Exit Sub End If Dim modelText As String = loadCsvModel() Dim typeText As String = loadCsvType() Dim colorText As String = loadCsvColor() Dim openFile As String = System.AppDomain.CurrentDomain.BaseDirectory & "SaveData\" & Format(Now, "yyyy-MM-dd") & "(" & modelText & "_" & typeText & "_" & colorText & ")" & ".csv" Process.Start(openFile) pnCsv.Visible = False btnReset.Visible = True btnExcel.Text = "금일 Excel" Else cboCsvProd.SelectedIndex = -1 cboCsvColor.SelectedIndex = -1 cboCsvType.SelectedIndex = -1 cboCsvProd.Text = "선택" cboCsvColor.Text = "선택" cboCsvType.Text = "선택" pnCsv.Visible = True btnReset.Visible = False btnExcel.Text = "열 기" End If txbProdSerial.Focus() Catch ex As Exception MsgBox("오류 발생!! : " & ex.Message, vbCritical) pnCsv.Visible = False btnReset.Visible = True btnExcel.Text = "금일 Excel" End Try End Sub Private Sub btnExcelSelect_Click(sender As Object, e As EventArgs) Handles btnExcelSelect.Click Try If btnExcelSelect.Text = "열 기" Then If cboCsvColor.SelectedIndex = -1 Or cboCsvProd.SelectedIndex = -1 Then MsgBox("제품 및 색상 선택을 진행하지 않았습니다.", vbExclamation) Exit Sub End If Dim modelText As String = loadCsvModel() Dim typeText As String = loadCsvType() Dim colorText As String = loadCsvColor() Dim openFile As String = System.AppDomain.CurrentDomain.BaseDirectory & "SaveData\" & Format(monthCal.SelectionStart, "yyyy-MM-dd") & "(" & modelText & "_" & typeText & "_" & colorText & ")" & ".csv" Process.Start(openFile) monthCal.Hide() CalTimer.Enabled = False btnExcel.Enabled = True pnCsv.Visible = False btnReset.Visible = True btnExcelSelect.Text = "날짜 선택 Excel" Else cboCsvProd.SelectedIndex = -1 cboCsvColor.SelectedIndex = -1 cboCsvType.SelectedIndex = -1 cboCsvProd.Text = "선택" cboCsvColor.Text = "선택" cboCsvType.Text = "선택" monthCal.Show() monthCal.BringToFront() monthCal.SetDate(monthCal.TodayDate) monthCal.Refresh() monCalNum = String.Empty monCalTime = False btnExcel.Enabled = False CalTimer.Enabled = True pnCsv.Visible = True btnReset.Visible = False btnExcelSelect.Text = "열 기" End If txbProdSerial.Focus() Catch ex As Exception MsgBox("오류 발생!! : " & ex.Message, vbCritical) End Try End Sub Private Function loadCsvType() As String Select Case cboCsvType.SelectedIndex Case 0 Return "SET_V1" Case 1 Return "FACE_V2" Case 2 Return "EYE" Case 3 Return "BODY_V3" 'BODY Case Else Return "ETC" End Select End Function Private Function loadCsvColor() As String Select Case cboCsvColor.SelectedIndex Case 0 Return "White" Case 1 Return "ShineMint" Case 2 Return "Pink" Case 3 Return "Black" Case 4 Return "Mint" Case 5 Return "Purple" Case 6 Return "BlackGold" Case 7 Return "Yellow" Case 8 Return "WhitePink" Case 9 Return "WhiteSky" Case 10 Return "WhiteBrown" Case 11 Return "Peach" Case 12 Return "LineFriendsBrown" Case 13 Return "LineFriendsSally" Case 14 Return "RubyRed" Case 15 Return "TopazOrange" Case 16 Return "EmeraldGreen" Case 17 Return "SapphireBlue" Case 18 Return "TopazBrown" Case 19 Return "StirinGold" Case Else Return "etc" End Select End Function Private Function loadCsvModel() As String Select Case cboCsvProd.SelectedIndex Case 0 Return "MAXIMUM" Case 1 Return "ALTO" Case 2 Return "EFFECT" Case 3 Return "MAXIMUM ALPHA" Case Else Return "ETC" End Select End Function Private Sub btnExcelExit_Click(sender As Object, e As EventArgs) Handles btnExcelExit.Click btnExcel.Enabled = True CalTimer.Enabled = False pnCsv.Visible = False btnReset.Visible = True monthCal.Hide() btnExcel.Text = "금일 Excel" btnExcelSelect.Text = "날짜 선택 Excel" txbProdSerial.Focus() End Sub Private Sub btnFuncRun_Click(sender As Object, e As EventArgs) Handles btnFuncRun.Click runningcomm() End Sub Private Sub runningcomm() Dim errStr As String = String.Empty If txbProdSerial.Text = String.Empty Then MsgBox("입력할 정보가 존재하지 않습니다. 데이터를 읽어주십시오,", vbExclamation) errStr = "정보없음" GoTo failFunc End If If txbProdSerial.Text.Length <> prodLength Then MsgBox("잘못된 시리얼 번호를 입력하였습니다.", vbExclamation) errStr = "정보불량" GoTo failFunc End If If dataOkNg(dbRegList.DBALL) = True Then Select Case runMod Case formModList.Write infoRegFunc() Case formModList.Delete infoDelFunc() Case formModList.ReturnP infoReturnFunc() Case Else MsgBox("올바른 경로의 동작이 아닙니다.", vbCritical) errStr = "시스템오류" GoTo failFunc End Select GoTo finishFunc Else If runMod = formModList.Delete Then infoDelFunc() Else MsgBox("출력된 데이터 중 불량 데이터가 존재합니다. 데이터를 확인하여 주십시오.", vbExclamation) errStr = "데이터불량" GoTo failFunc End If End If failFunc: txbRunState.Text = errStr txbRunState.BackColor = Color.Red finishFunc: txbRunState.Refresh() txbProdSerial.Focus() End Sub Private Sub infoReturnFunc() Dim OkNg As Boolean = False Dim ReturnCount As String = 0 Dim UseDBName As String = String.Empty txbRunState.Text = "처리중.." txbRunState.BackColor = Color.Orange txbRunState.Refresh() If TDUseCompare = True Then UseDBName = applyCartDB Else UseDBName = applyNonTDDB End If DBCmd = "SELECT TestStep FROM " & UseDBName & " WHERE Product_SN = '" & txbProdSerial.Text & "'" Dim TestStep As String = DBQueryScalar(DBCmd) If TestStep = "31" Then DBCmd = "SELECT EXISTS (SELECT 1 FROM " & ApplyReturnDB & " WHERE Product_SN = '" & txbProdSerial.Text & "') AS dataExist" Dim DataExist As String = DBQueryScalar(DBCmd) If DataExist = True Then DBCmd = "SELECT MAX(ReturnCount) FROM " & ApplyReturnDB & " WHERE Product_SN = '" & txbProdSerial.Text & "'" ReturnCount = DBQueryScalar(DBCmd) If ReturnCount = "False" Then MsgBox("반품 처리 도중 오류가 발생하였습니다.", vbCritical) GoTo FailResult Exit Sub End If End If ReturnCount += 1 Dim NowDate As String = Format(Now, "yyyy-MM-dd") Dim NowTime As String = Format(Now, "HH:mm:ss") DBCmd = "UPDATE " & UseDBName & " SET TestStep = '41' WHERE Product_SN = '" & txbProdSerial.Text & "'" If DBCommand(DBCmd) Then DBCmd = "INSERT INTO " & ApplyReturnDB & "(Product_SN,ReturnCount,ReturnDate,ReturnTime) VALUES('" & txbProdSerial.Text & "','" & ReturnCount & "','" & NowDate & "','" & NowTime & "')" If DBCommand(DBCmd) Then txbRunState.Text = "처리완료" txbRunState.BackColor = Color.Green txbRunState.Refresh() OkNg = True Else MsgBox("데이터베이스에 Log 등록하는데 오류가 발생하였습니다", vbCritical) GoTo FailResult End If Else MsgBox("데이터베이스에 등록하는데 오류가 발생하였습니다", vbCritical) GoTo FailResult End If Dim csvSaveData As String = NowDate & "," & NowTime & "," & txbProdSerial.Text & "," & txbTDSN.Text & "," & txbHFreq_M1.Text & "," & txbDotPower_M1.Text & "," & txbDotDepth_M1.Text & "," & ReturnCount & "," & OkNg If Save_LogCsv(csvSaveData) Then MsgBox("CSV를 저장하는데 오류가 발생하였습니다", vbCritical) GoTo FailResult End If Else If TestStep = "41" Then MsgBox("이미 반품 처리를 진행하였습니다.", vbCritical) GoTo FailResult Else MsgBox("정보 입력을 진행하지 않았습니다.", vbCritical) GoTo FailResult End If End If Exit Sub FailResult: txbRunState.Text = "처리실패" txbRunState.BackColor = Color.Red txbRunState.Refresh() End Sub Private Sub infoDelFunc() Dim OkNg As Boolean = False prodSerialType(txbProdSerial.Text) txbRunState.Text = "삭제중.." txbRunState.BackColor = Color.Orange txbRunState.Refresh() If TDUseCompare = True Then DBCmd = "UPDATE " & applyCartDB & " SET TestStep = '32' ,Product_SN = NULL WHERE Product_SN = '" & txbProdSerial.Text & "'" Else DBCmd = "UPDATE " & applyNonTDDB & " SET TestStep = '32' ,Product_SN = NULL WHERE Product_SN = '" & txbProdSerial.Text & "'" End If If DBCommand(DBCmd) Then txbRunState.Text = "삭제완료" txbRunState.BackColor = Color.Green txbRunState.Refresh() OkNg = True Else txbRunState.Text = "삭제실패" txbRunState.BackColor = Color.Red txbRunState.Refresh() MsgBox("데이터베이스를 설정하는데 오류가 발생하였습니다", vbCritical) End If Dim csvSaveData As String = Format(Now, "yyyy-MM-dd") & "," & Format(Now, "HH:mm:ss") & "," & txbProdSerial.Text & "," & txbTDSN.Text & "," & txbHFreq_M1.Text & "," & txbDotPower_M1.Text & "," & txbDotDepth_M1.Text & "," & OkNg If Save_LogCsv(csvSaveData) Then txbRunState.Text = "CSV실패" txbRunState.BackColor = Color.Red End If End Sub Private Sub infoRegFunc() Dim errorStr As String = String.Empty Dim OkNg As Boolean = False CsvRegData = String.Empty txbRunState.Text = "입력중.." txbRunState.BackColor = Color.Orange txbRunState.Refresh() Dim prodCode As String = Mid(txbProdSerial.Text, 1, 2) Dim prodDate As String = Mid(txbProdSerial.Text, 3, 4) Dim prodBack As String = Mid(txbProdSerial.Text, 7, 3) Dim prodFront As String = Mid(txbProdSerial.Text, 10, 3) If prodRegData(txbFactory_M1.Text.ToLower, prodDate & prodFront & prodBack, prodCode, Val(txbCountry_M1.Text), Val(txbAgency_M1.Text)) Then If prodRegFreq(Val(txbHFreq_M1.Text), Val(txbDotPower_M1.Text)) Then If prodRegTD(txbTDSN.Text) Then If prodRegMotor(Val(txbDotDepth_M1.Text)) Then If prodRegShot(Val(txbFace_M1.Text)) Then GoTo successFunc Else errorStr = "샷실패" GoTo failFunc End If Else errorStr = "모터실패" GoTo failFunc End If Else errorStr = "TD실패" GoTo failFunc End If Else errorStr = "주파수실패" GoTo failFunc End If Else errorStr = "코드실패" GoTo failFunc End If successFunc: txbRunState.Text = "입력완료" txbRunState.BackColor = Color.Green OkNg = True GoTo finishFunc failFunc: txbRunState.Text = errorStr txbRunState.BackColor = Color.Red GoTo finishFunc finishFunc: Dim csvSaveData As String = Format(Now, "yyyy-MM-dd") & "," & Format(Now, "HH:mm:ss") & "," & txbProdSerial.Text & "," & txbTDSN.Text & "," & txbHFreq_M1.Text & "," & txbDotPower_M1.Text & "," & txbDotDepth_M1.Text & "," & CsvRegData & OkNg If Save_LogCsv(csvSaveData) Then txbRunState.Text = "CSV에러" txbRunState.BackColor = Color.Red End If End Sub Private Function prodRegShot(shot As Integer) As String Dim retval As String tmpCmdMessage = "shotconf" cmdMessage = "[" & tmpCmdMessage & " " & shot & "]" + vbCrLf CsvRegData = CsvRegData & cmdMessage.Replace(",", "/").Replace(vbCrLf, "") & "," If SendData(cmdMessage) Then Return False End If retval = PollingReceiveData(1000) CsvRegData = CsvRegData & retval.Replace(",", "/").Replace(vbCrLf, "") & "," If retval = shot Then Return True End If Return False End Function Private Function prodRegMotor(pulse As Integer) As Boolean Dim retval As String tmpCmdMessage = "setmotor" cmdMessage = "[" & tmpCmdMessage & " " & pulse & ",0,0,0,0]" CsvRegData = CsvRegData & cmdMessage.Replace(",", "/").Replace(vbCrLf, "") & "," If SendData(cmdMessage) Then Return False End If retval = PollingReceiveData(1000) CsvRegData = CsvRegData & retval.Replace(",", "/").Replace(vbCrLf, "") & "," If retval = pulse & ",0,0,0,0" Then Return True End If Return False End Function Private Function prodRegTD(td_reg_serial As String) As Boolean Dim retval As String tmpCmdMessage = "settdsn" cmdMessage = "[" & tmpCmdMessage & " " & td_reg_serial & "]" + vbCrLf CsvRegData = CsvRegData & cmdMessage.Replace(",", "/").Replace(vbCrLf, "") & "," If SendData(cmdMessage) Then Return False End If retval = PollingReceiveData(1500) CsvRegData = CsvRegData & retval.Replace(",", "/").Replace(vbCrLf, "") & "," If retval <> td_reg_serial.ToLower Then Return False End If Return True End Function Private Function prodRegFreq(freq As Int16, power As Int16) As Boolean Dim retVal As String tmpCmdMessage = "settdcnf" cmdMessage = "[" & tmpCmdMessage & " " & freq & "," & power & "]" + vbCrLf CsvRegData = CsvRegData & cmdMessage.Replace(",", "/").Replace(vbCrLf, "") & "," If SendData(cmdMessage) Then Return False End If retVal = PollingReceiveData(1000) CsvRegData = CsvRegData & retVal.Replace(",", "/").Replace(vbCrLf, "") & "," If retVal <> freq & "," & power Then Return False End If Return True End Function Private Function prodRegData(factory As String, prodSerial As String, prodCode As String, country As String, aboard As String) As Boolean tmpCmdMessage = "wrsconf1" cmdMessage = "[" & tmpCmdMessage & " " & factory & "," & prodSerial & "," & prodCode & "," & country & "," & aboard & "]" + vbCrLf CsvRegData = CsvRegData & cmdMessage.Replace(",", "/").Replace(vbCrLf, "") & "," If SendData(cmdMessage) Then Return False End If Dim retVal As String = PollingReceiveData(10000) CsvRegData = CsvRegData & retVal.Replace(",", "/").Replace(vbCrLf, "") & "," Dim dataComma As Int16 = UBound(Split(retVal, ",")) If dataComma = 4 Then If retVal <> factory.ToLower & "," & prodSerial & "," & prodCode & "," & country & "," & aboard Then Return False End If Return True Else Return False End If End Function Private Function PollingReceiveData(RdTimeout As Long) As String Try If cmdSerial.IsOpen = True Then rxMessage = "" cmdSerial.ReadTimeout = RdTimeout rxMessage = cmdSerial.ReadLine() Return ParsingData(False) Else MsgBox("통신 포트가 열리지 않았습니다.", vbExclamation) Return True End If Catch ex As Exception rxMessage = "" Return Err.Description End Try End Function Private Function ParsingData(CmdInclude As Boolean) As String Dim cmdStr As String Dim cmdVal(0 To 6) As String Dim ReturnStr As String Dim i As Integer Try cmdStr = "0" 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 5 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 If InStr(1, cmdStr, "move") > 0 Then cmdStr = "runmotor" End If Select Case cmdStr Case "freqconf" cmdStr = cmdVal(1) Return cmdStr Case "settdcnf" cmdStr = (cmdVal(1) & "," & cmdVal(2)) Return cmdStr Case "wrsconf1" cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) Return cmdStr Case "settdsn" cmdStr = cmdVal(1) Return cmdStr Case "resetinf" cmdStr = cmdVal(1) Return cmdStr Case "rdsconf1" cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) Return cmdStr Case "shotconf" cmdStr = cmdVal(1) Return cmdStr Case "runmotor" Return True Case "setdepth" cmdStr = cmdVal(1) Return cmdStr Case "setmotor" cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5) Return cmdStr Case Else Return "Else" rxMessage = "" End Select End If rxMessage = "" Return True Else Return False End If Catch ex As Exception rxMessage = "" Return Err.Description End Try End Function Private Function SendData(SendMessage As String) As Boolean Try If cmdSerial.IsOpen = True Then cmdSerial.DiscardInBuffer() cmdSerial.DiscardOutBuffer() If cmdSerial.BytesToRead Then cmdSerial.DiscardInBuffer() End If cmdSerial.WriteTimeout = 50 cmdSerial.WriteLine(SendMessage) Else MsgBox("통신 포트가 열리지 않았습니다.", vbExclamation) Return True End If Catch ex As Exception MsgBox("통신 포트 에러!! :: " & ex.Message, vbCritical) Return True End Try Return False End Function Private Sub btnEnd_Click(sender As Object, e As EventArgs) Handles btnEnd.Click threadOff() End End Sub Private Sub nowTimer_Tick(sender As Object, e As EventArgs) Handles nowTimer.Tick lblTime.Text = Now End Sub Private Sub ckbBarcode_CheckedChanged(sender As Object, e As EventArgs) Handles ckbBarcode.CheckedChanged If ckbBarcode.Checked = True Then txbProdSerial.Location = New Point(670, 20) lbProdSerial.Location = New Point(280, 18) btnSearch.Visible = False ckbAuto.Enabled = True ckbAuto.Checked = True Else txbProdSerial.Location = New Point(565, 20) lbProdSerial.Location = New Point(175, 18) btnSearch.Visible = True ckbAuto.Enabled = False ckbAuto.Checked = False End If End Sub Private Sub rdbSearch_CheckedChanged(sender As Object, e As EventArgs) Handles rdbSearch.CheckedChanged runMod = formModList.Search If rdbSearch.Checked = True Then modFormChange() End If End Sub Private Sub rdbWrite_CheckedChanged(sender As Object, e As EventArgs) Handles rdbWrite.CheckedChanged runMod = formModList.Write If rdbWrite.Checked = True Then modFormChange() End If End Sub Private Sub rdbDelete_CheckedChanged(sender As Object, e As EventArgs) Handles rdbDelete.CheckedChanged runMod = formModList.Delete If rdbDelete.Checked = True Then modFormChange() End If End Sub Private Sub rdbReturn_CheckedChanged(sender As Object, e As EventArgs) Handles rdbReturn.CheckedChanged runMod = formModList.ReturnP If rdbReturn.Checked = True Then modFormChange() End If End Sub Private Sub btnOpEnd_Click(sender As Object, e As EventArgs) Handles btnOpEnd.Click, btnOpEndAT.Click pnMain.Location = New Point(0, 0) pnStandard.Visible = False pnMain.Visible = True pnStandard.Location = New Point(1920, 0) End Sub Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click, btnSaveAT.Click configSave() End Sub Private Sub configSave() Try Dim filePath As String = System.AppDomain.CurrentDomain.BaseDirectory & "\Config" If Dir(filePath, vbDirectory) = "" Then MkDir(filePath) End If Dim fileName As String If rdbEffect.Checked = True Then fileName = filePath & "\Standard_EFFECT.ini" ElseIf rdbMaxAlpha.Checked = True Then fileName = filePath & "\Standard_MaxAlpha.ini" ElseIf rdbMax.Checked = True Then fileName = filePath & "\Standard_Max.ini" ElseIf rdbAlto.Checked = True Then fileName = filePath & "\Standard_Alto.ini" Else fileName = filePath & "\Standard.ini" End If Dim saveData As String = String.Empty For i = 0 To saveDataList.opcs3VpMin_AT If saveData = String.Empty Then saveData = saveTextData(i).Text Else saveData = saveData & "^" & saveTextData(i).Text End If Next Dim dbRegStr As String = dbRegCheck() saveData = saveData & "^" & dbRegStr If File.Exists(fileName) Then File.Delete(fileName) End If File.WriteAllText(fileName, saveData, System.Text.Encoding.UTF8) MsgBox("저장완료!", vbInformation) Catch ex As Exception MsgBox("Config 파일 저장 오류 !! : " & ex.Message) End Try End Sub Private Function dbRegCheck() As String Dim dbRegStr As String = String.Empty For i = 0 To dbRegList.dbInfo If saveDBCkb(i).Checked = True Then dbRegStr = dbRegStr & i End If Next If ckbopV1.Checked = True And modelType <> prodModelList.prodAlto Then dbRegStr = dbRegStr & "5" End If Return dbRegStr End Function Private Sub configLoad() Try Dim filePath As String = System.AppDomain.CurrentDomain.BaseDirectory & "\Config" If Dir(filePath, vbDirectory) = "" Then MkDir(filePath) End If Dim fileName As String If rdbEffect.Checked = True Then fileName = filePath & "\Standard_EFFECT.ini" ElseIf rdbMaxAlpha.Checked = True Then fileName = filePath & "\Standard_MaxAlpha.ini" ElseIf rdbMax.Checked = True Then fileName = filePath & "\Standard_Max.ini" ElseIf rdbAlto.Checked = True Then fileName = filePath & "\Standard_Alto.ini" Else fileName = filePath & "\Standard.ini" End If If File.Exists(fileName) Then Dim readData As String = File.ReadAllText(fileName, System.Text.Encoding.UTF8) If readData = String.Empty Then optionAllReset() Else If UBound(Split(readData, "^")) = saveDataList.opcs3VpMin_AT + 1 Then For i = 0 To saveDataList.opcs3VpMin_AT Dim psData As String = String.Empty If InStr(readData, "^") > 0 Then psData = Mid(readData, 1, InStr(readData, "^") - 1) readData = Mid(readData, InStr(readData, "^") + 1, readData.Length) Else MsgBox("불량 데이터가 존재합니다.", vbCritical) optionAllReset() Exit For End If saveTextData(i).Text = psData Next dbCheckSetting(readData) Else MsgBox("불량 데이터가 존재합니다.", vbCritical) optionAllReset() End If End If Else optionAllReset() End If Catch ex As Exception MsgBox("Config 파일 로드 오류 !! : " & ex.Message) End Try End Sub Private Sub dbCheckSetting(ckbData As String) If IsNumeric(ckbData) Then For i = 0 To ckbData.Length - 1 Dim selectData As Int16 If i = ckbData Then selectData = ckbData Else selectData = Val(Mid(ckbData, 1, 1)) ckbData = Mid(ckbData, 2, ckbData.Length) End If If selectData = "5" Then ckbopV1.Checked = True Else saveDBCkb(selectData).Checked = True End If Next Else MsgBox("잘못된 체크 박스 데이터가 존재합니다.", vbCritical) End If End Sub Private Function Save_LogCsv(SaveData As String) As Boolean ''saveType true : 입력 / false : 삭제 On Error GoTo WR_File_Error Dim objWriter As StreamWriter Dim FileName As String Dim syaer As String = DateAndTime.Year(Now) Dim smonth As String = DateAndTime.Month(Now) Dim sday As String = DateAndTime.Day(Now) Dim FilePath As String = System.AppDomain.CurrentDomain.BaseDirectory & "\LogData" If Dir(FilePath, vbDirectory) = "" Then MkDir(FilePath) End If Select Case runMod Case formModList.Write FileName = FilePath & "\" & DateAndTime.Year(Now) & "_" & DateAndTime.Month(Now) & "_" & DateAndTime.Day(Now) & "_Reg_LogDate.csv" Case formModList.Delete FileName = FilePath & "\" & DateAndTime.Year(Now) & "_" & DateAndTime.Month(Now) & "_" & DateAndTime.Day(Now) & "_Del_LogDate.csv" Case formModList.ReturnP FileName = FilePath & "\" & DateAndTime.Year(Now) & "_" & DateAndTime.Month(Now) & "_" & DateAndTime.Day(Now) & "_Return_LogDate.csv" Case Else MsgBox("잘못된 경로 입니다.", vbCritical) Return True End Select If File.Exists(FileName) = True Then objWriter = New StreamWriter(FileName, True) objWriter.WriteLine(SaveData) Else objWriter = New StreamWriter(FileName, True) objWriter.WriteLine(itemList) objWriter.WriteLine(SaveData) End If objWriter.Close() Return False WR_File_Error: MsgBox("Logdata save fail!" & Err.Description, vbCritical) Return True End Function Private Sub modFormChange() Select Case runMod Case formModList.Search btnFuncRun.Text = "쓰 기" btnFuncRun.Enabled = False ckbAutoReg.Enabled = False txbRunState.Enabled = False ckbAutoReg.Checked = False Case formModList.Write btnFuncRun.Text = "쓰 기" btnFuncRun.Enabled = True ckbAutoReg.Enabled = True txbRunState.Enabled = True btnReturn.Visible = False btnReturn.Enabled = False itemList = "InputDate,InputTime,ProdSerial,TDSerial,Frequence,Power,Depth,ProdData(Send),ProdData(Receive),ProdFreq(Send),ProdFreq(Receive),ProdTD(Send),ProdTD(Receive),ProdMotor(Send),ProdMotor(Receive),ProdShot(Send),ProdShot(Receive),OkNg" Case formModList.Delete btnFuncRun.Text = "삭 제" btnFuncRun.Enabled = True ckbAutoReg.Enabled = True txbRunState.Enabled = True itemList = "DelDate,DelTime,ProdSerial,TDSerial,Frequence,Power,Depth,OkNg" Case formModList.ReturnP btnFuncRun.Text = "처 리" btnFuncRun.Enabled = True ckbAutoReg.Enabled = True txbRunState.Enabled = True itemList = "ReDate,ReTime,ProdSerial,TDSerial,Frequence,Power,Depth,ReturnCount,OkNg" Case Else MsgBox("잘못된 경로입니다.") End Select formFullReset() txbProdSerial.Focus() End Sub Private Sub btnReset_Click(sender As Object, e As EventArgs) Handles btnReset.Click formFullReset() txbProdSerial.Focus() End Sub Private Sub txbProdSerial_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txbProdSerial.KeyPress If Not Char.IsDigit(e.KeyChar) And Not Char.IsControl(e.KeyChar) Then e.Handled = True End If End Sub Private Sub txbopFW_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txbopFW.KeyPress, txbOpFreq_RgMax.KeyPress, txbOpFreq_RgMin.KeyPress, txbopBat_RgMax.KeyPress, txbopBat_RgMin.KeyPress, txbopDiv_TpMax.KeyPress, txbopDiv_TpMin.KeyPress, txbopCt_TpMax.KeyPress, txbopCt_TpMin.KeyPress, txbopHF1_TpMax.KeyPress, txbopHF1_TpMin.KeyPress, txbopHF2_TpMax.KeyPress, txbopHF2_TpMin.KeyPress, txbopHF3_TpMax.KeyPress, txbopHF3_TpMin.KeyPress, txbopHF12_Tp.KeyPress, txbopHF23_Tp.KeyPress, txboptg1_FrMax.KeyPress, txboptg1_FrMin.KeyPress, txboptg1_VrMax.KeyPress, txboptg1_VrMin.KeyPress, txboptg2_FrMax.KeyPress, txboptg2_FrMin.KeyPress, txboptg2_VrMax.KeyPress, txboptg2_VrMin.KeyPress, txboptg3_FrMax.KeyPress, txboptg3_FrMin.KeyPress, txboptg3_VrMax.KeyPress, txboptg3_VrMin.KeyPress, txbopdy1_DtMax.KeyPress, txbopdy1_DtMin.KeyPress, txbopdy1_FrMax.KeyPress, txbopdy1_FrMin.KeyPress, txbopdy1_VpMax.KeyPress, txbopdy1_VpMin.KeyPress, txbopdy2_DtMax.KeyPress, txbopdy2_DtMin.KeyPress, txbopdy2_FrMax.KeyPress, txbopdy2_FrMin.KeyPress, txbopdy2_VpMax.KeyPress, txbopdy2_VpMin.KeyPress, txbopcs1_DyRg.KeyPress, txbopcs1_FrMax.KeyPress, txbopcs1_FrMin.KeyPress, txbopcs1_VpMax.KeyPress, txbopcs1_VpMin.KeyPress, txbopcs2_DyRg.KeyPress, txbopcs2_FrMax.KeyPress, txbopcs2_FrMin.KeyPress, txbopcs2_VpMax.KeyPress, txbopcs2_VpMin.KeyPress, txbopcs3_DyRg.KeyPress, txbopcs3_FrMax.KeyPress, txbopcs3_FrMin.KeyPress, txbopcs3_VpMax.KeyPress, txbopcs3_VpMin.KeyPress If Not Char.IsDigit(e.KeyChar) And Not Char.IsControl(e.KeyChar) And Not e.KeyChar = "." Then e.Handled = True End If End Sub Private Sub formFullReset() startReset() resetTxbClear() resetColor() resetLetterColor() resetRefresh() threadOff() End Sub Private Sub resetColor() txbTDSN.BackColor = SystemColors.Window txbTDDate.BackColor = SystemColors.Window txbTDGrade.BackColor = SystemColors.Window txbTDTDate.BackColor = SystemColors.Window txbTDTTime.BackColor = SystemColors.Window txbDotDate_M1.BackColor = SystemColors.Window txbDotDepth_M1.BackColor = SystemColors.Window txbDotPower_M1.BackColor = SystemColors.Window txbDotTime_M1.BackColor = SystemColors.Window txbHBettery_M1.BackColor = SystemColors.Window txbHCtemp_M1.BackColor = SystemColors.Window txbHDate_M1.BackColor = SystemColors.Window txbHDtemp_M1.BackColor = SystemColors.Window txbHFreq_M1.BackColor = SystemColors.Window txbHFW_M1.BackColor = SystemColors.Window txbHHifu_M1.BackColor = SystemColors.Window txbHTime_M1.BackColor = SystemColors.Window txbRDate_M1.BackColor = SystemColors.Window txbREP_M1.BackColor = SystemColors.Window txbRMC_M1.BackColor = SystemColors.Window txbRRF_M1.BackColor = SystemColors.Window txbRTime_M1.BackColor = SystemColors.Window txbDate_M1.BackColor = SystemColors.Window txbDate.BackColor = SystemColors.Window txbSerial_M1.BackColor = SystemColors.Window txbFactory_M1.BackColor = SystemColors.Window txbModel_M1.BackColor = SystemColors.Window txbType_M1.BackColor = SystemColors.Window txbFace_M1.BackColor = SystemColors.Window txbEye_M1.BackColor = SystemColors.Window txbAgency_M1.BackColor = SystemColors.Window txbCountry_M1.BackColor = SystemColors.Window txbReCount.BackColor = SystemColors.Window txbRunState.BackColor = SystemColors.Window End Sub Private Sub resetTxbClear() txbTDSN.Text = String.Empty txbTDDate.Text = String.Empty txbTDGrade.Text = String.Empty txbTDTDate.Text = String.Empty txbTDTTime.Text = String.Empty txbDotDate_M1.Text = String.Empty txbDotDepth_M1.Text = String.Empty txbDotPower_M1.Text = String.Empty txbDotTime_M1.Text = String.Empty txbHBettery_M1.Text = String.Empty txbHCtemp_M1.Text = String.Empty txbHDate_M1.Text = String.Empty txbHDtemp_M1.Text = String.Empty txbHFreq_M1.Text = String.Empty txbHFW_M1.Text = String.Empty txbHHifu_M1.Text = String.Empty txbHTime_M1.Text = String.Empty txbRDate_M1.Text = String.Empty txbREP_M1.Text = String.Empty txbRMC_M1.Text = String.Empty txbRRF_M1.Text = String.Empty txbRTime_M1.Text = String.Empty txbDate_M1.Text = String.Empty txbDate.Text = String.Empty txbSerial_M1.Text = String.Empty txbFactory_M1.Text = String.Empty txbModel_M1.Text = String.Empty txbType_M1.Text = String.Empty txbFace_M1.Text = String.Empty txbEye_M1.Text = String.Empty txbAgency_M1.Text = String.Empty txbCountry_M1.Text = String.Empty txbReCount.Text = String.Empty txbRunState.Text = "대 기" End Sub Private Sub resetLetterColor() txbTDSN.ForeColor = Color.Black txbTDDate.ForeColor = Color.Black txbTDGrade.ForeColor = Color.Black txbTDTDate.ForeColor = Color.Black txbTDTTime.ForeColor = Color.Black txbDotDate_M1.ForeColor = Color.Black txbDotDepth_M1.ForeColor = Color.Black txbDotPower_M1.ForeColor = Color.Black txbDotTime_M1.ForeColor = Color.Black txbHBettery_M1.ForeColor = Color.Black txbHCtemp_M1.ForeColor = Color.Black txbHDate_M1.ForeColor = Color.Black txbHDtemp_M1.ForeColor = Color.Black txbHFreq_M1.ForeColor = Color.Black txbHFW_M1.ForeColor = Color.Black txbHHifu_M1.ForeColor = Color.Black txbHTime_M1.ForeColor = Color.Black txbRDate_M1.ForeColor = Color.Black txbREP_M1.ForeColor = Color.Black txbRMC_M1.ForeColor = Color.Black txbRRF_M1.ForeColor = Color.Black txbRTime_M1.ForeColor = Color.Black txbDate_M1.ForeColor = Color.Black txbDate.ForeColor = Color.Black txbSerial_M1.ForeColor = Color.Black txbFactory_M1.ForeColor = Color.Black txbModel_M1.ForeColor = Color.Black txbType_M1.ForeColor = Color.Black txbFace_M1.ForeColor = Color.Black txbEye_M1.ForeColor = Color.Black txbAgency_M1.ForeColor = Color.Black txbCountry_M1.ForeColor = Color.Black txbReCount.ForeColor = Color.Black txbRunState.ForeColor = Color.Black End Sub Private Sub resetRefresh() txbTDSN.Refresh() txbTDDate.Refresh() txbTDGrade.Refresh() txbTDTDate.Refresh() txbTDTTime.Refresh() txbDotDate_M1.Refresh() txbDotDepth_M1.Refresh() txbDotPower_M1.Refresh() txbDotTime_M1.Refresh() txbHBettery_M1.Refresh() txbHCtemp_M1.Refresh() txbHDate_M1.Refresh() txbHDtemp_M1.Refresh() txbHFreq_M1.Refresh() txbHFW_M1.Refresh() txbHHifu_M1.Refresh() txbHTime_M1.Refresh() txbRDate_M1.Refresh() txbREP_M1.Refresh() txbRMC_M1.Refresh() txbRRF_M1.Refresh() txbRTime_M1.Refresh() txbDate_M1.Refresh() txbDate.Refresh() txbSerial_M1.Refresh() txbFactory_M1.Refresh() txbModel_M1.Refresh() txbType_M1.Refresh() txbFace_M1.Refresh() txbEye_M1.Refresh() txbAgency_M1.Refresh() txbCountry_M1.Refresh() txbReCount.Refresh() txbRunState.Refresh() End Sub Private Sub dataSetting() tdReadTxb(tdDataList.TDSN) = txbTDSN tdReadTxb(tdDataList.TDDate) = txbTDDate tdReadTxb(tdDataList.TestDate) = txbTDTDate tdReadTxb(tdDataList.TestTime) = txbTDTTime tdReadTxb(tdDataList.Grade) = txbTDGrade dotReadTxb(dotDataList.dotDate) = txbDotDate_M1 dotReadTxb(dotDataList.dotTime) = txbDotTime_M1 dotReadTxb(dotDataList.dotPower) = txbDotPower_M1 dotReadTxb(dotDataList.dotDepth) = txbDotDepth_M1 hifuReadTxb(hifuDataList.hifuDate) = txbHDate_M1 hifuReadTxb(hifuDataList.hifuTime) = txbHTime_M1 hifuReadTxb(hifuDataList.hifuFW) = txbHFW_M1 hifuReadTxb(hifuDataList.hifuFreq) = txbHFreq_M1 hifuReadTxb(hifuDataList.hifuBaterry) = txbHBettery_M1 hifuReadTxb(hifuDataList.hifuDtemp) = txbHDtemp_M1 hifuReadTxb(hifuDataList.hifuCtemp) = txbHCtemp_M1 hifuReadTxb(hifuDataList.hifuData1_txb) = txbHHifu_M1 rfReadTxb(rfDataList.rfDate) = txbRDate_M1 rfReadTxb(rfDataList.rfTime) = txbRTime_M1 rfReadTxb(rfDataList.rfR1Vrms_txb1) = txbRRF_M1 rfReadTxb(rfDataList.rfR1Freq_txb2) = txbRMC_M1 rfReadTxb(rfDataList.rfR2Vrms_txb3) = txbREP_M1 pd2ReadTxb(pd2DataList.pd2DateTime) = txbDate_M1 pd2ReadTxb(pd2DataList.prodDate) = txbDate pd2ReadTxb(pd2DataList.pd2Serial) = txbSerial_M1 pd2ReadTxb(pd2DataList.pd2Factory) = txbFactory_M1 pd2ReadTxb(pd2DataList.pd2Model) = txbModel_M1 pd2ReadTxb(pd2DataList.pd2Type) = txbType_M1 pd2ReadTxb(pd2DataList.pd2Face) = txbFace_M1 pd2ReadTxb(pd2DataList.pd2Eye) = txbEye_M1 pd2ReadTxb(pd2DataList.pd2Country) = txbCountry_M1 pd2ReadTxb(pd2DataList.pd2Agency) = txbAgency_M1 saveTextData(saveDataList.opFw) = txbopFW saveTextData(saveDataList.opFreqMax) = txbOpFreq_RgMax saveTextData(saveDataList.opFreqMin) = txbOpFreq_RgMin saveTextData(saveDataList.opBatMax) = txbopBat_RgMax saveTextData(saveDataList.opBatMin) = txbopBat_RgMin saveTextData(saveDataList.opDtempMax) = txbopDiv_TpMax saveTextData(saveDataList.opDtempMin) = txbopDiv_TpMin saveTextData(saveDataList.opCtempMax) = txbopCt_TpMax saveTextData(saveDataList.opCtempMin) = txbopCt_TpMin saveTextData(saveDataList.opHF1Max) = txbopHF1_TpMax saveTextData(saveDataList.opHF1Min) = txbopHF1_TpMin saveTextData(saveDataList.opHF2Max) = txbopHF2_TpMax saveTextData(saveDataList.opHF2Min) = txbopHF2_TpMin saveTextData(saveDataList.opHF3Max) = txbopHF3_TpMax saveTextData(saveDataList.opHF3Min) = txbopHF3_TpMin saveTextData(saveDataList.opHF12) = txbopHF12_Tp saveTextData(saveDataList.opHF23) = txbopHF23_Tp saveTextData(saveDataList.optg1FrqMax) = txboptg1_FrMax saveTextData(saveDataList.optg1FrqMin) = txboptg1_FrMin saveTextData(saveDataList.optg1VrMax) = txboptg1_VrMax saveTextData(saveDataList.optg1VrMin) = txboptg1_VrMin saveTextData(saveDataList.optg2FrqMax) = txboptg2_FrMax saveTextData(saveDataList.optg2FrqMin) = txboptg2_FrMin saveTextData(saveDataList.optg2VrMax) = txboptg2_VrMax saveTextData(saveDataList.optg2VrMin) = txboptg2_VrMin saveTextData(saveDataList.optg3FrqMax) = txboptg3_FrMax saveTextData(saveDataList.optg3FrqMin) = txboptg3_FrMin saveTextData(saveDataList.optg3VrMax) = txboptg3_VrMax saveTextData(saveDataList.optg3VrMin) = txboptg3_VrMin saveTextData(saveDataList.opdy1DtMax) = txbopdy1_DtMax saveTextData(saveDataList.opdy1DtMin) = txbopdy1_DtMin saveTextData(saveDataList.opdy1FrMax) = txbopdy1_FrMax saveTextData(saveDataList.opdy1FrMin) = txbopdy1_FrMin saveTextData(saveDataList.opdy1VpMax) = txbopdy1_VpMax saveTextData(saveDataList.opdy1VpMin) = txbopdy1_VpMin saveTextData(saveDataList.opdy2DtMax) = txbopdy2_DtMax saveTextData(saveDataList.opdy2DtMin) = txbopdy2_DtMin saveTextData(saveDataList.opdy2FrMax) = txbopdy2_FrMax saveTextData(saveDataList.opdy2FrMin) = txbopdy2_FrMin saveTextData(saveDataList.opdy2VpMax) = txbopdy2_VpMax saveTextData(saveDataList.opdy2VpMin) = txbopdy2_VpMin saveTextData(saveDataList.opcs1Dy) = txbopcs1_DyRg saveTextData(saveDataList.opcs1FrMax) = txbopcs1_FrMax saveTextData(saveDataList.opcs1FrMin) = txbopcs1_FrMin saveTextData(saveDataList.opcs1VpMax) = txbopcs1_VpMax saveTextData(saveDataList.opcs1VpMin) = txbopcs1_VpMin saveTextData(saveDataList.opcs2Dy) = txbopcs2_DyRg saveTextData(saveDataList.opcs2FrMax) = txbopcs2_FrMax saveTextData(saveDataList.opcs2FrMin) = txbopcs2_FrMin saveTextData(saveDataList.opcs2VpMax) = txbopcs2_VpMax saveTextData(saveDataList.opcs2VpMin) = txbopcs2_VpMin saveTextData(saveDataList.opcs3Dy) = txbopcs3_DyRg saveTextData(saveDataList.opcs3FrMax) = txbopcs3_FrMax saveTextData(saveDataList.opcs3FrMin) = txbopcs3_FrMin saveTextData(saveDataList.opcs3VpMax) = txbopcs3_VpMax saveTextData(saveDataList.opcs3VpMin) = txbopcs3_VpMin saveTextData(saveDataList.opFW_AT) = txbopFW_AT saveTextData(saveDataList.opBatMax_AT) = txbopBat_RgMaxAT saveTextData(saveDataList.opBatMin_AT) = txbopBat_RgMinAT saveTextData(saveDataList.opDtempMax_AT) = txbopDiv_TpMaxAT saveTextData(saveDataList.opDtempMin_AT) = txbopDiv_TpMinAT saveTextData(saveDataList.opCtempMax_AT) = txbopCt_TpMaxAT saveTextData(saveDataList.opCtempMin_AT) = txbopCt_TpMinAT saveTextData(saveDataList.optg1FrqMax_AT) = txboptg1_FrMaxAT saveTextData(saveDataList.optg1FrqMin_AT) = txboptg1_FrMinAT saveTextData(saveDataList.optg1VrMax_AT) = txboptg1_VrMaxAT saveTextData(saveDataList.optg1VrMin_AT) = txboptg1_VrMinAT saveTextData(saveDataList.optg2FrqMax_AT) = txboptg2_FrMaxAT saveTextData(saveDataList.optg2FrqMin_AT) = txboptg2_FrMinAT saveTextData(saveDataList.optg2VrMax_AT) = txboptg2_VrMaxAT saveTextData(saveDataList.optg2VrMin_AT) = txboptg2_VrMinAT saveTextData(saveDataList.optg3FrqMax_AT) = txboptg3_FrMaxAT saveTextData(saveDataList.optg3FrqMin_AT) = txboptg3_FrMinAT saveTextData(saveDataList.optg3VrMax_AT) = txboptg3_VrMaxAT saveTextData(saveDataList.optg3VrMin_AT) = txboptg3_VrMinAT saveTextData(saveDataList.opcs1Dy_AT) = txbopcs1_DyRgAT saveTextData(saveDataList.opcs1FrMax_AT) = txbopcs1_FrMaxAT saveTextData(saveDataList.opcs1FrMin_AT) = txbopcs1_FrMinAT saveTextData(saveDataList.opcs1VpMax_AT) = txbopcs1_VpMaxAT saveTextData(saveDataList.opcs1VpMin_AT) = txbopcs1_VpMinAT saveTextData(saveDataList.opcs2Dy_AT) = txbopcs2_DyRgAT saveTextData(saveDataList.opcs2FrMax_AT) = txbopcs2_FrMaxAT saveTextData(saveDataList.opcs2FrMin_AT) = txbopcs2_FrMinAT saveTextData(saveDataList.opcs2VpMax_AT) = txbopcs2_VpMaxAT saveTextData(saveDataList.opcs2VpMin_AT) = txbopcs2_VpMinAT saveTextData(saveDataList.opcs3Dy_AT) = txbopcs3_DyRgAT saveTextData(saveDataList.opcs3FrMax_AT) = txbopcs3_FrMaxAT saveTextData(saveDataList.opcs3FrMin_AT) = txbopcs3_FrMinAT saveTextData(saveDataList.opcs3VpMax_AT) = txbopcs3_VpMaxAT saveTextData(saveDataList.opcs3VpMin_AT) = txbopcs3_VpMinAT saveDBCkb(dbRegList.dbTD) = ckbopTD saveDBCkb(dbRegList.dbDot) = ckbopDot saveDBCkb(dbRegList.dbHifu) = ckbopHifu saveDBCkb(dbRegList.dbWave) = ckbopWave saveDBCkb(dbRegList.dbInfo) = ckbopInfo End Sub Private Sub optionAllReset() optionClear() optionRefresh() End Sub Private Sub optionClear() txbopFW.Text = String.Empty txbOpFreq_RgMax.Text = String.Empty txbOpFreq_RgMin.Text = String.Empty txbopBat_RgMax.Text = String.Empty txbopBat_RgMin.Text = String.Empty txbopDiv_TpMax.Text = String.Empty txbopDiv_TpMin.Text = String.Empty txbopCt_TpMax.Text = String.Empty txbopCt_TpMin.Text = String.Empty txbopHF1_TpMax.Text = String.Empty txbopHF1_TpMin.Text = String.Empty txbopHF2_TpMax.Text = String.Empty txbopHF2_TpMin.Text = String.Empty txbopHF3_TpMax.Text = String.Empty txbopHF3_TpMin.Text = String.Empty txbopHF12_Tp.Text = String.Empty txbopHF23_Tp.Text = String.Empty txboptg1_FrMax.Text = String.Empty txboptg1_FrMin.Text = String.Empty txboptg1_VrMax.Text = String.Empty txboptg1_VrMin.Text = String.Empty txboptg2_FrMax.Text = String.Empty txboptg2_FrMin.Text = String.Empty txboptg2_VrMax.Text = String.Empty txboptg2_VrMin.Text = String.Empty txboptg3_FrMax.Text = String.Empty txboptg3_FrMin.Text = String.Empty txboptg3_VrMax.Text = String.Empty txboptg3_VrMin.Text = String.Empty txbopdy1_DtMax.Text = String.Empty txbopdy1_DtMin.Text = String.Empty txbopdy1_FrMax.Text = String.Empty txbopdy1_FrMin.Text = String.Empty txbopdy1_VpMax.Text = String.Empty txbopdy1_VpMin.Text = String.Empty txbopdy2_DtMax.Text = String.Empty txbopdy2_DtMin.Text = String.Empty txbopdy2_FrMax.Text = String.Empty txbopdy2_FrMin.Text = String.Empty txbopdy2_VpMax.Text = String.Empty txbopdy2_VpMin.Text = String.Empty txbopcs1_DyRg.Text = String.Empty txbopcs1_FrMax.Text = String.Empty txbopcs1_FrMin.Text = String.Empty txbopcs1_VpMax.Text = String.Empty txbopcs1_VpMin.Text = String.Empty txbopcs2_DyRg.Text = String.Empty txbopcs2_FrMax.Text = String.Empty txbopcs2_FrMin.Text = String.Empty txbopcs2_VpMax.Text = String.Empty txbopcs2_VpMin.Text = String.Empty txbopcs3_DyRg.Text = String.Empty txbopcs3_FrMax.Text = String.Empty txbopcs3_FrMin.Text = String.Empty txbopcs3_VpMax.Text = String.Empty txbopcs3_VpMin.Text = String.Empty End Sub Private Sub optionRefresh() txbopFW.Refresh() txbOpFreq_RgMax.Refresh() txbOpFreq_RgMin.Refresh() txbopBat_RgMax.Refresh() txbopBat_RgMin.Refresh() txbopDiv_TpMax.Refresh() txbopDiv_TpMin.Refresh() txbopCt_TpMax.Refresh() txbopCt_TpMin.Refresh() txbopHF1_TpMax.Refresh() txbopHF1_TpMin.Refresh() txbopHF2_TpMax.Refresh() txbopHF2_TpMin.Refresh() txbopHF3_TpMax.Refresh() txbopHF3_TpMin.Refresh() txbopHF12_Tp.Refresh() txbopHF23_Tp.Refresh() txboptg1_FrMax.Refresh() txboptg1_FrMin.Refresh() txboptg1_VrMax.Refresh() txboptg1_VrMin.Refresh() txboptg2_FrMax.Refresh() txboptg2_FrMin.Refresh() txboptg2_VrMax.Refresh() txboptg2_VrMin.Refresh() txboptg3_FrMax.Refresh() txboptg3_FrMin.Refresh() txboptg3_VrMax.Refresh() txboptg3_VrMin.Refresh() txbopdy1_DtMax.Refresh() txbopdy1_DtMin.Refresh() txbopdy1_FrMax.Refresh() txbopdy1_FrMin.Refresh() txbopdy1_VpMax.Refresh() txbopdy1_VpMin.Refresh() txbopdy2_DtMax.Refresh() txbopdy2_DtMin.Refresh() txbopdy2_FrMax.Refresh() txbopdy2_FrMin.Refresh() txbopdy2_VpMax.Refresh() txbopdy2_VpMin.Refresh() txbopcs1_DyRg.Refresh() txbopcs1_FrMax.Refresh() txbopcs1_FrMin.Refresh() txbopcs1_VpMax.Refresh() txbopcs1_VpMin.Refresh() txbopcs2_DyRg.Refresh() txbopcs2_FrMax.Refresh() txbopcs2_FrMin.Refresh() txbopcs2_VpMax.Refresh() txbopcs2_VpMin.Refresh() txbopcs3_DyRg.Refresh() txbopcs3_FrMax.Refresh() txbopcs3_FrMin.Refresh() txbopcs3_VpMax.Refresh() txbopcs3_VpMin.Refresh() End Sub Private Sub btnOption_Click(sender As Object, e As EventArgs) Handles btnOption.Click formFullReset() pnStandard.Location = New Point(0, 0) pnMain.Visible = False pnStandard.Visible = True pnMain.Location = New Point(1920, 0) End Sub Private Sub monthCal_DateSelected(sender As Object, e As DateRangeEventArgs) Handles monthCal.DateSelected If monCalNum = Format(monthCal.SelectionStart, "yyyy-MM-dd") Then btnExcelSelect_Click(sender, e) Else monCalNum = Format(monthCal.SelectionStart, "yyyy-MM-dd") End If End Sub Private Sub CalTimer_Tick(sender As Object, e As EventArgs) Handles CalTimer.Tick If monCalTime = True Then monCalNum = String.Empty monCalTime = False Else monCalTime = True End If End Sub Private Sub txbProdSerial_Click(sender As Object, e As EventArgs) Handles txbProdSerial.Click txbProdSerial.BackColor = SystemColors.Window If ckbBarcode.Checked = True Then txbProdSerial.Select(txbProdSerial.MaxLength, 0) End If End Sub Private Sub rdbMax_CheckedChanged(sender As Object, e As EventArgs) Handles rdbMax.CheckedChanged If rdbMax.Checked = True Then gbStandard.Text = "MAXIMUM 합격기준" dataSetting() configLoad() gbStandard.Visible = True gbStandard_AT.Visible = False End If End Sub Private Sub rdbAlto_CheckedChanged(sender As Object, e As EventArgs) Handles rdbAlto.CheckedChanged If rdbAlto.Checked = True Then gbStandard.Text = "Alto 합격기준" dataSetting() configLoad() gbStandard.Visible = False gbStandard_AT.Visible = True End If End Sub Private Sub rdbEffect_CheckedChanged(sender As Object, e As EventArgs) Handles rdbEffect.CheckedChanged If rdbEffect.Checked = True Then gbStandard.Text = "EFFECT 합격기준" dataSetting() configLoad() gbStandard.Visible = True gbStandard_AT.Visible = False End If End Sub Private Sub rdbMaxAlpha_CheckedChanged(sender As Object, e As EventArgs) Handles rdbMaxAlpha.CheckedChanged If rdbMaxAlpha.Checked = True Then gbStandard.Text = "MAXIMUM ALPHA 합격기준" dataSetting() configLoad() gbStandard.Visible = True gbStandard_AT.Visible = False End If End Sub Private Sub btnReturn_Click(sender As Object, e As EventArgs) Handles btnReturn.Click If txbProdSerial.Text = String.Empty Then MsgBox("입력할 정보가 존재하지 않습니다. 데이터를 읽어주십시오,", vbExclamation) GoTo finishFunc End If If txbProdSerial.Text.Length <> prodLength Then MsgBox("잘못된 시리얼 번호를 입력하였습니다.", vbExclamation) GoTo finishFunc End If DBCmd = "SELECT EXISTS (SELECT 1 FROM " & ApplyReturnDB & " WHERE Product_SN = '" & txbProdSerial.Text & "') AS a" Dim DataExist As String = DBQueryScalar(DBCmd) If DataExist Then ReturnForm.ShowDialog() Else MsgBox("반품 데이터가 존재하지 않습니다..", vbCritical) End If finishFunc: txbProdSerial.Focus() End Sub Private Sub txbProdSerial_GotFocus(sender As Object, e As EventArgs) Handles txbProdSerial.GotFocus txbProdSerial.Select(txbProdSerial.MaxLength, 0) End Sub Private Sub txbTDSN_GotFocus(sender As Object, e As EventArgs) Handles txbTDSN.GotFocus, txbTDDate.GotFocus, txbTDGrade.GotFocus, txbTDTDate.GotFocus, txbTDTTime.GotFocus, txbDotDate_M1.GotFocus, txbDotDepth_M1.GotFocus, txbDotPower_M1.GotFocus, txbDotTime_M1.GotFocus, txbHBettery_M1.GotFocus, txbHCtemp_M1.GotFocus, txbHDate_M1.GotFocus, txbHDtemp_M1.GotFocus, txbHFreq_M1.GotFocus, txbHFW_M1.GotFocus, txbHHifu_M1.GotFocus, txbHTime_M1.GotFocus, txbRDate_M1.GotFocus, txbREP_M1.GotFocus, txbRMC_M1.GotFocus, txbRRF_M1.GotFocus, txbRTime_M1.GotFocus, txbDate_M1.GotFocus, txbDate.GotFocus, txbSerial_M1.GotFocus, txbFactory_M1.GotFocus, txbModel_M1.GotFocus, txbType_M1.GotFocus, txbFace_M1.GotFocus, txbEye_M1.GotFocus, txbAgency_M1.GotFocus, txbCountry_M1.GotFocus txbProdSerial.Focus() End Sub End Class