2025-06-25 11:19:00 +09:00
Imports System . IO
Imports System . IO . Ports
Imports System . Text
Imports System . Threading
Imports System . Math
Public Class MainForm
Private Const TDMaxLength As Int16 = 10
Private Const TDMinLength As Int16 = 9
Private Const InputCntVal As Int16 = 10
Private Const LimitWhile As Int16 = 5
Private TDSNHead1 As String = " DIT "
Private TDSNHead2 As String = " J "
Private DBCmd As String
Private tmpCmdMessage As String
Private rxMessage , cmdMessage As String
Private ThreadStop As Boolean = False
Private SerialNum As String
Private NowDate As String
Private NowTime As String
Private OptionChange As Boolean = False
Private IDName As String = String . Empty
Private ModelCode As String
Private TypeCode As String
Private ColorCode As String
Private ClassCode As String
Private ProdCode As String
Private TDUseCompare As Boolean = False
Private RegNumber ( ) As Integer
Private InputCnt As Int16
Private TrayData ( 0 , 0 ) As Integer
Private Enum TrayDataList
NumData
State
maxList
End Enum
Private Enum SearchList
TestStep
Power
Depth
Serial
InputDate
Frequency
TestDate
Capacitor_FW
Grede
maxList
End Enum
Private TDData ( SearchList . maxList - 1 ) As String
Private TDDataTxb ( SearchList . maxList - 1 ) As TextBox
Private Enum ModeList
Prod_Input
TDRecycle
End Enum
Private NowMode As Int16
Private Enum SaveList
Info
Config
Print
MaxSave
End Enum
Private SaveName ( SaveList . MaxSave ) As String
Private Enum CountList
Total
Success
Fail
maxCount
End Enum
Private CountSelect ( CountList . maxCount - 1 ) As Integer
Private ErrorData As Boolean = False
Private Enum ClassList
Domestic_Set
Domestic_AS
Domestic_shop
OverSeas_Set
OverSeas_AS
Experience
MaxClass
End Enum
Private ClassNumber ( ClassList . MaxClass - 1 ) As Int16
Private Sub SetInputCnt ( )
InputCnt = InputCntVal
ScanTimer . Enabled = True
End Sub
Private Delegate Sub SerialDelegate ( )
Private SerialDelegateFunc As SerialDelegate
Private Runthread As Thread = New Thread ( AddressOf ThreadPlay )
Private ThreadSwitch As Boolean = True
Private Sub ScanTimer_Tick ( sender As Object , e As EventArgs ) Handles ScanTimer . Tick
If InputCnt Then
InputCnt -= 1
Else
ScanTimer . Enabled = False
If txbPVSN . Text . Replace ( " " , " " ) <> " " Or chbAutoMeasure . Checked Then
Select Case NowMode
Case ModeList . Prod_Input
If InStr ( txbPVSN . Text , " [START] " ) > 0 Or txbPVSN . Text . Length = 12 Then
btnEnter_Click ( sender , e )
End If
Case ModeList . TDRecycle
If InStr ( txbPVSN . Text , TDSNHead1 ) > 0 Or InStr ( txbPVSN . Text , TDSNHead2 ) > 0 Then
btnEnter_Click ( sender , e )
End If
Case Else
MsgBox ( " 잘못된 접근입니다. " , vbCritical )
End Select
txbPVSN . Focus ( )
Else
btnEnter . Focus ( )
End If
txbPVSN . Refresh ( )
btnEnter . Refresh ( )
End If
End Sub
Private Sub txbPVSN_TextChanged ( sender As Object , e As EventArgs ) Handles txbPVSN . TextChanged
Dim TmpStr As String
If txbPVSN . Enabled = True Then
If InputCnt = 0 And chbUseBarcode . Checked = True Then
TmpStr = txbPVSN . Text
If ( Len ( TmpStr ) > 1 ) Then
TmpStr = Mid ( TmpStr , Len ( TmpStr ) , 1 )
txbPVSN . Clear ( )
txbPVSN . AppendText ( TmpStr )
End If
SetInputCnt ( )
End If
End If
End Sub
Private Sub DataSetting ( )
Select Case NowMode
Case ModeList . Prod_Input
TDDataTxb ( SearchList . TestStep ) = txbTDStep
TDDataTxb ( SearchList . Frequency ) = txbTDFreq
TDDataTxb ( SearchList . Grede ) = txbTDGrade
TDDataTxb ( SearchList . Serial ) = txbTDNum
TDDataTxb ( SearchList . InputDate ) = txbTDIDate
TDDataTxb ( SearchList . Depth ) = txbTDDepth
TDDataTxb ( SearchList . TestDate ) = txbReTest
TDDataTxb ( SearchList . Power ) = txbTDPower
TDDataTxb ( SearchList . Capacitor_FW ) = txbPDVersion ''제외
Case ModeList . TDRecycle
TDDataTxb ( SearchList . TestStep ) = txbReOrder
TDDataTxb ( SearchList . Capacitor_FW ) = txbReCValue
TDDataTxb ( SearchList . Frequency ) = txbReFreq
TDDataTxb ( SearchList . Grede ) = txbReGrade
TDDataTxb ( SearchList . Serial ) = txbReSerial
TDDataTxb ( SearchList . InputDate ) = txbReInput
TDDataTxb ( SearchList . Depth ) = txbReMotor
TDDataTxb ( SearchList . TestDate ) = txbReTest
TDDataTxb ( SearchList . Power ) = txbRePower
End Select
End Sub
Private Sub DefaultSetting ( )
PrintUseCkb ( PrintList . BoxCode ) = ckbBoxPnt
PrintUseCkb ( PrintList . Warranty ) = ckbWarPnt
PrintUseCkb ( PrintList . ProdLabel ) = ckbProdPnt
PrintUseTxb ( PrintList . BoxCode ) = txbPtBox_Name
PrintUseTxb ( PrintList . Warranty ) = txbPtWar_Name
PrintUseTxb ( PrintList . ProdLabel ) = txbPtProd_Name
PrintUseZip ( PrintList . BoxCode ) = txbPtBox_Label
PrintUseZip ( PrintList . Warranty ) = txbPtWar_Label
PrintUseZip ( PrintList . ProdLabel ) = txbPtProd_Label
SaveName ( SaveList . Info ) = " InfoList "
SaveName ( SaveList . Config ) = " Config "
SaveName ( SaveList . Print ) = " Print "
ClassNumber ( ClassList . Domestic_Set ) = " 1 "
ClassNumber ( ClassList . Domestic_AS ) = " 2 "
ClassNumber ( ClassList . Domestic_shop ) = " 3 "
ClassNumber ( ClassList . OverSeas_Set ) = " 5 "
ClassNumber ( ClassList . OverSeas_AS ) = " 6 "
ClassNumber ( ClassList . Experience ) = " 7 "
End Sub
Private Sub RegCboSetting ( )
ModelCboSetting ( )
ClassCboSetting ( )
cboClear ( )
End Sub
Private Sub ClassCboSetting ( )
cboRegClass . Items . Clear ( )
cboRegClass . Items . Add ( " 국내-세트 " )
cboRegClass . Items . Add ( " 국내-A/S " )
cboRegClass . Items . Add ( " 국내-샵용 " )
cboRegClass . Items . Add ( " 해외-세트 " )
cboRegClass . Items . Add ( " 해외-A/S " )
cboRegClass . Items . Add ( " 체험단 " )
End Sub
Private Sub ModelCboSetting ( )
cboRegModel . Items . Clear ( )
cboRegModel . Items . Add ( " MAXIMUM " )
cboRegModel . Items . Add ( " ALTO " )
cboRegModel . Items . Add ( " EFFECT " )
2025-07-16 10:39:32 +09:00
cboRegModel . Items . Add ( " MAXIMUM ALPHA " )
2025-06-25 11:19:00 +09:00
End Sub
Private Sub cboRegModel_SelectedIndexChanged ( sender As Object , e As EventArgs ) Handles cboRegModel . SelectedIndexChanged
If cboRegModel . SelectedIndex > - 1 Then
cboRegType . Items . Clear ( )
Select Case cboRegModel . SelectedItem
Case " MAXIMUM "
cboRegType . Items . Add ( " V1 " )
cboRegType . Items . Add ( " V2 " )
Case " ALTO "
cboRegType . Items . Add ( " SET " )
Case " EFFECT "
2025-07-17 16:34:47 +09:00
cboRegType . Items . Add ( " V2 " )
cboRegType . Items . Add ( " V3 " )
2025-07-16 10:39:32 +09:00
Case " MAXIMUM ALPHA "
cboRegType . Items . Add ( " SET " )
2025-06-25 11:19:00 +09:00
Case Else
MsgBox ( " 잘못된 경로입니다. " , vbCritical )
End Select
cboRegType . SelectedIndex = - 1
cboRegType . Text = " SELECT! "
pnRegType . Enabled = True
End If
End Sub
Private Sub cboRegType_SelectedIndexChanged ( sender As Object , e As EventArgs ) Handles cboRegType . SelectedIndexChanged
If cboRegType . SelectedIndex > - 1 Then
cboRegColor . Items . Clear ( )
Select Case cboRegModel . SelectedItem
Case " MAXIMUM "
Select Case cboRegType . SelectedItem
Case " V1 "
cboRegColor . Items . Add ( " White " )
cboRegColor . Items . Add ( " Pink " )
cboRegColor . Items . Add ( " Mint " )
cboRegColor . Items . Add ( " Purple " )
cboRegColor . Items . Add ( " Yellow " )
cboRegColor . Items . Add ( " Black_Gold " )
Case " V2 "
cboRegColor . Items . Add ( " White " )
cboRegColor . Items . Add ( " Shine_Mint " )
cboRegColor . Items . Add ( " Black_Black " )
cboRegColor . Items . Add ( " Peach " )
cboRegColor . Items . Add ( " Purple " )
cboRegColor . Items . Add ( " Black_Gold " )
2025-06-25 14:36:35 +09:00
cboRegColor . Items . Add ( " Pink " )
cboRegColor . Items . Add ( " Yellow " )
2025-06-25 11:19:00 +09:00
Case Else
MsgBox ( " 잘못된 경로입니다. " , vbCritical )
End Select
Case " ALTO "
Select Case cboRegType . SelectedItem
Case " SET "
cboRegColor . Items . Add ( " White " )
cboRegColor . Items . Add ( " Purple " )
cboRegColor . Items . Add ( " Black_Gold " )
Case Else
MsgBox ( " 잘못된 경로입니다. " , vbCritical )
End Select
Case " EFFECT "
Select Case cboRegType . SelectedItem
2025-07-17 16:34:47 +09:00
Case " V2 "
cboRegColor . Items . Add ( " White_Brown " )
cboRegColor . Items . Add ( " White_Pink " )
cboRegColor . Items . Add ( " White_Sky " )
Case " V3 "
cboRegColor . Items . Add ( " LineFrends_Brown " )
cboRegColor . Items . Add ( " LineFrends_Sally " )
2025-06-25 11:19:00 +09:00
Case Else
MsgBox ( " 잘못된 경로입니다. " , vbCritical )
End Select
2025-07-16 10:39:32 +09:00
Case " MAXIMUM ALPHA "
Select Case cboRegType . SelectedItem
Case " SET "
cboRegColor . Items . Add ( " Ruby_Red " )
cboRegColor . Items . Add ( " Topaz_Orange " )
cboRegColor . Items . Add ( " Emerald_Green " )
cboRegColor . Items . Add ( " Sappaire_Blue " )
cboRegColor . Items . Add ( " Topaz_Brown " )
cboRegColor . Items . Add ( " Sitrin_Gold " )
Case Else
MsgBox ( " 잘못된 경로입니다. " , vbCritical )
End Select
2025-06-25 11:19:00 +09:00
Case Else
MsgBox ( " 잘못된 경로입니다. " , vbCritical )
End Select
cboRegColor . SelectedIndex = - 1
cboRegColor . Text = " SELECT! "
pnRegColor . Enabled = True
End If
End Sub
Private Function ColorSet ( cboSelect As Integer ) As Boolean
Select Case dgvDataSet . Rows ( cboSelect ) . Cells ( 1 ) . Value
Case " MAXIMUM "
ModelCode = " 3 "
TDUseCompare = True
Select Case dgvDataSet . Rows ( cboSelect ) . Cells ( 2 ) . Value
Case " V1 "
TypeCode = " 0 "
Select Case dgvDataSet . Rows ( cboSelect ) . Cells ( 5 ) . Value
Case " White "
ColorCode = " 0 "
Case " Pink "
ColorCode = " 3 "
Case " Yellow "
ColorCode = " 5 "
Case " Mint "
ColorCode = " 7 "
Case " Purple "
ColorCode = " 8 "
Case " Black_Gold "
ColorCode = " 9 "
Case Else
Return True
End Select
Case " V2 "
TypeCode = " 1 "
Select Case dgvDataSet . Rows ( cboSelect ) . Cells ( 5 ) . Value
Case " White "
ColorCode = " 0 "
Case " Shine_Mint "
ColorCode = " 2 "
Case " Black_Black "
ColorCode = " 4 "
Case " Peach "
ColorCode = " 6 "
Case " Purple "
ColorCode = " 8 "
Case " Black_Gold "
ColorCode = " 9 "
2025-06-25 14:36:35 +09:00
Case " Pink "
ColorCode = " 3 "
Case " Yellow "
ColorCode = " 5 "
2025-06-25 11:19:00 +09:00
Case Else
Return True
End Select
Case Else
Return True
End Select
Case " ALTO "
ModelCode = " 5 "
TDUseCompare = False
Select Case dgvDataSet . Rows ( cboSelect ) . Cells ( 2 ) . Value
Case " SET "
TypeCode = " 0 "
Select Case dgvDataSet . Rows ( cboSelect ) . Cells ( 5 ) . Value
Case " White "
ColorCode = " 0 "
Case " Purple "
ColorCode = " 8 "
Case " Black_Gold "
ColorCode = " 9 "
Case Else
Return True
End Select
End Select
Case " EFFECT "
ModelCode = " 6 "
TDUseCompare = True
Select Case dgvDataSet . Rows ( cboSelect ) . Cells ( 2 ) . Value
2025-07-17 16:34:47 +09:00
Case " V2 "
TypeCode = " 0 " 'SET 였을 때 0 으로 고정
Select Case dgvDataSet . Rows ( cboSelect ) . Cells ( 5 ) . Value
Case " White_Pink "
ColorCode = " 1 "
Case " White_Sky "
ColorCode = " 2 "
Case " White_Brown "
ColorCode = " 3 "
Case Else
Return True
End Select
Case " V3 "
TypeCode = " 3 " 'V3 혼란스럽지 않게 3으로 고정
2025-06-25 11:19:00 +09:00
Select Case dgvDataSet . Rows ( cboSelect ) . Cells ( 5 ) . Value
2025-07-17 16:34:47 +09:00
Case " LineFrends_Brown "
ColorCode = " 4 "
Case " LineFrends_Sally "
ColorCode = " 5 "
2025-06-25 11:19:00 +09:00
Case Else
Return True
End Select
End Select
2025-07-16 10:39:32 +09:00
Case " MAXIMUM ALPHA "
ModelCode = " 7 "
TDUseCompare = True
Select Case dgvDataSet . Rows ( cboSelect ) . Cells ( 2 ) . Value
Case " SET "
TypeCode = " 0 "
Select Case dgvDataSet . Rows ( cboSelect ) . Cells ( 5 ) . Value
Case " Ruby_Red "
ColorCode = " 1 "
Case " Topaz_Orange "
ColorCode = " 2 "
Case " Emerald_Green "
ColorCode = " 3 "
Case " Sapphire_Blue "
ColorCode = " 4 "
Case " Topaz_Brown "
ColorCode = " 5 "
Case " Stirin_Gold "
ColorCode = " 6 "
Case Else
Return True
End Select
End Select
2025-06-25 11:19:00 +09:00
Case Else
TDUseCompare = False
Return True
End Select
Return False
End Function
Private Sub MainForm_Load ( sender As Object , e As EventArgs ) Handles MyBase . Load
FormSetting ( )
DefaultSetting ( )
ModeEnable ( )
DataSetting ( )
2025-06-26 13:55:14 +09:00
ComboBoxSetting ( )
txtManufactureDate . ReadOnly = True
txtManufactureDate . BackColor = Color . Lavender
UpdateDateTextBox ( )
2025-06-25 11:19:00 +09:00
For i = SaveList . Info To SaveList . MaxSave - 1
OptionLoad ( i )
Next
Print_Activate ( )
RegCboSetting ( )
StartCountSetting ( )
NowRegCheck ( )
txbPVSN . Focus ( )
End Sub
2025-06-26 13:55:14 +09:00
Private Sub ComboBoxSetting ( )
' 년도 콤보박스 (예: 2020~2030)
For i As Integer = 2020 To 2030
cmbYear . Items . Add ( i . ToString ( ) )
Next
' 월 콤보박스 (1~12)
For i As Integer = 1 To 12
cmbMonth . Items . Add ( i . ToString ( " 00 " ) )
Next
' 일 콤보박스 (1~31)
For i As Integer = 1 To 31
cmbDay . Items . Add ( i . ToString ( " 00 " ) )
Next
' 기본값 설정 (오늘 날짜)
cmbYear . Text = DateTime . Now . Year . ToString ( )
cmbMonth . Text = DateTime . Now . Month . ToString ( " 00 " )
cmbDay . Text = DateTime . Now . Day . ToString ( " 00 " )
End Sub
Private Sub UpdateDateTextBox ( )
If cmbYear . Text <> " " And cmbMonth . Text <> " " And cmbDay . Text <> " " Then
txtManufactureDate . Text = cmbYear . Text & " - " & cmbMonth . Text . PadLeft ( 2 , " 0 "c ) & " - " & cmbDay . Text . PadLeft ( 2 , " 0 "c )
Else
txtManufactureDate . Text = " "
End If
End Sub
Private Sub cmbYear_SelectedIndexChanged ( ) Handles cmbYear . SelectedIndexChanged
UpdateDateTextBox ( )
End Sub
Private Sub cmbMonth_SelectedIndexChanged ( ) Handles cmbMonth . SelectedIndexChanged
UpdateDateTextBox ( )
End Sub
Private Sub cmbDay_SelectedIndexChanged ( ) Handles cmbDay . SelectedIndexChanged
UpdateDateTextBox ( )
End Sub
2025-06-25 11:19:00 +09:00
Private Sub MainForm_FormClosing ( sender As Object , e As FormClosingEventArgs ) Handles MyBase . FormClosing
If UserLogOut ( ) Then
End
Else
e . Cancel = True
End If
End Sub
Private Function UserLogOut ( ) As Boolean
DBCmd = " UPDATE " & LoginDB & " SET NowState = '0' WHERE UserID = ' " & IDName & " ' "
If DBCommand ( DBCmd ) Then
Return True
Else
Return False
End If
End Function
Private Sub btnExit_Click ( sender As Object , e As EventArgs ) Handles btnExit . Click
If Runthread . IsAlive = True Then
Runthread . Abort ( )
End If
If UserLogOut ( ) Then
End
Else
MsgBox ( " LogOut Fail! " , vbCritical )
End If
End Sub
Private Sub FormSetting ( )
Const ProgramName As String = " Product Program Ver_ "
2025-07-24 11:20:46 +09:00
Const VersionNum As String = " 1.1.6 "
2025-06-25 11:19:00 +09:00
Me . Text = ProgramName & VersionNum
Me . Size = New Size ( 1920 , 1050 )
Me . WindowState = FormWindowState . Maximized
IDName = LoginForm . UserInfo . UserID
dgvPrinter . DefaultCellStyle . Font = New Font ( " 함초롱바탕 " , 12 )
NowTimer . Enabled = True
End Sub
Private Sub ModeEnable ( )
rdbCSearch . Enabled = False
rdbPD1 . Enabled = False
rdbPD2 . Enabled = True
rdbCheck . Enabled = False
rdbManager . Enabled = False
rdbRecycle . Enabled = True
End Sub
Private Sub ConfigSetting ( )
chbUseBarcode . Location = New Point ( 45 , 20 )
chbAutoMeasure . Location = New Point ( 45 , 50 )
ckbPrintUse . Location = New Point ( 200 , 20 )
ckbAutoFunc . Location = New Point ( 200 , 50 )
If rdbRecycle . Checked = True Then
ckbAutoFunc . Text = " 자동삭제 "
ckbAutoFunc . Checked = True
Else
ckbAutoFunc . Text = " 자동생성 "
ckbAutoFunc . Checked = True
End If
End Sub
Private Sub chbUseBarcode_CheckedChanged ( sender As Object , e As EventArgs ) Handles chbUseBarcode . CheckedChanged
If chbUseBarcode . Checked = True Then
chbAutoMeasure . Checked = True
chbAutoMeasure . Enabled = True
lbPVSN . Location = New Point ( 265 , 28 )
txbPVSN . Location = New Point ( 760 , 25 )
btnEnter . Enabled = False
btnEnter . Visible = False
Else
chbAutoMeasure . Checked = False
chbAutoMeasure . Enabled = False
lbPVSN . Location = New Point ( 155 , 28 )
txbPVSN . Location = New Point ( 650 , 25 )
btnEnter . Enabled = True
btnEnter . Visible = True
End If
txbPVSN . Focus ( )
End Sub
Private Sub rdbRecycle_CheckedChanged ( sender As Object , e As EventArgs ) Handles rdbRecycle . CheckedChanged
If rdbRecycle . Checked = True Then
NowMode = ModeList . TDRecycle
OptionSave ( SaveList . Config )
ModeChange ( )
End If
End Sub
Private Sub rdbPD2_CheckedChanged ( sender As Object , e As EventArgs ) Handles rdbPD2 . CheckedChanged
If rdbPD2 . Checked = True Then
NowMode = ModeList . Prod_Input
OptionSave ( SaveList . Config )
ModeChange ( )
End If
End Sub
Private Sub ModeChange ( )
TimerFalse ( )
ConfigSetting ( )
gbSerial . Enabled = False
lbState . Visible = False
pnMaxInput . Enabled = False
pnMaxInput . Visible = False
pnRecycle . Enabled = False
pnRecycle . Visible = False
Select Case NowMode
Case ModeList . Prod_Input
pnMaxInput . Enabled = True
pnMaxInput . Visible = True
gbSerial . Enabled = True
lbState . Visible = True
Case ModeList . TDRecycle
pnRecycle . Enabled = True
pnRecycle . Visible = True
Case Else
MsgBox ( " 알 수 없는 동작 모드입니다. 관리자에게 문의해주세요. " , vbCritical )
End Select
DataReset ( )
End Sub
Private Sub StartCountSetting ( )
NowDate = Format ( Now , " yyyy-MM-dd " )
If TodayCountCreate ( ) Then
MsgBox ( " 수량 카운터를 생성하는 도중 오류가 발생하였습니다. " , vbCritical )
Exit Sub
End If
If cboPDInfo . SelectedIndex = - 1 Then
ModelCode = 3
End If
If TodayCountLoad ( ) Then
MsgBox ( " 수량 카운터를 불러오는 도중 오류가 발생하였습니다. " , vbCritical )
Exit Sub
End If
CountSetting ( )
End Sub
Private Sub NowTimer_Tick ( sender As Object , e As EventArgs ) Handles NowTimer . Tick
lblTime . Text = Now
End Sub
Private Sub cmdSerial_Click ( sender As Object , e As EventArgs ) Handles cmdSerial . Click
TimerFalse ( )
If cmdSerial . Text = " 스캔 " Then
cboComPort . Text = " SELECT! "
LoadComportName ( )
cmdSerial . Text = " 연결 "
Else
PortSerial . Close ( )
If PortSerial . IsOpen = True Then
PortSerial . Close ( )
SerialStateOFF ( )
End If
Dim PortName As String = cboComPort . SelectedItem
If OpenSerial ( PortName ) = False Then
SerialStateOFF ( )
Else
OptionSave ( SaveList . Config )
End If
cmdSerial . Text = " 스캔 "
End If
txbPVSN . Focus ( )
End Sub
Private Sub SerialStateOn ( )
txbState . BackColor = Color . Green
lbState . BackColor = Color . Green
lbState . Text = " ON "
lbState . Location = New Point ( 389 , 40 )
End Sub
Private Sub SerialStateOFF ( )
txbState . BackColor = Color . Red
lbState . BackColor = Color . Red
lbState . Text = " OFF "
lbState . Location = New Point ( 385 , 40 )
End Sub
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 ( " Port Load ERROR !! " & vbCrLf & ex . Message , vbCritical )
End Try
End Sub
Private Function OpenSerial ( SerialName As String ) As Boolean
Try
If SerialName <> " " Then
If PortSerial . IsOpen = False Then
With PortSerial
. PortName = SerialName
. BaudRate = 230400
. DataBits = 8
. Parity = IO . Ports . Parity . None
. StopBits = IO . Ports . StopBits . One
. Handshake = IO . Ports . Handshake . None
End With
PortSerial . Open ( )
SerialStateOn ( )
End If
Return True
Else
MsgBox ( " 시리얼포트를 설정해주세요! " & vbCrLf & " " , vbCritical , " DUALSONIC T/D Selecter Tester Manager " )
Return False
End If
Catch ex As Exception
MsgBox ( " COM 포트 연결 ERROR !! " & vbCrLf & ex . Message , vbCritical )
Return False
End Try
End Function
Private Sub btnEnter_Click ( sender As Object , e As EventArgs ) Handles btnEnter . Click
Dim SearchData As String = txbPVSN . Text
If SearchData . Replace ( " " , " " ) = " " Then
MsgBox ( " 검색할 TD 번호를 입력하여 주십시오. " , vbExclamation )
GoTo FailFunc
End If
Select Case NowMode
Case ModeList . Prod_Input
TimerFalse ( )
ProdInputFunc ( sender , e , SearchData )
Case ModeList . TDRecycle
TDRecycleFunc ( sender , e , SearchData )
Case Else
MsgBox ( " 잘못된 루트입니다. " , vbCritical )
End Select
Exit Sub
FailFunc :
txbPVSN . BackColor = Color . Red
txbPVSN . Text = String . Empty
txbPVSN . Focus ( )
End Sub
Private Function SerialUseCheck ( ) As Boolean
If txbNowNum . Text = " " Or txbNowNum . Text = " 0 " Or txbNowNum . Text = String . Empty Then
MsgBox ( " 시리얼 번호를 불러올 수 없습니다. " , vbCritical )
Return True
Else
ProdCode = txbNowNum . Text
End If
Dim FrontSerial As String = Mid ( ProdCode , 1 , 3 )
Dim BackSerial As String = Mid ( ProdCode , 4 , 3 )
SerialNum = ModelCode & TypeCode & Format ( Now , " yyMM " ) & BackSerial & FrontSerial
If DBSerialCheck ( ) Then
Return False
Else
2025-07-21 16:18:44 +09:00
MsgBox ( " 생성 할 시리얼 번호 " & SerialNum & " 은 이미 존재 합니다. " , vbCritical )
2025-06-25 11:19:00 +09:00
Return True
End If
End Function
'Private Function SerialUseCheck() As Boolean
' Const ReGen As Int16 = 5
' Dim SearchData As String = ClassCode & ColorCode
' RichTextBox1.AppendText("SearchData :" & SearchData & vbCrLf)
' Dim rdNum As Random = New Random
' For i = 1 To ReGen
' If SerialCompare(SearchData) Then
' ProdCode = NextSerialCheck(SearchData)
' If ProdCode = "0" Then
' MsgBox("시리얼 번호 확인 중 오류가 발생하였습니다.", vbCritical)
' Return True
' End If
' Else
' ProdCode = SearchData & "0000"
' End If
' ProdCode = Val(ProdCode) + i
' RichTextBox1.AppendText("ProdCode :" & ProdCode & vbCrLf)
' Dim FrontSerial As String = Mid(ProdCode, 1, 3)
' RichTextBox1.AppendText("FrontSerial :" & FrontSerial & vbCrLf)
' Dim BackSerial As String = Mid(ProdCode, 4, 3)
' RichTextBox1.AppendText("BackSerial :" & BackSerial & vbCrLf)
' SerialNum = ModelCode & TypeCode & Format(Now, "yyMM") & BackSerial & FrontSerial
' RichTextBox1.AppendText("SerialNum :" & SerialNum & vbCrLf)
' Dim NumUse As Boolean = False
' For chk = 0 To 2
' If DBSerialCheck() Then
' NumUse = True
' Else
' NumUse = False
' Exit For
' End If
' Thread.Sleep(rdNum.Next(50, 100))
' Next
' If NumUse = True Then
' If DBPreemptSet() Then
' Return False
' End If
' End If
' Next
' MsgBox("시리얼 번호를 설정할 수 없습니다.", vbCritical)
' Return True
'End Function
'Private Function DBPreemptSet() As Boolean
' DBCmd = "UPDATE " & ApplyCartDB & " SET Product_SN = '" & SerialNum & "', Ct_SN = '" & ProdCode & "' WHERE PV_SN = '" & TDData(SearchList.Serial) & "'"
' If DBCommand(DBCmd) Then
' Return True
' Else
' Return False
' End If
'End Function
Private Function DBSerialCheck ( ) As Boolean
If TDUseCompare = True Then
DBCmd = " SELECT COUNT(NUMBER) FROM " & ApplyCartDB & " WHERE Product_SN = ' " & SerialNum & " ' "
Else
DBCmd = " SELECT COUNT(NUMBER) FROM " & ApplyNonTDDB & " WHERE Product_SN = ' " & SerialNum & " ' "
End If
Dim UseCheck As String = DBQueryScalar ( DBCmd )
If UseCheck = 0 Then
Return True
Else
Return False
End If
End Function
Private Function SerialCompare ( FrontCode As String ) As Boolean
DBCmd = " SELECT COUNT(Ct_SN) FROM " & ApplyCartDB & " WHERE Ct_Manufacture_Year = " & Format ( Now , " yy " ) & " AND Ct_Manufacture_Month = " & Format ( Now , " MM " ) & " AND Ct_SN IS not NULL AND Product_SN LIKE ' " & ModelCode & TypeCode & " %' AND Ct_SN LIKE ' " & FrontCode & " %' "
RichTextBox1 . AppendText ( " DBCmd FULL : " & DBCmd & vbCrLf )
Dim SerialUse As Integer = DBQueryScalar ( DBCmd )
RichTextBox1 . AppendText ( " SerialUse : " & SerialUse & vbCrLf )
If SerialUse = 0 Then
Return False
Else
Return True
End If
End Function
'Private Function NextSerialCheck(FrontCode As String) As String
' Dim UseSerial As String = String.Empty
' Dim NewSerialUse As Boolean = True
' Dim NowNumber As String = String.Empty
' DBCmd = "SELECT b.Ct_SN FROM (SELECT Ct_SN FROM " & ApplyCartDB & " WHERE Ct_Manufacture_Year = " & Format(Now, "yy") & " AND Ct_Manufacture_Month = " & Format(Now, "MM") & " AND Ct_SN IS not NULL AND Product_SN LIKE '" & ModelCode & TypeCode & "%' AND Ct_SN LIKE '" & FrontCode & "%' ORDER BY Ct_SN DESC LIMIT 5) AS b ORDER BY b.Ct_SN ASC LIMIT 5"
' RichTextBox1.AppendText("DBCmd FULL :" & DBCmd & vbCrLf)
' If DBQueryReader(DBCmd) Then
' For i = 0 To sqlDataQuery.Length - 1
' UseSerial = sqlDataQuery(i)
' If i = 0 Then
' NowNumber = UseSerial
' Else
' Dim CheckData As String = UseSerial - NowNumber
' If CheckData <> 1 Then
' Exit For
' Else
' NowNumber = UseSerial
' End If
' End If
' Next
' Return NowNumber
' Else
' Return "NULL"
' End If
'End Function
Private Sub ProdInputFunc ( sender As Object , e As EventArgs , SearchData As String )
StepReset ( )
ValueReset ( )
If cboPDInfo . SelectedIndex = - 1 Then
MsgBox ( " 제품 설정을 선택하지 않았습니다. 선택하여 주십시오. " , vbExclamation )
GoTo FailFunc
End If
If PortSerial . IsOpen = False Then
MsgBox ( " 통신 포트를 설정하지 않았습니다. 연결하여 주십시오. " , vbExclamation )
GoTo FailFunc
End If
If ckbAutoFunc . Checked = True Then
If SearchData <> " [START] " Then
MsgBox ( " 잘못된 시작 코드입니다. 확인하여 주십시오. " , vbExclamation )
GoTo FailFunc
End If
TraySerialSetting ( )
Else
Const SearchLength As Int16 = 12
If SearchData . Length <> SearchLength Then
MsgBox ( " 잘못된 제품 코드입니다. 확인하여 주십시오. " , vbExclamation )
GoTo FailFunc
End If
txbPDNum . Text = SearchData
SerialNum = SearchData
If DBSerialCheck ( ) = False Then
If RePrintCheck ( ) Then
Print_Activate ( )
Dim RePrForm As RePrintForm = New RePrintForm
RePrForm . Visible = False
RePrForm . ShowDialog ( )
GoTo RePrintOk
End If
End If
End If
RunStateFunc ( " 제품 연결 대기 " , Color . Orange )
ThreadStop = False
Runthread = New Thread ( AddressOf ThreadPlay )
Runthread . IsBackground = True
Runthread . Start ( )
Exit Sub
RePrintOk :
RunStateFunc ( " 재인쇄 완료 " , Color . Green )
Exit Sub
FailFunc :
RunStateFunc ( " 실 패 " , Color . Red )
End Sub
Private Function RePrintCheck ( ) As Boolean
If TDUseCompare = True Then
DBCmd = " SELECT TestStep FROM " & ApplyCartDB & " WHERE Product_SN = ' " & SerialNum & " ' "
Else
DBCmd = " SELECT TestStep FROM " & ApplyNonTDDB & " WHERE Product_SN = ' " & SerialNum & " ' "
End If
Dim StepCheck As String = DBQueryScalar ( DBCmd )
If StepCheck = " False " Then
Return False
End If
If StepCheck = " 31 " Then
Return True
End If
Return False
End Function
Private Sub ValueReset ( )
ProdCode = String . Empty
SerialNum = String . Empty
ThreadSwitch = True
ErrorData = False
End Sub
Private Sub ThreadPlay ( )
Const RunLimitMax As Int16 = 10
Dim RunLimit As Int16 = 0
Dim LimitFail As Boolean = False
SerialDelegateFunc = New SerialDelegate ( AddressOf ThreadFunc )
While ThreadSwitch
If ThreadStop = True Then '' 초기화 누를 시 강제 탈출하도록
ThreadSwitch = False
Exit While
End If
If RunLimit = RunLimitMax Then
ThreadSwitch = False
LimitFail = True
Exit While
End If
Me . Invoke ( SerialDelegateFunc )
Thread . Sleep ( 1000 )
RunLimit += 1
End While
If LimitFail = True Then
SerialDelegateFunc = New SerialDelegate ( AddressOf ThreadStateFunc )
Me . Invoke ( SerialDelegateFunc )
End If
End Sub
Private Sub ThreadStateFunc ( )
RunStateFunc ( " 시간 초과 " , Color . Red )
End Sub
Private Sub ThreadFunc ( )
Select Case NowMode
Case ModeList . Prod_Input
If IsNumeric ( ShotSearch ( ) ) Then
If ckbOpAlto . Checked = False Then
Dim SerialCode As String = TDCodeSearch ( )
If SerialCode = " 1 " Then
MsgBox ( " 제품과의 연결이 올바르지 않습니다. 다시 시도하여 주십시오. " , vbCritical )
GoTo ComErr
ElseIf SerialCode = " 0 " Then
MsgBox ( " TD 시리얼 번호가 존재하지 않습니다. TD 시리얼 번호를 등록하여 주십시오. " , vbCritical )
ErrorData = True
GoTo DataErr
End If
If TDExist ( SerialCode ) Then
ErrorData = True
GoTo DataErr
End If
If TDUseCompare = True Then
If TDSearch ( SerialCode ) Then
ErrorData = True
GoTo DataErr
End If
For i = SearchList . TestStep To SearchList . maxList - 1
If i = SearchList . TestStep Then
TDDataTxb ( i ) . Text = TestStepParsing ( )
If TDDataTxb ( i ) . Text = " NULL " Then
TDDataTxb ( i ) . BackColor = Color . Red
Else
TDDataTxb ( i ) . BackColor = Color . Green
End If
Else
TDDataTxb ( i ) . Text = TDData ( i )
End If
Next
Else
TDData ( SearchList . Serial ) = SerialCode
DBCmd = " SELECT TestStep FROM " & ApplyNonTDDB & " WHERE PV_SN = ' " & TDData ( SearchList . Serial ) & " ' "
TDData ( SearchList . TestStep ) = DBQueryScalar ( DBCmd )
TDDataTxb ( SearchList . TestStep ) . Text = TestStepParsing ( )
For i = SearchList . TestStep To SearchList . maxList - 1
If i <> SearchList . Serial Then
TDDataTxb ( i ) . Text = " 확인 "
Else
TDDataTxb ( i ) . Text = TDData ( SearchList . Serial )
End If
Next
End If
Else
TDData ( SearchList . Serial ) = txbTDNum . Text
For i = SearchList . TestStep To SearchList . maxList - 1
If i <> SearchList . Serial Then
TDDataTxb ( i ) . Text = " 확인 "
Else
TDDataTxb ( i ) . Text = TDData ( SearchList . Serial )
End If
Next
End If
RunTimer . Enabled = True
GoTo FinishFunc
End If
End Select
Exit Sub
DataErr :
RunStateFunc ( " 데이터 에러 " , Color . Red )
If ErrorData = True Then
If TodayCountSet ( False ) Then
RunStateFunc ( " D 수량 에러 " , Color . Red )
End If
End If
GoTo FinishFunc
ComErr :
RunStateFunc ( " 통신 에러 " , Color . Red )
FinishFunc :
ThreadSwitch = False
End Sub
Private Sub RunTimer_Tick ( sender As Object , e As EventArgs ) Handles RunTimer . Tick
Dim ConfigStr As String
If ThreadSwitch = False Then
RunTimer . Enabled = False
If ckbOpAlto . Checked = False Then
If txbTDNum . Text . Length = TDMaxLength Then
If Not ( ModelCode = 6 And ( Val ( TDData ( SearchList . TestStep ) ) = 21 Or Val ( TDData ( SearchList . TestStep ) ) = 25 ) ) Then
If Val ( TDData ( SearchList . TestStep ) ) <> 23 And Val ( TDData ( SearchList . TestStep ) ) <> 27 And Val ( TDData ( SearchList . TestStep ) ) <> 30 And Val ( TDData ( SearchList . TestStep ) ) <> 32 And Val ( TDData ( SearchList . TestStep ) ) <> 41 Then
If Val ( TDData ( SearchList . TestStep ) ) > 29 Then
RunStateFunc ( " 중복 처리 " , Color . Red )
ErrorData = True
GoTo FinishFunc
Else
RunStateFunc ( " 공정 순서 불량 " , Color . Red )
ErrorData = True
GoTo FinishFunc
End If
End If
End If
If TDUseCompare = True Then
ConfigStr = FreqPowerSearch ( )
If ConfigStr = " NULL " Or ConfigStr = " FAIL " Then
FreqPowerReg ( TDData ( SearchList . Frequency ) , TDData ( SearchList . Power ) )
ConfigStr = FreqPowerSearch ( )
End If
If ConfigStr = " NULL " Then
ErrorData = True
MsgBox ( " 잘못된 주파수가 입력되어 있습니다. 주파수 값을 확인하여 주십시오. " , vbExclamation )
GoTo DataFail
ElseIf ConfigStr = " FAIL " Then
MsgBox ( " 주파수를 읽어오지 못했습니다. 연결을 확인하여 주십시오. " , vbExclamation )
GoTo DataFail
End If
If FreqCompare ( ConfigStr ) Then
FreqPowerReg ( TDData ( SearchList . Frequency ) , TDData ( SearchList . Power ) )
End If
If FreqCompare ( ConfigStr ) Then
ErrorData = True
GoTo LoadFail
End If
TDDataTxb ( SearchList . Frequency ) . BackColor = Color . Green
TDDataTxb ( SearchList . Power ) . BackColor = Color . Green
End If
ConfigStr = FirmWareCheck ( )
If ConfigStr = " NULL " Then
MsgBox ( " 잘못된 펌웨어가 입력되어 있습니다. 값을 확인하여 주십시오. " , vbExclamation )
ErrorData = True
GoTo LoadFail
ElseIf ConfigStr = " FAIL " Then
MsgBox ( " 펌웨어를 읽어오지 못했습니다. 연결을 확인하여 주십시오. " , vbExclamation )
GoTo LoadFail
Else
txbPDVersion . Text = ConfigStr
End If
RunStateFunc ( " 정보 입력중 " , Color . Lime )
If ckbAutoFunc . Checked = True Then
If SerialUseCheck ( ) Then
GoTo LoadFail
End If
txbPDNum . Text = SerialNum
Else
SerialNum = txbPDNum . Text
Dim FrontSetSerial As String = Mid ( SerialNum , 7 , 3 )
Dim BackSetSerial As String = Mid ( SerialNum , 10 , 3 )
ProdCode = BackSetSerial & FrontSetSerial
End If
PrintFunc ( )
If ProdRegData ( txbPDCP . Text , txbPDCC . Text , txbPDAgency . Text ) Then
If ShotReg ( 0 ) Then
2025-07-24 11:20:46 +09:00
If ShotSearch ( ) = " False " Then 'If ShotSearch() = 0 Then
2025-06-25 11:19:00 +09:00
If DBProdReg ( txbPDCP . Text , txbPDCC . Text , txbPDAgency . Text , 0 ) Then
If TraySuccess ( ) Then
If TodayCountSet ( True ) Then
MsgBox ( " 데이터베이스 수량 카운트 도중 오류가 발생하였습니다. " , vbCritical )
GoTo LoadFail
End If
RunStateFunc ( " 입력 완료 " , Color . Green )
GoTo FinishFunc
Else
MsgBox ( " 데이터베이스에 Tray 내용을 등록하는 도중 오류가 발생하였습니다. " , vbCritical )
GoTo LoadFail
End If
Else
MsgBox ( " 데이터베이스에 등록하는 도중 오류가 발생하였습니다. " , vbCritical )
GoTo LoadFail
End If
Else
MsgBox ( " 샷 수 정보 확인 실패 ! " , vbCritical )
2025-07-24 11:20:46 +09:00
MsgBox ( " 통신 포트 연결을 확인하세요 " , vbCritical )
2025-06-25 11:19:00 +09:00
GoTo LoadFail
End If
Else
MsgBox ( " 샷 정보 입력 실패 ! " , vbCritical )
GoTo LoadFail
End If
Else
MsgBox ( " 시리얼 정보 입력 실패 ! " , vbCritical )
GoTo LoadFail
End If
Else
txbTDNum . BackColor = Color . Red
MsgBox ( " 잘못된 TD 번호가 입력되어 있습니다. TD 번호를 재입력하여 주십시오. " , vbExclamation )
GoTo FinishFunc
End If
Else
RunStateFunc ( " 정보 입력중 " , Color . Lime )
PrintFunc ( )
If ProdRegData ( txbPDCP . Text , txbPDCC . Text , txbPDAgency . Text ) Then
If DBProdRegAlto ( txbPDNum . Text , txbPDCP . Text , txbPDCC . Text , txbPDAgency . Text , 0 ) Then
If TodayCountSet ( True ) Then
MsgBox ( " 데이터베이스 수량 카운트 도중 오류가 발생하였습니다. " , vbCritical )
GoTo LoadFail
End If
RunStateFunc ( " 입력 완료 " , Color . Green )
GoTo FinishFunc
Else
MsgBox ( " 데이터베이스에 등록하는 도중 오류가 발생하였습니다. " , vbCritical )
GoTo LoadFail
End If
Else
MsgBox ( " 시리얼 정보 입력 실패 ! " , vbCritical )
GoTo LoadFail
End If
End If
GoTo FinishFunc
End If
Exit Sub
DataFail :
TDDataTxb ( SearchList . Frequency ) . BackColor = Color . Red
TDDataTxb ( SearchList . Power ) . BackColor = Color . Red
LoadFail :
RunStateFunc ( " 입력 실패 " , Color . Red )
If ErrorData = True Then
If TodayCountSet ( False ) Then
If DBProdFailReg ( ) Then
RunStateFunc ( " T 수량 에러 " , Color . Red )
End If
End If
End If
FinishFunc :
NowRegCheck ( )
End Sub
Private Function TraySuccess ( ) As Boolean
Dim TrayOkNg As Boolean = False
For i = 0 To TrayData . GetLength ( 1 ) - 1
If TrayData ( TrayDataList . NumData , i ) = txbNowNum . Text Then
Dim DBNum As Int16 = i + 1
DBCmd = " UPDATE " & InfoRegStateDB & " SET Tray " & DBNum & " State = ' " & Abs ( Val ( True ) ) & " ' WHERE UserID = ' " & IDName & " ' AND ModelNum = ' " & ModelCode & " ' AND TypeNum = ' " & TypeCode & " ' AND ColorNum = ' " & ColorCode & " ' AND UsageNum = ' " & ClassCode & " ' AND CreateYear = ' " & Format ( Now , " yy " ) & " ' AND CreateMonth = ' " & Format ( Now , " MM " ) & " ' "
If DBCommand ( DBCmd ) Then
Return True
End If
End If
Next
Return False
End Function
Public Sub PrintFunc ( )
If ckbPrintUse . Checked = True Then
Dim PrintThread As Thread = New Thread ( New ParameterizedThreadStart ( AddressOf PrintRun ) )
PrintThread . IsBackground = True
PrintThread . Start ( SerialNum )
End If
End Sub
Private Function DBProdReg ( Factory As String , Country As String , Agency As String , ShotCount As String ) As Boolean
Dim DBCheck As String = String . Empty
If TDData ( SearchList . TestStep ) = " 41 " Then
If TDUseCompare = True Then
DBCmd = " SELECT PV_SN FROM " & ApplyCartDB & " WHERE Product_SN = ' " & SerialNum & " ' "
Else
DBCmd = " SELECT PV_SN FROM " & ApplyNonTDDB & " WHERE Product_SN = ' " & SerialNum & " ' "
End If
Dim PVSN As String = DBQueryScalar ( DBCmd )
If PVSN = " False " Then
MsgBox ( " 제품 시리얼 번호에 등록된 TD 시리얼 번호를 검색하는 도중 오류가 발생하였습니다. " , vbCritical )
Return True
End If
If PVSN <> TDData ( SearchList . Serial ) Then
MsgBox ( " 제품 시리얼 번호에 등록된 TD 시리얼 번호가 저장된 시리얼 번호와 다릅니다. " , vbCritical )
Return True
End If
DBCmd = " UPDATE " & ApplyReturnDB & " SET DataRegDate = ' " & Format ( Now , " yyyy-MM-dd " ) & " ', DataRegTime = ' " & Format ( Now , " HH:mm:ss " ) & " ' WHERE Product_SN = ' " & SerialNum & " ' AND ReturnCount = (SELECT MAX(ReturnCount) FROM " & ApplyReturnDB & " WHERE Product_SN = ' " & SerialNum & " ') "
If DBCommand ( DBCmd ) = False Then
Return True
End If
End If
If TDUseCompare = True Then
DBCheck = " UPDATE " & ApplyCartDB & " SET Product_SN = null WHERE PV_SN = ' " & txbTDNum . Text & " ' "
2025-06-26 13:55:14 +09:00
DBCmd = " UPDATE " & ApplyCartDB & " SET TestStep = '31', Product_SN = ' " & SerialNum & " ', Ct_Manufacture_Name=' " & Factory & " ', Ct_Manufacture_Year=' " & Format ( Now , " yy " ) & " ', Ct_Manufacture_Month=' " & Format ( Now , " MM " ) & " ', Ct_SN=' " & ProdCode & " ', Ct_Model=' " & txbPDModel . Text & " ', Ct_Type=' " & txbPDType . Text & " ', Ct_Abroad=' " & Country & " ', Ct_Agency=' " & Agency & " ',Ct_Max_ShotCnt = ' " & ShotCount & " ', Ct_Remain_ShotCnt = ' " & ShotCount & " ', P3_DateTime = ' " & Format ( Now , " yyyy-MM-dd HH:mm:ss " ) & " ', Manufacture_Date =' " & txtManufactureDate . Text & " ' WHERE PV_SN = ' " & txbTDNum . Text & " ' "
2025-06-25 11:19:00 +09:00
Else
DBCheck = " UPDATE " & ApplyNonTDDB & " SET Product_SN = null WHERE PV_SN = ' " & txbTDNum . Text & " ' "
2025-06-26 13:55:14 +09:00
DBCmd = " UPDATE " & ApplyNonTDDB & " SET TestStep = '31', Product_SN = ' " & SerialNum & " ', Ct_Manufacture_Name=' " & Factory & " ', Ct_Manufacture_Year=' " & Format ( Now , " yy " ) & " ', Ct_Manufacture_Month=' " & Format ( Now , " MM " ) & " ', Ct_SN=' " & ProdCode & " ', Ct_Model=' " & txbPDModel . Text & " ', Ct_Type=' " & txbPDType . Text & " ', Ct_Abroad=' " & Country & " ', Ct_Agency=' " & Agency & " ', P3_DateTime = ' " & Format ( Now , " yyyy-MM-dd HH:mm:ss " ) & " ', Manufacture_Date =' " & txtManufactureDate . Text & " ' WHERE PV_SN = ' " & txbTDNum . Text & " ' "
2025-06-25 11:19:00 +09:00
End If
If DBCommand ( DBCheck ) Then
If DBCommand ( DBCmd ) Then
If TDUseCompare = True Then
DBCmd = " SELECT TestStep FROM " & ApplyCartDB & " Where Product_SN = ' " & SerialNum & " ' "
Else
DBCmd = " SELECT TestStep FROM " & ApplyNonTDDB & " Where Product_SN = ' " & SerialNum & " ' "
End If
If DBQueryScalar ( DBCmd ) = " 31 " Then
Return True
End If
Else
MsgBox ( " DB Update 도중 오류 발생 ! " , vbCritical )
Return True
End If
Else
MsgBox ( " DB NULL 변경 오류 발생 ! " , vbCritical )
Return True
End If
Return False
End Function
Private Function DBProdRegAlto ( ProdSerial As String , Factory As String , Country As String , Agency As String , ShotCount As String ) As Boolean
Dim DBSerial As String = Mid ( ProdSerial , 10 , 3 ) & Mid ( ProdSerial , 7 , 3 )
DBCmd = " INSERT INTO " & ApplyNonTDDB & " (TestStep,Product_SN,Ct_Manufacture_Name,Ct_Manufacture_Year,Ct_Manufacture_Month,Ct_SN,Ct_Model,Ct_Type,Ct_Abroad,Ct_Agency,P3_DateTime) VALUES('31',' " & ProdSerial & " ',' " & Factory & " ',' " & Format ( Now , " yy " ) & " ',' " & Format ( Now , " MM " ) & " ',' " & DBSerial & " ',' " & txbPDModel . Text & " ',' " & txbPDType . Text & " ',' " & Country & " ',' " & Agency & " ',' " & Format ( Now , " yyyy-MM-dd HH:mm:ss " ) & " ') "
If DBCommand ( DBCmd ) Then
DBCmd = " SELECT TestStep FROM " & ApplyNonTDDB & " Where Product_SN = ' " & ProdSerial & " ' "
If DBQueryScalar ( DBCmd ) = " 31 " Then
Return True
End If
End If
Return False
End Function
Private Function DBProdFailReg ( ) As Boolean
DBCmd = " UPDATE " & ApplyCartDB & " SET TestStep = '30',Product_SN = NULL, Ct_SN = null, P3_DateTime = ' " & Format ( Now , " yyyy-MM-dd HH:mm:ss " ) & " ' WHERE PV_SN = ' " & txbTDNum . Text & " ' "
If DBCommand ( DBCmd ) Then
DBCmd = " SELECT TestStep FROM " & ApplyCartDB & " Where PV_SN = ' " & txbTDNum . Text & " ' "
If DBQueryScalar ( DBCmd ) = " 30 " Then
Return True
End If
End If
Return False
End Function
Private Function CreateSerialCompare ( SerialNum As String ) As Boolean
DBCmd = " SELECT COUNT(NUMBER) FROM " & ApplyCartDB & " WHERE Product_SN = ' " & SerialNum & " ' "
Dim CompareData As String = DBQueryScalar ( DBCmd )
If CompareData > 0 Then
Return False
End If
Return True
End Function
Private Function SerialNumberSet ( ) As String
Const SearchLength As Int16 = 2
Const SerialLength As Int16 = 6
Dim SearchData As String = ClassCode & ColorCode
If SearchData . Length <> SearchLength Then
MsgBox ( " 잘못된 시리얼번호 타입입니다. " , vbCritical )
Return " FAIL "
End If
DBCmd = " SELECT Ct_SN FROM " & ApplyCartDB & " WHERE Ct_Manufacture_Year = " & Format ( Now , " yy " ) & " AND Ct_Manufacture_Month = " & Format ( Now , " MM " ) & " AND Ct_SN IS not NULL AND Ct_SN LIKE ' " & SearchData & " %' ORDER BY Ct_SN DESC LIMIT 1 "
Dim ScalarData = DBQueryScalar ( DBCmd )
If ScalarData = " False " Then
Return " FAIL "
End If
If ScalarData = " " Or ScalarData . Length <> SerialLength Then
ScalarData = SearchData & " 0000 "
End If
Return ScalarData
End Function
Private Function TDStepCheck ( TDName As String ) As String
If TDUseCompare = True Then
DBCmd = " SELECT TestStep FROM " & ApplyCartDB & " WHERE PV_SN = ' " & TDName & " ' "
Else
DBCmd = " SELECT TestStep FROM " & ApplyNonTDDB & " WHERE PV_SN = ' " & TDName & " ' "
End If
Return DBQueryScalar ( DBCmd )
End Function
Private Function ProdRegData ( Factory As String , Country As String , Agency As String ) As Boolean
Const Commander As String = " wrsconf1 "
Dim retVal As String
Dim ProdCode As String = Mid ( SerialNum , 1 , 2 )
Dim ProdDate As String = Mid ( SerialNum , 3 , 4 )
Dim FrontSetSerial As String = Mid ( SerialNum , 7 , 3 )
Dim BackSetSerial As String = Mid ( SerialNum , 10 , 3 )
Dim UseSerial As String = ProdDate & BackSetSerial & FrontSetSerial
tmpCmdMessage = " [ " & Commander & " " & Factory & " , " & UseSerial & " , " & ProdCode & " , " & Country & " , " & Agency & " ] " + vbCrLf
If SendData ( tmpCmdMessage ) Then
Return False
End If
retVal = PollingReceiveData ( 2000 )
If retVal <> Factory . ToLower & " , " & UseSerial & " , " & ProdCode & " , " & Country & " , " & Agency Then
Return False
End If
Return True
End Function
Private Function FirmWareCheck ( ) As String
Const Commander As String = " dsfwver "
Dim retval As String
tmpCmdMessage = " [ " & Commander & " ] " + vbCrLf
If SendData ( tmpCmdMessage ) Then
Return " FAIL "
End If
retval = PollingReceiveData ( 1000 )
If InStr ( 1 , retval , " . " ) > 0 Then
Return retval
Else
Return " NULL "
End If
End Function
Private Function FreqCompare ( FreqData As String ) As Boolean
If UBound ( Split ( FreqData , " , " ) ) = 1 Then
Dim FreqValue As String = Mid ( FreqData , 1 , InStr ( FreqData , " , " ) - 1 )
Dim PowerValue As String = Mid ( FreqData , InStr ( FreqData , " , " ) + 1 , FreqData . Length )
If FreqValue = TDData ( SearchList . Frequency ) Then
If PowerValue = TDData ( SearchList . Power ) Then
Return False
End If
End If
Return True
Else
MsgBox ( " 잘못된 형식의 주파수 값입니다. 연결을 확인하여 주십시오. " , vbExclamation )
Return True
End If
End Function
Private Function TDCodeSearch ( ) As String
Dim retVal As String
tmpCmdMessage = " settdsn "
cmdMessage = " [ " & tmpCmdMessage & " ] " + vbCrLf
If SendData ( cmdMessage ) Then
Return " 1 "
End If
retVal = PollingReceiveData ( 500 )
If retVal . Length = TDMaxLength Then
Return retVal
Else
Return " 0 "
End If
End Function
Private Function FreqPowerReg ( Freq As String , Power As String ) As String
Const Commander As String = " settdcnf "
Dim Retval As String
tmpCmdMessage = " [ " & Commander & " " & Freq & " , " & Power & " ] " + vbCrLf
If SendData ( tmpCmdMessage ) Then
Return " FAIL "
End If
Retval = PollingReceiveData ( 500 )
If InStr ( 1 , Retval , " , " ) > 0 Then
Return Retval
Else
Return " NULL "
End If
End Function
Private Function FreqPowerSearch ( ) As String
Const Commander As String = " settdcnf "
Dim Retval As String
tmpCmdMessage = " [ " & Commander & " ] " + vbCrLf
If SendData ( tmpCmdMessage ) Then
Return " FAIL "
End If
Retval = PollingReceiveData ( 500 )
If InStr ( 1 , Retval , " , " ) > 0 Then
Return Retval
Else
Return " NULL "
End If
End Function
Private Function ShotReg ( shot As Integer ) As String
Const Commander As String = " shotconf "
Dim retval As String
tmpCmdMessage = " [ " & Commander & " " & shot & " ] " + vbCrLf
If SendData ( tmpCmdMessage ) Then
Return False
End If
retval = PollingReceiveData ( 1000 )
If retval = shot . ToString Then
Return True
End If
Return False
End Function
Private Function ShotSearch ( ) As String
Const Commander As String = " shotconf "
Dim RetVal As String = " -1 "
tmpCmdMessage = " [ " & Commander & " ] " + vbCrLf
If SendData ( tmpCmdMessage ) Then
Return " False "
End If
RetVal = PollingReceiveData ( 1500 )
Return RetVal
End Function
Private Function PollingReceiveData ( RdTimeout As Long ) As String
Try
rxMessage = " "
If PortSerial . IsOpen = True Then
PortSerial . ReadTimeout = RdTimeout
rxMessage = PortSerial . ReadLine ( )
Return ParsingData ( False )
Else
ThreadSwitch = False
MsgBox ( " 통신 포트가 열리지 않았습니다. " , vbCritical )
Return True
End If
Catch ex As Exception
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 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 )
Else
Exit For
End If
Next i
rxMessage = " "
Select Case cmdStr
Case " dsfwver "
cmdStr = cmdVal ( 1 )
Return 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 " 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 PortSerial . IsOpen = True Then
PortSerial . DiscardInBuffer ( )
PortSerial . DiscardOutBuffer ( )
If PortSerial . BytesToRead Then
PortSerial . DiscardInBuffer ( )
End If
PortSerial . WriteTimeout = - 1
PortSerial . WriteLine ( SendMessage )
Else
ThreadSwitch = False
MsgBox ( " 통신 포트가 열리지 않았습니다. " )
Return True
End If
Catch ex As Exception
Return True
End Try
Return False
End Function
Private Sub TDRecycleFunc ( sender As Object , e As EventArgs , SearchData As String )
DataReset ( )
SerialNum = String . Empty
If SearchData . Length > TDMaxLength Or SearchData . Length < TDMinLength Then
MsgBox ( " 잘못된 TD 번호입니다. 인쇄된 번호를 확인하여 주십시오. " , vbExclamation )
GoTo FailFunc
End If
If TDExist ( SearchData ) Then
MsgBox ( " TD 데이터가 존재하지 않습니다. 확인하여 주십시오. " , vbExclamation )
GoTo FailFunc
End If
If TDSearch ( SearchData ) Then
GoTo FailFunc
End If
For i = SearchList . TestStep To SearchList . maxList - 1
If i = SearchList . TestStep Then
TDDataTxb ( i ) . Text = TestStepParsing ( )
If TDDataTxb ( i ) . Text = " NULL " Then
TDDataTxb ( i ) . BackColor = Color . Red
Else
TDDataTxb ( i ) . BackColor = Color . Green
End If
Else
TDDataTxb ( i ) . Text = TDData ( i )
End If
Next
SerialNum = SearchData
If ckbAutoFunc . Checked = True Then
btnReDel_Click ( sender , e )
Else
RunStateFunc ( " 성 공 " , Color . Green )
End If
Exit Sub
FailFunc :
RunStateFunc ( " 실 패 " , Color . Red )
End Sub
Private Function TDSearch ( SearchData As String ) As Boolean
Try
DBCmd = " SELECT TestStep,Ct_Power,Ct_Motor_Lv,PV_SN,PV_Date,PV_Frequency,QC_Date,QC_Capacitor,QC_Grade FROM " & ApplyCartDB & " WHERE PV_SN = ' " & SearchData & " ' "
If DBQueryReader ( DBCmd ) Then
For i = SearchList . TestStep To SearchList . maxList - 1
TDData ( i ) = sqlDataQuery ( i )
Next
Else
MsgBox ( " TD 데이터가 존재하지 않습니다. " , vbExclamation )
Return True
End If
Return False
Catch ex As Exception
MsgBox ( " TD 데이터를 불러오는 도중 오류가 발생하였습니다. :: " & vbCrLf & ex . Message , vbCritical )
Return True
End Try
End Function
Private Function TDExist ( SearchData As String ) As Boolean
Try
If TDUseCompare = True Then
DBCmd = " SELECT COUNT(NUMBER) FROM " & ApplyCartDB & " WHERE PV_SN = ' " & SearchData & " ' "
Else
DBCmd = " SELECT COUNT(NUMBER) FROM " & ApplyNonTDDB & " WHERE PV_SN = ' " & SearchData & " ' "
End If
Dim DataExist As Int16 = DBQueryScalar ( DBCmd )
If DataExist = 1 Then
Return False
Else
Return True
End If
Catch ex As Exception
MsgBox ( " TD 데이터 확인 중 오류가 발생하였습니다. :: " & vbCrLf & ex . Message , vbCritical )
Return True
End Try
End Function
Private Sub StepReset ( )
For i = SearchList . TestStep To SearchList . maxList - 1
TDData ( i ) = String . Empty
With TDDataTxb ( i )
. Text = " 대기 "
. BackColor = Color . White
End With
Next
With txbPDNum
. Text = " 대기 "
. Font = New Font ( " 함초롱바탕 " , 48 , FontStyle . Bold )
. ForeColor = Color . Black
End With
End Sub
Private Sub DataReset ( )
StepReset ( )
If NowMode = ModeList . Prod_Input Then
With txbPDModel
. Text = " 대기 "
. BackColor = Color . White
. ForeColor = Color . Black
End With
With txbPDType
. Text = " 대기 "
. BackColor = Color . White
. ForeColor = Color . Black
End With
With txbPDCC
. Text = " 대기 "
. BackColor = Color . White
. ForeColor = Color . Black
End With
With txbPDAgency
. Text = " 대기 "
. BackColor = Color . White
. ForeColor = Color . Black
End With
With txbPDCP
. Text = " 대기 "
. BackColor = Color . White
. ForeColor = Color . Black
End With
With txbPDColor
. Text = " 대기 "
. BackColor = Color . White
. ForeColor = Color . Black
End With
cboPDInfo . SelectedIndex = - 1
cboPDInfo . Text = " SELECT! "
End If
End Sub
Private Function TestStepParsing ( ) As String
Select Case TDData ( SearchList . TestStep )
Case " 11 "
Return " TD 검사 합격 "
Case " 12 "
Return " TD 검사 불합격 "
Case " 13 "
Return " TD 검사 재측정 합격 "
Case " 14 "
Return " TD 검사 재측정 불합격 "
Case " 15 "
Return " 재사용 TD "
Case " 16 "
Return " 납땜 합격 "
Case " 17 "
Return " 납땜 불합격 "
Case " 18 "
Return " 납땜 재측정 합격 "
Case " 19 "
Return " 납땜 재측정 불합격 "
Case " 21 "
Return " HIFU 합격 "
Case " 22 "
Return " HIFU 불합격 "
Case " 23 "
Return " 파형검사 합격 "
Case " 24 "
Return " 파형검사 불합격 "
Case " 25 "
Return " HIFU 재측정 합격 "
Case " 26 "
Return " HIFU 재측정 불합격 "
Case " 27 "
Return " 파형검사 재측정 합격 "
Case " 28 "
Return " 파형검사 재측정 불합격 "
Case " 30 "
Return " 정보 입력 불합격 "
Case " 31 "
Return " 양산 합격 "
Case " 32 "
Return " 양산 합격 "
Case " 41 "
Return " 반품 진행 "
Case Else
Return " NULL "
End Select
End Function
Private Sub btnReDel_Click ( sender As Object , e As EventArgs ) Handles btnReDel . Click
NowDate = Format ( Now , " yyyy-MM-dd " )
NowTime = Format ( Now , " HH:mm:ss " )
If SerialNum = String . Empty Then
MsgBox ( " 삭제할 데이터가 존재하지 않습니다. TD 데이터를 검색하여 주십시오. " , vbExclamation )
GoTo FailFunc
End If
If TestDelete ( ApplyHFTestDB ) Then
MsgBox ( " 삭제 도중 문제가 발생했습니다. " , vbCritical )
GoTo FailFunc
End If
If TestDelete ( ApplyRFTestDB ) Then
MsgBox ( " 삭제 도중 문제가 발생했습니다. " , vbCritical )
GoTo FailFunc
End If
If DeleteData ( ) Then
MsgBox ( " 삭제 도중 문제가 발생했습니다. " , vbCritical )
GoTo FailFunc
End If
If TDData ( SearchList . TestStep ) <> " 15 " Then
If TodayCountSet ( True ) Then
GoTo FailFunc
End If
End If
txbPVSN . Enabled = False
txbPVSN . Text = " 삭제 성공 "
txbPVSN . BackColor = Color . Green
txbPVSN . Enabled = True
txbPVSN . Focus ( )
Exit Sub
FailFunc :
RunStateFunc ( " 삭제 실패 " , Color . Red )
End Sub
Private Function TestDelete ( DBTable As String ) As Boolean
DBCmd = " SELECT COUNT(PV_SN) FROM " & DBTable & " WHERE PV_SN = ' " & SerialNum & " ' "
Dim DBResult As Int16 = DBQueryScalar ( DBCmd )
If DBResult > 0 Then
DBCmd = " DELETE FROM " & DBTable & " WHERE PV_SN = ' " & SerialNum & " ' "
If DBCommand ( DBCmd ) = False Then
Return True
End If
End If
Return False
End Function
Private Function DeleteData ( ) As String
DBCmd = " UPDATE " & ApplyCartDB & " SET TestStep = '15', Product_SN = NULL, Ct_Manufacture_Name = NULL, Ct_Manufacture_Year = NULL, Ct_Manufacture_Month = NULL, Ct_SN = NULL, Ct_Abroad = NULL, Ct_Agency = NULL, Ct_Frequency = NULL, Ct_Max_ShotCnt = NULL, Ct_Remain_ShotCnt = NULL, P0_Date = NULL, P0_Time = NULL, P0_Model = NULL, P0_Type = NULL, P1_Date = NULL, P1_Time = NULL, P1_Model = NULL, P1_CartType = NULL, P1_Frequency = NULL, P3_DateTime = NULL, LastQC_Date = NULL,LastQC_Time = NULL, Delete_Date = ' " & NowDate & " ', Delete_Time = ' " & NowTime & " ', Delete_TestStep = ' " & TDData ( SearchList . TestStep ) & " ' WHERE PV_SN = ' " & SerialNum & " ' "
If DBCommand ( DBCmd ) Then
Return False
Else
Return True
End If
End Function
Private Function TodayCountUpdate ( ) As Boolean
Select Case NowMode
Case ModeList . Prod_Input
If ModelCode = 3 Then
DBCmd = " UPDATE " & ApplyPD1CntDB & " SET PD1_InfoTotalCnt = ' " & CountSelect ( CountList . Total ) & " ', PD1_InfoMaxOk = ' " & CountSelect ( CountList . Success ) & " ', PD1_InfoMaxNg = ' " & CountSelect ( CountList . Fail ) & " ' WHERE PD1_Date = ' " & NowDate & " ' "
ElseIf ModelCode = 5 Then
DBCmd = " UPDATE " & ApplyPD1CntDB & " SET PD1_InfoTotalCnt = ' " & CountSelect ( CountList . Total ) & " ', PD1_InfoAltoOk = ' " & CountSelect ( CountList . Success ) & " ', PD1_InfoAltoNg = ' " & CountSelect ( CountList . Fail ) & " ' WHERE PD1_Date = ' " & NowDate & " ' "
ElseIf ModelCode = 6 Then
DBCmd = " UPDATE " & ApplyPD1CntDB & " SET PD1_InfoTotalCnt = ' " & CountSelect ( CountList . Total ) & " ', PD1_InfoEffectOk = ' " & CountSelect ( CountList . Success ) & " ', PD1_InfoEffectNg = ' " & CountSelect ( CountList . Fail ) & " ' WHERE PD1_Date = ' " & NowDate & " ' "
2025-07-16 10:39:32 +09:00
ElseIf ModelCode = 7 Then
DBCmd = " UPDATE " & ApplyPD1CntDB & " SET PD1_InfoTotalCnt = ' " & CountSelect ( CountList . Total ) & " ', PD1_InfoMaxAlphaOk = ' " & CountSelect ( CountList . Success ) & " ', PD1_InfoMaxAlphaNg = ' " & CountSelect ( CountList . Fail ) & " ' WHERE PD1_Date = ' " & NowDate & " ' "
2025-06-25 11:19:00 +09:00
Else
MsgBox ( " 수량 업데이트, 잘못된 경로입니다. " , vbCritical )
Return True
End If
Case ModeList . TDRecycle
DBCmd = " UPDATE " & ApplyPD1CntDB & " SET PD1_RecycleCnt = ' " & CountSelect ( CountList . Total ) & " ' WHERE PD1_Date = ' " & NowDate & " ' "
Case Else
MsgBox ( " 수량 업데이트, 잘못된 경로입니다. " , vbCritical )
Return True
End Select
If DBCommand ( DBCmd ) Then
Return False
Else
Return True
End If
End Function
Private Function TodayCountLoad ( ) As Boolean
Select Case NowMode
Case ModeList . Prod_Input
If ModelCode = " 3 " Then
DBCmd = " SELECT PD1_InfoTotalCnt,PD1_InfoMaxOk,PD1_InfoMaxNg FROM " & ApplyPD1CntDB & " WHERE PD1_Date = ' " & NowDate & " ' "
ElseIf ModelCode = " 5 " Then
DBCmd = " SELECT PD1_InfoTotalCnt,PD1_InfoAltoOk,PD1_InfoAltoNg FROM " & ApplyPD1CntDB & " WHERE PD1_Date = ' " & NowDate & " ' "
ElseIf ModelCode = " 6 " Then
DBCmd = " SELECT PD1_InfoTotalCnt,PD1_InfoEffectOk,PD1_InfoEffectNg FROM " & ApplyPD1CntDB & " WHERE PD1_Date = ' " & NowDate & " ' "
2025-07-16 10:39:32 +09:00
ElseIf ModelCode = " 7 " Then
DBCmd = " SELECT PD1_InfoTotalCnt,PD1_InfoMaxAlphaOk,PD1_InfoMaxAlphaNg FROM " & ApplyPD1CntDB & " WHERE PD1_Date = ' " & NowDate & " ' "
2025-06-25 11:19:00 +09:00
Else
MsgBox ( " 수량 카운터 잘못된 경로입니다. " , vbCritical )
Return True
End If
Case ModeList . TDRecycle
DBCmd = " SELECT PD1_RecycleCnt,'0','0' FROM " & ApplyPD1CntDB & " WHERE PD1_Date = ' " & NowDate & " ' "
Case Else
MsgBox ( " 수량 카운터 잘못된 경로입니다. " , vbCritical )
Return True
End Select
If DBQueryReader ( DBCmd ) Then
For i = 0 To CountList . maxCount - 1
CountSelect ( i ) = sqlDataQuery ( i )
Next
Else
Return True
End If
Return False
End Function
Private Function TodayCountCreate ( ) As Boolean
DBCmd = " SELECT COUNT(NUMBER) FROM " & ApplyPD1CntDB & " WHERE PD1_Date = ' " & NowDate & " ' "
If DBQueryScalar ( DBCmd ) = 0 Then
DBCmd = " INSERT INTO " & ApplyPD1CntDB & " (PD1_Date) VALUES(' " & NowDate & " ') "
If DBCommand ( DBCmd ) = False Then
Return True
End If
End If
Return False
End Function
Private Sub RunStateFunc ( OutputText As String , ApplyColor As Color )
txbPVSN . Enabled = False
txbPVSN . Text = OutputText
txbPVSN . BackColor = ApplyColor
txbPVSN . Enabled = True
txbPVSN . Focus ( )
End Sub
Private Sub txbReFreq_GotFocus ( sender As Object , e As EventArgs ) Handles txbReFreq . GotFocus , txbReSerial . GotFocus , txbReCValue . GotFocus , txbReGrade . GotFocus , txbRePower . GotFocus , txbReMotor . GotFocus , txbReInput . GotFocus , txbReTest . GotFocus , txbReOrder . GotFocus , txbDayCount . GotFocus , txbTDNum . GotFocus , txbTDFreq . GotFocus , txbTDGrade . GotFocus , txbTDPower . GotFocus , txbTDDepth . GotFocus , txbTDIDate . GotFocus , txbTDStep . GotFocus , txbPDNum . GotFocus , txbPDModel . GotFocus , txbPDType . GotFocus , txbPDCC . GotFocus , txbPDAgency . GotFocus , txbPDCP . GotFocus , txbPDVersion . GotFocus , txbAllCount . GotFocus , txbSucCount . GotFocus , txbFailCount . GotFocus
txbPVSN . Focus ( )
txbPVSN . Select ( txbPVSN . Text . Length , 0 )
End Sub
Private Sub btnOption_Click ( sender As Object , e As EventArgs ) Handles btnOption . Click , btnOpExit . Click
TimerFalse ( )
If pnMain . Visible = True Then
pnMain . Visible = False
pnMain . Enabled = False
pnOption . Visible = True
pnOption . Enabled = True
pnOption . Location = New Point ( 0 , 0 )
pnMain . Location = New Point ( 1920 , 0 )
btnPtRefresh_Click ( sender , e )
Else
If OptionChange = True Then
If MsgBox ( " 변경된 설정이 존재합니다. 저장하시겠습니까? " , vbOKCancel + vbExclamation ) = MsgBoxResult . Ok Then
btnOpSave_Click ( sender , e )
End If
End If
Print_Activate ( )
pnMain . Visible = True
pnMain . Enabled = True
pnOption . Visible = False
pnOption . Enabled = False
pnMain . Location = New Point ( 0 , 0 )
pnOption . Location = New Point ( 1920 , 0 )
End If
txbPVSN . Focus ( )
End Sub
Private Sub LoadExitReset ( )
TimerFalse ( )
ModelCode = String . Empty
TypeCode = String . Empty
ColorCode = String . Empty
ClassCode = String . Empty
TDUseCompare = False
cboPDInfo . SelectedIndex = - 1
cboPDInfo . Text = " SELECT! "
With txbPDModel
. Text = " 대기 "
. Font = New Font ( " 함초롱바탕 " , 26 )
. ForeColor = Color . Black
End With
With txbPDType
. Text = " 대기 "
. Font = New Font ( " 함초롱바탕 " , 26 )
. ForeColor = Color . Black
End With
With txbPDCC
. Text = " 대기 "
. Font = New Font ( " 함초롱바탕 " , 26 )
. ForeColor = Color . Black
End With
With txbPDAgency
. Text = " 대기 "
. Font = New Font ( " 함초롱바탕 " , 26 )
. ForeColor = Color . Black
End With
With txbPDCP
. Text = " 대기 "
. Font = New Font ( " 함초롱바탕 " , 26 )
. ForeColor = Color . Black
End With
With txbPDColor
. Text = " 대기 "
. Font = New Font ( " 함초롱바탕 " , 26 )
. ForeColor = Color . Black
End With
With txbPDNum
. Text = " 대기 "
. Font = New Font ( " 함초롱바탕 " , 48 )
. ForeColor = Color . Black
End With
End Sub
Private Sub cboPDInfo_SelectedIndexChanged ( sender As Object , e As EventArgs ) Handles cboPDInfo . SelectedIndexChanged
Dim SelectData As String = cboPDInfo . SelectedIndex
TimerFalse ( )
If dgvDataSet . Rows ( SelectData ) . Cells ( 0 ) . Value = " " Or dgvDataSet . Rows ( SelectData ) . Cells ( 1 ) . Value = " " Or dgvDataSet . Rows ( SelectData ) . Cells ( 2 ) . Value = " " Or dgvDataSet . Rows ( SelectData ) . Cells ( 3 ) . Value = " " Or dgvDataSet . Rows ( SelectData ) . Cells ( 4 ) . Value = " " Then
MsgBox ( " 존재하지 않는 데이터가 존재합니다. 설정에서 확인하여 주십시오. " , vbCritical )
Exit Sub
End If
If ColorSet ( SelectData ) Then
MsgBox ( " 잘못된 데이터를 불러왔습니다. 설정에서 확인하여 주십시오. " , vbCritical )
Exit Sub
End If
ClassCode = dgvDataSet . Rows ( SelectData ) . Cells ( 6 ) . Value
With txbPDModel
. Text = dgvDataSet . Rows ( SelectData ) . Cells ( 1 ) . Value
. Font = New Font ( " 함초롱바탕 " , 26 , FontStyle . Bold )
. ForeColor = Color . Blue
End With
With txbPDType
. Text = dgvDataSet . Rows ( SelectData ) . Cells ( 2 ) . Value
. Font = New Font ( " 함초롱바탕 " , 26 , FontStyle . Bold )
. ForeColor = Color . Blue
End With
With txbPDCC
. Text = dgvDataSet . Rows ( SelectData ) . Cells ( 3 ) . Value
. Font = New Font ( " 함초롱바탕 " , 26 , FontStyle . Bold )
. ForeColor = Color . Blue
End With
With txbPDAgency
. Text = dgvDataSet . Rows ( SelectData ) . Cells ( 4 ) . Value
. Font = New Font ( " 함초롱바탕 " , 26 , FontStyle . Bold )
. ForeColor = Color . Blue
End With
With txbPDCP
. Text = txbOpCompany . Text
. Font = New Font ( " 함초롱바탕 " , 26 , FontStyle . Bold )
. ForeColor = Color . Blue
End With
With txbPDColor
. Text = dgvDataSet . Rows ( SelectData ) . Cells ( 5 ) . Value
. Font = New Font ( " 함초롱바탕 " , 26 , FontStyle . Bold )
. ForeColor = Color . Blue
End With
With txbPDNum
. Text = ClassCode
. Font = New Font ( " 함초롱바탕 " , 48 , FontStyle . Bold )
. ForeColor = Color . Black
End With
txbPVSN . Focus ( )
End Sub
Private Sub Print_Activate ( )
For i = PrintList . BoxCode To PrintList . maxPrint - 1
If PrintUseCkb ( i ) . Checked = True Then
PrintActive ( i ) = True
Else
PrintActive ( i ) = False
End If
PrintName ( i ) = PrintUseTxb ( i ) . Text
PrintAddress ( i ) = PrintUseZip ( i ) . Text
Next
PrintUseCode ( PrintList . BoxCode ) = txbPtBox_Val1 . Text
PrintUseCode ( PrintList . ProdLabel ) = txbPtProd_Val1 . Text
PrintUseText ( PrintList . BoxCode ) = txbPtBox_Val2 . Text
PrintUseText ( PrintList . Warranty ) = txbPtWar_Val1 . Text
PrintUseText ( PrintList . ProdLabel ) = txbPtProd_Val2 . Text
PrintUseDate = txbPtProd_Date . Text
End Sub
Private Sub btnRegReset_Click ( sender As Object , e As EventArgs ) Handles btnRegReset . Click
txbRegName . Text = String . Empty
txbRegCountry . Text = String . Empty
txbRegAgency . Text = String . Empty
cboClear ( )
End Sub
Private Sub cboClear ( )
cboRegModel . SelectedIndex = - 1
cboRegModel . Text = " SELECT! "
cboRegType . SelectedIndex = - 1
cboRegType . Text = " SELECT! "
cboRegColor . SelectedIndex = - 1
cboRegColor . Text = " SELECT! "
cboRegClass . SelectedIndex = - 1
cboRegClass . Text = " SELECT! "
End Sub
Private Sub btnRegOK_Click ( sender As Object , e As EventArgs ) Handles btnRegOK . Click
If txbRegName . Text = " " Then
MsgBox ( " 구분명을 입력하지 않으셨습니다. 확인하여 주십시오. " , vbExclamation )
txbRegName . Focus ( )
Else
If cboRegModel . SelectedIndex = - 1 Then
MsgBox ( " 모델명을 선택하지 않으셨습니다. 확인하여 주십시오. " , vbExclamation )
cboRegModel . Focus ( )
Else
If cboRegType . SelectedIndex = - 1 Then
MsgBox ( " 타입명을 선택하지 않으셨습니다. 확인하여 주십시오. " , vbExclamation )
cboRegType . Focus ( )
Else
If cboRegColor . SelectedIndex = - 1 Then
MsgBox ( " 색상명을 선택하지 않으셨습니다. 확인하여 주십시오. " , vbExclamation )
cboRegColor . Focus ( )
Else
If cboRegClass . SelectedIndex = - 1 Then
MsgBox ( " 분류명을 선택하지 않으셨습니다. 확인하여 주십시오. " , vbExclamation )
cboRegClass . Focus ( )
Else
If txbRegCountry . Text = " " Then
MsgBox ( " 국가코드를 입력하지 않으셨습니다. 확인하여 주십시오. " , vbExclamation )
txbRegCountry . Focus ( )
Else
If txbRegAgency . Text = " " Then
MsgBox ( " 대리점코드를 입력하지 않으셨습니다. 확인하여 주십시오. " , vbExclamation )
txbRegAgency . Focus ( )
Else
dgvDataSet . Rows . Add ( txbRegName . Text , cboRegModel . SelectedItem , cboRegType . SelectedItem , txbRegCountry . Text , txbRegAgency . Text , cboRegColor . SelectedItem , ClassNumber ( cboRegClass . SelectedIndex ) )
txbRegName . Text = String . Empty
txbRegCountry . Text = String . Empty
txbRegAgency . Text = String . Empty
OptionChange = True
End If
End If
End If
End If
End If
End If
End If
End Sub
Private Sub txbRegCountry_KeyPress ( sender As Object , e As KeyPressEventArgs ) Handles txbRegCountry . KeyPress , txbRegAgency . KeyPress
If Not Char . IsDigit ( e . KeyChar ) And Not Char . IsControl ( e . KeyChar ) Then
e . Handled = True
End If
End Sub
Private Sub btnRegDel_Click ( sender As Object , e As EventArgs ) Handles btnRegDel . Click
Dim rowNum As Integer = dgvDataSet . SelectedCells ( 0 ) . RowIndex
dgvDataSet . Rows . RemoveAt ( rowNum )
OptionChange = True
End Sub
Private Sub btnRegADel_Click ( sender As Object , e As EventArgs ) Handles btnRegADel . Click
If MsgBox ( " 모든 행을 삭제하시겠습니까? " , vbOKCancel + vbExclamation ) = MsgBoxResult . Ok Then
dgvDataSet . Rows . Clear ( )
OptionChange = True
End If
End Sub
Private Sub btnOpSave_Click ( sender As Object , e As EventArgs ) Handles btnOpSave . Click
For i = SaveList . Info To SaveList . MaxSave - 1
If OptionSave ( i ) Then
OptionLoad ( i )
End If
Next
MsgBox ( " 저장완료 " , vbInformation )
OptionChange = False
End Sub
Private Function OptionSave ( SaveType As Int16 ) As Boolean
Try
Dim SaveData As String = String . Empty
Dim FilePath As String = System . AppDomain . CurrentDomain . BaseDirectory & " \Config "
If Dir ( FilePath , vbDirectory ) = " " Then
MkDir ( FilePath )
End If
Dim FileName As String = FilePath & " \ " & SaveName ( SaveType ) & " .ini "
Select Case SaveType
Case SaveList . Info
For i = 0 To dgvDataSet . Rows . Count - 2
Dim RowData As String = dgvDataSet . Rows ( i ) . Cells ( 0 ) . Value . ToString & " | " & dgvDataSet . Rows ( i ) . Cells ( 1 ) . Value . ToString & " | " & dgvDataSet . Rows ( i ) . Cells ( 2 ) . Value . ToString & " | " & dgvDataSet . Rows ( i ) . Cells ( 3 ) . Value . ToString & " | " & dgvDataSet . Rows ( i ) . Cells ( 4 ) . Value . ToString & " | " & dgvDataSet . Rows ( i ) . Cells ( 5 ) . Value . ToString & " | " & dgvDataSet . Rows ( i ) . Cells ( 6 ) . Value . ToString & " |@ "
SaveData = SaveData & RowData
Next
Case SaveList . Config
SaveData = txbOpCompany . Text & " | " & nudPtCount . Value & " | " & cboComPort . SelectedItem & " | " & NowMode & " | " & ckbOpAlto . Checked & " | " & nudTray . Value & " | " & nudSerialCheck . Value & " | "
Case SaveList . Print
SaveData = txbPtBox_Name . Text & " | " & txbPtBox_Label . Text & " | " & txbPtBox_Val1 . Text & " | " & txbPtBox_Val2 . Text & " | " & txbPtWar_Name . Text & " | " & txbPtWar_Label . Text & " | " & txbPtWar_Val1 . Text & " | " & txbPtProd_Name . Text & " | " & txbPtProd_Label . Text & " | " & txbPtProd_Val1 . Text & " | " & txbPtProd_Val2 . Text & " | " & txbPtProd_Date . Text & " | "
Case Else
MsgBox ( " 잘못된 저장 데이터입니다. " , vbCritical )
Return False
End Select
If File . Exists ( FileName ) = True Then
File . Delete ( FileName )
End If
File . WriteAllText ( FileName , SaveData , Encoding . UTF8 )
Return True
Catch ex As Exception
MsgBox ( " 저장 도중 오류가 발생하였습니다. " & vbCrLf & ex . Message , vbCritical )
Return False
End Try
End Function
Private Sub OptionLoad ( LoadType As Int16 )
Try
Dim ReadData As String = String . Empty
Dim FilePath As String = System . AppDomain . CurrentDomain . BaseDirectory & " \Config "
If Dir ( FilePath , vbDirectory ) = " " Then
MkDir ( FilePath )
End If
Dim FileName As String = FilePath & " \ " & SaveName ( LoadType ) & " .ini "
If File . Exists ( FileName ) Then
ReadData = File . ReadAllText ( FileName , Encoding . UTF8 )
If ReadData <> " " Then
Select Case LoadType
Case SaveList . Info
dgvDataSet . Rows . Clear ( )
For i = UBound ( Split ( ReadData , " @ " ) ) - 1 To 0 Step - 1
Dim MdfData As String = Mid ( ReadData , 1 , InStr ( ReadData , " @ " ) - 1 )
Dim InfoList ( UBound ( Split ( MdfData , " | " ) ) - 1 )
ReadData = Mid ( ReadData , InStr ( ReadData , " @ " ) + 1 , ReadData . Length )
For cnt = 0 To UBound ( Split ( MdfData , " | " ) ) - 1
InfoList ( cnt ) = Mid ( MdfData , 1 , InStr ( MdfData , " | " ) - 1 )
MdfData = Mid ( MdfData , InStr ( MdfData , " | " ) + 1 , MdfData . Length )
Next
dgvDataSet . Rows . Add ( InfoList )
Next
cboPDInfo . Items . Clear ( )
If dgvDataSet . Rows . Count - 2 <> - 1 Then
For i = 0 To dgvDataSet . Rows . Count - 2
cboPDInfo . Items . Add ( dgvDataSet . Rows ( i ) . Cells ( 0 ) . Value . ToString )
Next
LoadExitReset ( )
End If
Case SaveList . Config
For i = 0 To UBound ( Split ( ReadData , " | " ) ) - 1
Dim MdfData As String = Mid ( ReadData , 1 , InStr ( ReadData , " | " ) - 1 )
ReadData = Mid ( ReadData , InStr ( ReadData , " | " ) + 1 , ReadData . Length )
Select Case i
Case 0
txbOpCompany . Text = MdfData
Case 1
If IsNumeric ( MdfData ) Then
If MdfData < 4 And MdfData > 0 Then
nudPtCount . Value = MdfData
Else
MsgBox ( " 인쇄 수량 범위와 맞지 않습니다. " , vbCritical )
End If
Else
MsgBox ( " 잘못된 인쇄 수량입니다. " , vbCritical )
End If
Case 2
LoadComportName ( )
Dim RunSwitch As Boolean = False
For cnt = 0 To cboComPort . Items . Count - 1
cboComPort . SelectedIndex = cnt
If MdfData = cboComPort . SelectedItem Then
RunSwitch = True
OpenSerial ( MdfData )
Exit For
End If
Next
If RunSwitch = False Then
cboComPort . SelectedIndex = - 1
cboComPort . Text = " SELECT! "
End If
Case 3
Select Case MdfData
Case ModeList . Prod_Input
rdbPD2 . Checked = True
Case ModeList . TDRecycle
rdbRecycle . Checked = True
Case Else
MsgBox ( " Mode Load, 잘못된 경로입니다. " , vbCritical )
End Select
Case 4
ckbOpAlto . Checked = MdfData
Case 5
If IsNumeric ( MdfData ) Then
If MdfData < 13 And MdfData > 4 Then
nudTray . Value = MdfData
ReDim RegNumber ( nudTray . Value - 1 )
Else
MsgBox ( " Tray 수량 범위와 맞지 않습니다. " , vbCritical )
End If
Else
MsgBox ( " 잘못된 Tray 수량입니다. " , vbCritical )
End If
Case 6
If IsNumeric ( MdfData ) Then
If MdfData < 21 And MdfData > 0 Then
nudTray . Value = MdfData
Else
MsgBox ( " Serial 확인 횟수에 대한 데이터가 맞지 않습니다. " , vbCritical )
End If
Else
MsgBox ( " 잘못된 Serial 확인 횟수입니다. " , vbCritical )
End If
Case Else
MsgBox ( " 불필요한 데이터가 존재합니다. 저장 내용을 확인하여 주십시오. " , vbCritical )
GoTo FailLoad
End Select
Next
Case SaveList . Print
For i = 0 To UBound ( Split ( ReadData , " | " ) ) - 1
Dim MdfData As String = Mid ( ReadData , 1 , InStr ( ReadData , " | " ) - 1 )
ReadData = Mid ( ReadData , InStr ( ReadData , " | " ) + 1 , ReadData . Length )
Select Case i
Case 0
txbPtBox_Name . Text = MdfData
Case 1
txbPtBox_Label . Text = MdfData
Case 2
txbPtBox_Val1 . Text = MdfData
Case 3
txbPtBox_Val2 . Text = MdfData
Case 4
txbPtWar_Name . Text = MdfData
Case 5
txbPtWar_Label . Text = MdfData
Case 6
txbPtWar_Val1 . Text = MdfData
Case 7
txbPtProd_Name . Text = MdfData
Case 8
txbPtProd_Label . Text = MdfData
Case 9
txbPtProd_Val1 . Text = MdfData
Case 10
txbPtProd_Val2 . Text = MdfData
Case 11
txbPtProd_Date . Text = MdfData
Case Else
MsgBox ( " 불필요한 데이터가 존재합니다. 저장 내용을 확인하여 주십시오. " , vbCritical )
GoTo FailLoad
End Select
Next
Case Else
MsgBox ( " 잘못된 데이터가 존재합니다. 저장 내용을 확인하여 주십시오. " , vbCritical )
GoTo FailLoad
End Select
End If
End If
Exit Sub
Catch ex As Exception
MsgBox ( " 불러오는 도중 오류가 발생하였습니다. " & vbCrLf & ex . Message , vbCritical )
GoTo FailLoad
End Try
FailLoad :
End Sub
Private Sub rdbAllPnt_CheckedChanged ( sender As Object , e As EventArgs ) Handles rdbAllPnt . CheckedChanged , rdbEachPnt . CheckedChanged
If rdbAllPnt . Checked = True Then
gbPrintEach . Enabled = False
ckbBoxPnt . Checked = True
ckbWarPnt . Checked = True
ckbProdPnt . Checked = True
Else
gbPrintEach . Enabled = True
ckbBoxPnt . Checked = False
ckbWarPnt . Checked = False
ckbProdPnt . Checked = False
End If
End Sub
Private Sub btnPtBox_Ch1_Click ( sender As Object , e As EventArgs ) Handles btnPtBox_Ch1 . Click , btnPtWar_Ch1 . Click , btnPtProd_Ch1 . Click
If dgvPrinter . Rows . Count - 2 = - 1 Then
MsgBox ( " 연결된 프린터 항목을 알 수 없습니다. " & vbCrLf & " 연결을 확인하여 주십시오. " , vbCritical )
Exit Sub
End If
Dim SelectRow As DataGridViewRow = dgvPrinter . SelectedRows ( 0 )
Dim PrintName As String = SelectRow . Cells ( 0 ) . Value . ToString
Dim NowButton As String = CType ( sender , Button ) . Name
Select Case NowButton
Case " btnPtBox_Ch1 "
txbPtBox_Name . Text = PrintName
Case " btnPtWar_Ch1 "
txbPtWar_Name . Text = PrintName
Case " btnPtProd_Ch1 "
txbPtProd_Name . Text = PrintName
Case Else
MsgBox ( " 잘못된 경로입니다. " , vbCritical )
End Select
End Sub
Private Sub btnPtBox_Ch2_Click ( sender As Object , e As EventArgs ) Handles btnPtBox_Ch2 . Click , btnPtWar_Ch2 . Click , btnPtProd_Ch2 . Click
Dim FileAddress As String = OpenFile ( )
If FileAddress <> " fail " Then
Dim NowButton As String = CType ( sender , Button ) . Name
Select Case NowButton
Case " btnPtBox_Ch2 "
txbPtBox_Label . Text = FileAddress
Case " btnPtWar_Ch2 "
txbPtWar_Label . Text = FileAddress
Case " btnPtProd_Ch2 "
txbPtProd_Label . Text = FileAddress
Case Else
MsgBox ( " 잘못된 경로입니다. " , vbCritical )
End Select
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 Function TodayCountSet ( OkNg As Boolean ) As Boolean
If TodayCountCreate ( ) Then
MsgBox ( " 수량 카운터를 생성하는 도중 오류가 발생하였습니다. " , vbCritical )
Return True
End If
If TodayCountLoad ( ) Then
MsgBox ( " 수량 카운터를 불러오는 도중 오류가 발생하였습니다. " , vbCritical )
Return True
End If
CountUpdate ( OkNg )
If TodayCountUpdate ( ) Then
MsgBox ( " 수량 카운터를 업데이트하는 도중 오류가 발생하였습니다. " , vbCritical )
Return True
End If
CountSetting ( )
Return False
End Function
Private Sub CountUpdate ( OkNg )
Select Case NowMode
Case ModeList . Prod_Input
CountSelect ( CountList . Total ) += 1
If OkNg = True Then
If TDData ( SearchList . TestStep ) = " 30 " Then
CountSelect ( CountList . Fail ) -= 1
End If
CountSelect ( CountList . Success ) += 1
Else
CountSelect ( CountList . Fail ) += 1
End If
Case ModeList . TDRecycle
If OkNg = True Then
CountSelect ( CountList . Total ) += 1
End If
Case Else
MsgBox ( " 수량 카운터 출력 잘못된 경로입니다. " , vbCritical )
End Select
End Sub
Private Sub CountSetting ( )
Select Case NowMode
Case ModeList . Prod_Input
txbAllCount . Text = CountSelect ( CountList . Total )
txbSucCount . Text = CountSelect ( CountList . Success )
txbFailCount . Text = CountSelect ( CountList . Fail )
Case ModeList . TDRecycle
txbDayCount . Text = CountSelect ( CountList . Total )
Case Else
MsgBox ( " 수량 카운터 출력 잘못된 경로입니다. " , vbCritical )
End Select
End Sub
Private Sub NowRegCheck ( )
Try
Const LimitCheck As Int16 = 5
Const RowCount As Int16 = 3
dgvNowReg . Rows . Clear ( )
DBCmd = " SELECT Product_SN,DATE_FORMAT(P3_DateTime,'%Y-%m-%d') AS d, DATE_FORMAT(P3_DateTime,'%H:%i:%s') AS t FROM " & ApplyCartDB & " WHERE TestStep > '30' ORDER BY P3_DateTime DESC LIMIT " & LimitCheck & " "
If DBQueryReader ( DBCmd ) Then
Dim RunCount As Int32 = 0
Dim dgvData ( RowCount - 1 ) As String
For i = 0 To sqlDataQuery . Length - 1
dgvData ( i Mod RowCount ) = sqlDataQuery ( RunCount )
If i Mod RowCount = RowCount - 1 Then
dgvNowReg . Rows . Add ( dgvData )
End If
RunCount += 1
Next
End If
Catch ex As Exception
MsgBox ( " 등록 현황 오류 발생 ! " & vbCrLf & ex . Message )
End Try
End Sub
Private Sub btnPtRefresh_Click ( sender As Object , e As EventArgs ) Handles btnPtRefresh . Click
List_Refreash ( dgvPrinter )
End Sub
Private Sub MainForm_Click ( sender As Object , e As EventArgs ) Handles MyBase . Click
txbPVSN . Focus ( )
End Sub
Private Sub btnReset_Click ( sender As Object , e As EventArgs ) Handles btnReset . Click
btnReset . Enabled = False
TimerFalse ( )
StepReset ( )
ValueReset ( )
txbPDNum . Text = ClassCode
txbPVSN . Text = " "
txbPVSN . BackColor = Color . White
NowRegCheck ( )
StartCountSetting ( )
btnReset . Enabled = True
End Sub
Private Sub TimerFalse ( )
RunTimer . Enabled = False
ThreadStop = True
End Sub
Private Sub txbPVSN_KeyDown ( sender As Object , e As KeyEventArgs ) Handles txbPVSN . KeyDown
If chbAutoMeasure . Checked = False Then
If e . KeyCode = Keys . Return Then
btnEnter_Click ( sender , New System . EventArgs )
End If
End If
End Sub
Private Sub ckbDBServer_CheckedChanged ( sender As Object , e As EventArgs ) Handles ckbDBServer . CheckedChanged
ServerChanger ( ckbDBServer . Checked )
End Sub
Private Sub TraySerialSetting ( )
Dim NewData As Boolean = False
Dim NowYear As Int16 = Format ( Now , " yy " )
Dim NowMonth As Int16 = Format ( Now , " MM " )
TrayDataReset ( )
If BeforeTrayData ( NowYear , NowMonth ) Then
If BeforeTrayLoad ( NowYear , NowMonth ) Then
If BeforeTrayState ( ) Then
NewData = False
Else
NewData = True
End If
Else
NewData = True
End If
Else
If NewInfoRegData ( NowYear , NowMonth ) Then
MsgBox ( " 데이터베이스에 데이터를 생성할 수 없습니다. " , vbCritical )
Exit Sub
End If
NewData = True
End If
If NewData = True Then
Dim MinResult As String = SerialMaxSearch ( NowYear , NowMonth )
If MinResult = " 0 " Then
Dim CtMax As String = CtNumMaxSearch ( NowYear , NowMonth )
If CtMax = " NULL " Then
Exit Sub
End If
If CtMax = " 0 " Then
MinResult = ClassCode & ColorCode & " 0000 "
Else
MinResult = CtMax
End If
End If
MinResult = Val ( MinResult ) + 1
If MAXResultSetting ( MinResult , NowYear , NowMonth ) Then
Exit Sub
End If
End If
TrayNowState ( )
End Sub
Private Sub TrayDataReset ( )
txbTrayMax . Text = String . Empty
txbTrayMin . Text = String . Empty
txbNowNum . Text = String . Empty
End Sub
Private Function CtNumMaxSearch ( NowYear As Int16 , NowMonth As Int16 ) As String
If TDUseCompare = True Then
DBCmd = " SELECT IFNULL(max(Ct_SN),0) FROM " & ApplyCartDB & " WHERE Ct_Manufacture_Year = ' " & NowYear & " ' AND Ct_Manufacture_Month = ' " & NowMonth & " ' AND Ct_SN LIKE ' " & ClassCode & ColorCode & " %' AND Ct_Model = ' " & txbPDModel . Text & " ' AND Ct_SN > 100000 AND (Ct_Type = ' " & txbPDType . Text & " ' OR Ct_Type = 'SET') "
Else
DBCmd = " SELECT IFNULL(max(Ct_SN),0) FROM " & ApplyNonTDDB & " WHERE Ct_Manufacture_Year = ' " & NowYear & " ' AND Ct_Manufacture_Month = ' " & NowMonth & " ' AND Ct_SN LIKE ' " & ClassCode & ColorCode & " %' AND Ct_Model = ' " & txbPDModel . Text & " ' AND Ct_SN > 100000 AND (Ct_Type = ' " & txbPDType . Text & " ' OR Ct_Type = 'SET') "
End If
Dim CtMaxResult As String = DBQueryScalar ( DBCmd )
If CtMaxResult = " False " Then
MsgBox ( " 최대값을 불러올 수 없습니다. " , vbCritical )
Return " NULL "
End If
If CtMaxResult = " " Then
Return " 0 "
Else
Return CtMaxResult
End If
End Function
Private Function NewInfoRegData ( NowYear As Int16 , NowMonth As Int16 ) As Boolean
DBCmd = " INSERT INTO " & InfoRegStateDB & " (UserID,ModelNum,TypeNum,ColorNum,UsageNum,CreateYear,CreateMonth) VALUES(' " & IDName & " ',' " & ModelCode & " ',' " & TypeCode & " ',' " & ColorCode & " ',' " & ClassCode & " ',' " & NowYear & " ',' " & NowMonth & " ') "
If DBCommand ( DBCmd ) Then
Return False
Else
Return True
End If
End Function
Private Function MAXResultSetting ( MinResult As String , NowYear As Int16 , NowMonth As Int16 ) As Boolean
Dim CheckOkNg As Boolean
Dim RunCount As Int32 = nudTray . Value - 1
Dim SearchYear As String = Format ( Now , " yy " )
Dim SearchDate As String = Format ( Now , " MM " )
ReDim TrayData ( TrayDataList . State , RunCount )
If ResetTrayData ( NowYear , NowMonth ) Then
Return True
End If
For tay = 0 To RunCount
CheckOkNg = False
'For chk = 0 To nudSerialCheck.Value - 1
' DBCmd = "SELECT COUNT(Ct_SN) FROM " & ApplyCartDB & " WHERE Ct_Manufacture_Year = '" & SearchYear & "' AND Ct_Manufacture_Month = '" & SearchDate & "' and Ct_SN = '" & MinResult & "' AND Ct_Model = '" & txbPDModel.Text & "' AND Ct_Type = '" & txbPDType.Text & "'"
' Dim CtCount As String = DBQueryScalar(DBCmd)
' If CtCount = "False" Then
' MsgBox("시리얼 번호를 등록할 수 없습니다.", vbCritical)
' Return True
' End If
' If CtCount > 0 Then
' MinResult += 1
' Else
' TrayData(TrayDataList.NumData, tay) = MinResult
' TrayData(TrayDataList.State, tay) = "0"
' If TrayDataUpdate(tay) Then
' MsgBox("Tray Data를 입력하는 도중 오류가 발생하였습니다.", vbCritical)
' Return True
' End If
' CheckOkNg = True
' Exit For
' End If
'Next
'If CheckOkNg = False Then
' MsgBox("Serial Number 를 DB에 입력하지 못했습니다.", vbCritical)
' Return True
'End If
TrayData ( TrayDataList . NumData , tay ) = MinResult
TrayData ( TrayDataList . State , tay ) = " 0 "
If TrayDataUpdate ( tay , NowYear , NowMonth ) Then
MsgBox ( " Tray Data를 입력하는 도중 오류가 발생하였습니다. " , vbCritical )
Return True
End If
If tay = RunCount Then
If TrayMaxUpdate ( tay , NowYear , NowMonth ) Then
Return False
Else
MsgBox ( " Serial Number 를 DB에 입력하지 못했습니다. " , vbCritical )
Return True
End If
End If
MinResult += 1
Next
MsgBox ( " Data를 전부 다 처리하지 못했습니다. " , vbCritical )
Return True
End Function
Private Function TrayMaxUpdate ( TrayNumber As Int32 , NowYear As Int16 , NowMonth As Int16 ) As Boolean
DBCmd = " UPDATE " & InfoRegStateDB & " SET MaxNum = ' " & TrayData ( TrayDataList . NumData , TrayNumber ) & " ' WHERE UserID = ' " & IDName & " ' AND ModelNum = ' " & ModelCode & " ' AND TypeNum = ' " & TypeCode & " ' AND ColorNum = ' " & ColorCode & " ' AND UsageNum = ' " & ClassCode & " ' AND CreateYear = ' " & NowYear & " ' AND CreateMonth = ' " & NowMonth & " ' "
If DBCommand ( DBCmd ) Then
Return True
Else
Return False
End If
End Function
Private Function TrayDataUpdate ( UpdateData As Int16 , NowYear As Int16 , NowMonth As Int16 ) As Boolean
Dim DBUpdateCnt As String = UpdateData + 1
Dim UpdateCmd As String = " Tray " & DBUpdateCnt & " Num = ' " & TrayData ( TrayDataList . NumData , UpdateData ) & " ', Tray " & DBUpdateCnt & " State = ' " & TrayData ( TrayDataList . State , UpdateData ) & " ' "
DBCmd = " UPDATE " & InfoRegStateDB & " SET " & UpdateCmd & " WHERE UserID = ' " & IDName & " ' AND ModelNum = ' " & ModelCode & " ' AND TypeNum = ' " & TypeCode & " ' AND ColorNum = ' " & ColorCode & " ' AND UsageNum = ' " & ClassCode & " ' AND CreateYear = ' " & NowYear & " ' AND CreateMonth = ' " & NowMonth & " ' "
If DBCommand ( DBCmd ) Then
Return False
Else
Return True
End If
End Function
Private Function ResetTrayData ( NowYear As Int16 , NowMonth As Int16 ) As Boolean
DBCmd = " UPDATE " & InfoRegStateDB & " SET MaxNum = 0, Tray1Num = 0, Tray1State = 0, Tray2Num = 0, Tray2State = 0, Tray3Num = 0, Tray3State = 0, Tray4Num = 0, Tray4State = 0, Tray5Num = 0, Tray5State = 0, Tray6Num = 0, Tray6State = 0, Tray7Num = 0, Tray7State = 0, Tray8Num = 0, Tray8State = 0, Tray9Num = 0, Tray9State = 0, Tray10Num = 0, Tray10State = 0, Tray11Num = 0, Tray11State = 0, Tray12Num = 0, Tray12State = 0 WHERE UserID = ' " & IDName & " ' AND ModelNum = ' " & ModelCode & " ' AND TypeNum = ' " & TypeCode & " ' AND ColorNum = ' " & ColorCode & " ' AND UsageNum = ' " & ClassCode & " ' AND CreateYear = ' " & NowYear & " ' AND CreateMonth = ' " & NowMonth & " ' "
If DBCommand ( DBCmd ) Then
Return False
Else
Return True
End If
End Function
Private Function SerialMaxSearch ( NowYear As Int16 , NowMonth As Int16 ) As String
DBCmd = " SELECT ifnull(max(MaxNum),0) FROM " & InfoRegStateDB & " WHERE ModelNum = ' " & ModelCode & " ' AND TypeNum = ' " & TypeCode & " ' AND ColorNum = ' " & ColorCode & " ' AND UsageNum = ' " & ClassCode & " ' AND CreateYear = ' " & NowYear & " ' AND CreateMonth = ' " & NowMonth & " ' "
Return DBQueryScalar ( DBCmd )
End Function
Private Sub TrayNowState ( )
txbTrayMin . Text = TrayData ( TrayDataList . NumData , 0 )
txbTrayMax . Text = TrayData ( TrayDataList . NumData , TrayData . GetLength ( 1 ) - 1 )
For c = 0 To TrayData . GetLength ( 1 ) - 1
If TrayData ( TrayDataList . State , c ) = 0 Then
txbNowNum . Text = TrayData ( TrayDataList . NumData , c )
txbNowNum . BackColor = Color . White
txbNowNum . Refresh ( )
Exit Sub
End If
Next
txbNowNum . Text = " 완료 "
txbNowNum . BackColor = Color . Green
txbNowNum . Refresh ( )
End Sub
Private Function BeforeTrayState ( ) As Boolean
For i = 0 To TrayData . GetLength ( 1 ) - 1
If TrayData ( TrayDataList . NumData , i ) = 0 Then
Return False '' 시리얼 번호가 0번일 시 신규 생성
End If
If TrayData ( TrayDataList . State , i ) = 0 Then
Return True '' 한 개라도 처리 안 한 제품이 있을 시
End If
Next
Return False '' 모두 처리 했을 경우
End Function
Private Function BeforeTrayLoad ( NowYear As Int16 , NowMonth As Int16 ) As Boolean
BeforeTrayDBCmd ( NowYear , NowMonth )
If DBQueryReader ( DBCmd ) Then
Dim DataCount As Integer = 0
Dim RowData As Integer = ( sqlDataQuery . Length / TrayDataList . maxList ) - 1
ReDim TrayData ( TrayDataList . State , RowData )
For c = 0 To RowData
For r = 0 To TrayDataList . State
TrayData ( r , c ) = sqlDataQuery ( DataCount )
DataCount += 1
Next
Next
Return True '' 데이터가 있을 경우
Else
Return False '' 데이터가 없을 경우
End If
End Function
Private Sub BeforeTrayDBCmd ( NowYear As Int16 , NowMonth As Int16 )
DBCmd = String . Empty
For i = nudTray . Value To 1 Step - 1
If i = 1 Then
DBCmd = " Tray " & i & " Num,Tray " & i & " State " & DBCmd
Else
DBCmd = " ,Tray " & i & " Num,Tray " & i & " State " & DBCmd
End If
Next
DBCmd = " SELECT " & DBCmd & " FROM " & InfoRegStateDB & " WHERE UserID= ' " & IDName & " ' AND ModelNum = ' " & ModelCode & " ' AND TypeNum = ' " & TypeCode & " ' AND ColorNum = ' " & ColorCode & " ' AND UsageNum = ' " & ClassCode & " ' AND CreateYear = ' " & NowYear & " ' AND CreateMonth = ' " & NowMonth & " ' "
End Sub
Private Sub Button2_Click ( sender As Object , e As EventArgs ) Handles Button2 . Click
End Sub
Private Sub Button1_Click ( sender As Object , e As EventArgs ) Handles Button1 . Click
TraySerialSetting ( )
End Sub
Private Sub ckbManager_CheckedChanged ( sender As Object , e As EventArgs ) Handles ckbManager . CheckedChanged
If ckbManager . Checked = True Then
RichTextBox1 . Visible = True
Button1 . Visible = True
Button2 . Visible = True
Else
RichTextBox1 . Visible = False
Button1 . Visible = False
Button2 . Visible = False
End If
End Sub
Private Sub ckbAutoFunc_CheckedChanged ( sender As Object , e As EventArgs ) Handles ckbAutoFunc . CheckedChanged
If ckbAutoFunc . Checked = True Then
btnTrayEnd . Enabled = True
Else
btnTrayEnd . Enabled = False
End If
txbPVSN . Focus ( )
End Sub
Private Sub TrayEndUpdate ( NowYear As Int16 , NowMonth As Int16 )
DBCmd = String . Empty
For i = nudTray . Value To 1 Step - 1
If i = 1 Then
DBCmd = " Tray " & i & " State = '1' " & DBCmd
Else
DBCmd = " ,Tray " & i & " State = '1' " & DBCmd
End If
Next
DBCmd = " UPDATE " & InfoRegStateDB & " SET " & DBCmd & " WHERE UserID= ' " & IDName & " ' AND ModelNum = ' " & ModelCode & " ' AND TypeNum = ' " & TypeCode & " ' AND ColorNum = ' " & ColorCode & " ' AND UsageNum = ' " & ClassCode & " ' AND CreateYear = ' " & NowYear & " ' AND CreateMonth = ' " & NowMonth & " ' "
End Sub
Private Sub btnTrayEnd_Click ( sender As Object , e As EventArgs ) Handles btnTrayEnd . Click
Dim NowDate As String = Format ( Now , " yy " )
Dim NowTime As String = Format ( Now , " MM " )
If BeforeTrayData ( NowDate , NowTime ) Then
TrayEndUpdate ( NowDate , NowTime )
End If
End Sub
Private Function BeforeTrayData ( NowYear As Int16 , NowMonth As Int16 ) As Boolean
DBCmd = " SELECT COUNT(UserID) FROM " & InfoRegStateDB & " WHERE UserID= ' " & IDName & " ' AND ModelNum = ' " & ModelCode & " ' AND TypeNum = ' " & TypeCode & " ' AND ColorNum = ' " & ColorCode & " ' AND UsageNum = ' " & ClassCode & " ' AND CreateYear = ' " & NowYear & " ' AND CreateMonth = ' " & NowMonth & " ' "
Dim BeforeData As String = DBQueryScalar ( DBCmd )
If BeforeData > 0 Then
Return True ''있을 경우
Else
Return False '' 없을 경우
End If
End Function
End Class