Compare commits

...

11 Commits

Author SHA1 Message Date
hyelinjung
a1b1852a91 1. 마름모 검사 EP, RF 개별 금일 검사 수량으로 적용
2. RF 검사 PREQ 값 변수 타입 int16 -> double 변경해 오버플로우 해결
2026-03-30 11:33:49 +09:00
hyelinjung
e32a0b90d6 1. 모델별 config 파일 생성 및 적용
2. 지그 연결이 끊어지는 경우 다시 한번 자동으로 RETRY
3. 세모 플러스 검사 추가
4. EP 검사(3번)마다 장치 설정 따로 할 수 있도록 설정 화면 수정
5. 스코프, 스펙트럼 통신 중 발생할 수 있는 오류 최소화 하기 위해 중간에 장치 버퍼 CLEAR 추가
6. 버전 2.2.4
2026-03-25 15:50:47 +09:00
hyelinjung
1cedc93a66 1.기능검사 spectrum, scope clear 예외처리
2.버전 2.2.3
2026-03-04 17:03:09 +09:00
hyelinjung
03943cf576 1. TD를 읽어올때(settdsn) 첫글자가 아스키코드 숫자 OR 대소문 알파벳범위가 아닐 경우 존재하지 않는 경우로 지정 2026-02-13 09:39:30 +09:00
hyelinjung
fff41f2ad1 1.기존 모델(스펙트럼-> 스코프), 보급형 모델(스코프 -> 스펙트럼) 생산검사1 에서 pcb write -> 검사2 에서 확인
2. 마름모 검사 시 화면 변경 안되는 경우 수정
3. 2.2.2 버전
2026-02-12 14:46:50 +09:00
hyelinjung
50def4c2cf 1. EP 검사 계측기 오류 즉시 종료 -> 재검사 루틴에 포함
2. LDM 검사 스코프 -> 스펙트럼 흐름으로 수정
2-1. 스펙트럼 검사 전 파형검사 TEST STEP 확인 후 진행 (27,23, 21 만 가능)
2-2. LDM 모든 검사 최종 합격시 TESTSTEP은 21
3. TD 이미 입력 되었을 경우 UI (이미등록완료된TD) 적용
2026-02-06 17:56:24 +09:00
hyelinjung
4a3672e1de 1.LDM 검사 추가(수입/생산1/생산2)
2.버전 2.1.3
3.LDM measure config UI 추가
2026-02-02 17:50:56 +09:00
hyelinjung
ddb6c6220a 1.보급형인 경우 hf & ep 검사에서 ep 먼저 수행 -> 기존 ep 검사에서 pcb td 번호와 검사하는 td 번호 비교하는 로직 주석처리
2.버전 2.1.2
3. ep 검사일 때 td 생성 시(step =11) NonTD 데이터 생성 ->won 모델인 경우 제외
4.보급형 모델 rf,ep 검사 nas db 저장 시 성공해도 실패 로직으로 진행되는 부분 정상 수정
2026-01-21 11:12:24 +09:00
hyelinjung
6f68fa71c0 1.보급형 모델 검사 시 모든 계측기 사용 ->필요한 계측기 분리 changeMode()
2. 2.1.0 버전 업데이트
2026-01-13 17:25:13 +09:00
hyelinjung
bd7b98805d 1.보급형 모델 검사 모드 추가
(iqc_hfep, iqc_ep, iqc_rfepmc / prd_hfLdm, prd_ep, prd_rfmc)
2.보급형 모델 수입 & 생산 검사 후 DB 저장
3.보급형에서 기존 ui 재사용으로 ui 선택 함수 생성 chooseStatusFunc()
4.버전 2.0.9
2026-01-13 11:02:39 +09:00
hyelinjung
c07ef2bbf1 보급형 모델 won 테스트 모드 추가
-임시 하드코딩으로 모델과 모드 추가함
2025-12-31 11:25:10 +09:00
7 changed files with 5109 additions and 874 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
Imports MySql.Data.MySqlClient Imports MySql.Data.MySqlClient
Module MySqlMoudule Module MySqlMoudule
Private Const LocalHostIP As String = "192.168.0.250" Private Const LocalHostIP As String = "192.168.0.250"
@ -68,25 +68,24 @@ Module MySqlMoudule
DBClose() DBClose()
Return False Return False
End Try End Try
End
End Function End Function
Public Function DBQueryScalar(cmdStr As String) As String Public Function DBQueryScalar(cmdStr As String) As String
Dim result As String
Try Try
Database_Use() Database_Use()
sqlCmd.CommandText = cmdStr sqlCmd.CommandText = cmdStr
sqlCmd.Connection = sqlCon sqlCmd.Connection = sqlCon
result = sqlCmd.ExecuteScalar() 'SQL 명령을 실행하고, Query 리턴하는 첫번째 행의 첫번째 열을 리턴한다. 결과가 1개인 집계함수(count, sum, avg ) 사용한다. 반환값은 object Dim objResult As Object = sqlCmd.ExecuteScalar() 'SQL 명령을 실행하고, Query 리턴하는 첫번째 행의 첫번째 열을 리턴한다. 결과가 1개인 집계함수(count, sum, avg ) 사용한다. 반환값은 object
Return result If objResult Is Nothing OrElse IsDBNull(objResult) Then
Return "False"
End If
Return objResult.ToString()
Catch ex As Exception Catch ex As Exception
MsgBox("MySQL Command Error:" + vbCrLf + Err.Description) MsgBox("MySQL Command Error:" + vbCrLf + Err.Description)
Return "False" Return "False"
End Try End Try
End
End Function End Function
Public Function DBQueryReader(cmdStr As String) As Integer Public Function DBQueryReader(cmdStr As String) As Integer

View File

@ -1,4 +1,4 @@
Imports Npgsql Imports Npgsql
Module PostgreSQLModule Module PostgreSQLModule
Private pgSqlCon As NpgsqlConnection = New NpgsqlConnection("Host=mes-db.postgres.database.azure.com;Username=jionmt@mes-db;Password=jmtdb6919!!pg;Database=mes-jion-data") Private pgSqlCon As NpgsqlConnection = New NpgsqlConnection("Host=mes-db.postgres.database.azure.com;Username=jionmt@mes-db;Password=jmtdb6919!!pg;Database=mes-jion-data")
@ -51,25 +51,25 @@ Module PostgreSQLModule
End Function End Function
Public Function pgDBQueryScalar(cmdStr As String) As String Public Function pgDBQueryScalar(cmdStr As String) As String
Dim result As String
Try Try
If pgDBOpen() Then If pgDBOpen() Then
MsgBox("DB 연결을 진행할 수 없습니다.", vbCritical) MsgBox("DB 연결을 진행할 수 없습니다.", vbCritical)
Return 0 Return "False"
End If End If
sqlCmd.CommandText = cmdStr sqlCmd.CommandText = cmdStr
sqlCmd.Connection = pgSqlCon sqlCmd.Connection = pgSqlCon
result = sqlCmd.ExecuteScalar() 'SQL 명령을 실행하고, Query 리턴하는 첫번째 행의 첫번째 열을 리턴한다. 결과가 1개인 집계함수(count, sum, avg ) 사용한다. 반환값은 object Dim objResult As Object = sqlCmd.ExecuteScalar() 'SQL 명령을 실행하고, Query 리턴하는 첫번째 행의 첫번째 열을 리턴한다. 결과가 1개인 집계함수(count, sum, avg ) 사용한다. 반환값은 object
Return result If objResult Is Nothing OrElse IsDBNull(objResult) Then
Return "False"
End If
Return objResult.ToString()
Catch ex As Exception Catch ex As Exception
MsgBox("MySQL Command Error:" + vbCrLf + Err.Description) MsgBox("MySQL Command Error:" + vbCrLf + Err.Description)
Return "False" Return "False"
End Try End Try
End
End Function End Function
Public Function pgDBQueryReader(cmdStr As String) As Integer Public Function pgDBQueryReader(cmdStr As String) As Integer

View File

@ -116,14 +116,10 @@
<Reference Include="Google.Protobuf, Version=3.6.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL"> <Reference Include="Google.Protobuf, Version=3.6.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
<HintPath>..\packages\Google.Protobuf.3.6.1\lib\net45\Google.Protobuf.dll</HintPath> <HintPath>..\packages\Google.Protobuf.3.6.1\lib\net45\Google.Protobuf.dll</HintPath>
</Reference> </Reference>
<Reference Include="Interop.bpac"> <Reference Include="Ivi.Visa.Interop, Version=8.0.0.0, Culture=neutral, PublicKeyToken=a128c98f1d7717c1, processorArchitecture=AMD64">
<HintPath>C:\Program Files\Brother bPAC3 SDK\Samples\VBNET\NamePlt\bin\x64\Release\Interop.bpac.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="Ivi.Visa.Interop, Version=5.11.0.0, Culture=neutral, PublicKeyToken=a128c98f1d7717c1, processorArchitecture=AMD64">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<EmbedInteropTypes>True</EmbedInteropTypes> <EmbedInteropTypes>True</EmbedInteropTypes>
<HintPath>C:\Windows\assembly\GAC_64\Ivi.Visa.Interop\5.11.0.0__a128c98f1d7717c1\Ivi.Visa.Interop.dll</HintPath> <HintPath>..\..\..\..\..\..\Windows\assembly\GAC_64\Ivi.Visa.Interop\8.0.0.0__a128c98f1d7717c1\Ivi.Visa.Interop.dll</HintPath>
</Reference> </Reference>
<Reference Include="K4os.Compression.LZ4, Version=1.1.11.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL"> <Reference Include="K4os.Compression.LZ4, Version=1.1.11.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL">
<HintPath>..\packages\K4os.Compression.LZ4.1.1.11\lib\net46\K4os.Compression.LZ4.dll</HintPath> <HintPath>..\packages\K4os.Compression.LZ4.1.1.11\lib\net46\K4os.Compression.LZ4.dll</HintPath>

View File

@ -1,4 +1,4 @@
Module ScopeMoudule Module ScopeMoudule
Public myMgr As Ivi.Visa.Interop.ResourceManager Public myMgr As Ivi.Visa.Interop.ResourceManager
Public myscope As Ivi.Visa.Interop.FormattedIO488 Public myscope As Ivi.Visa.Interop.FormattedIO488
@ -7,34 +7,47 @@
Public Function ScopeOpen(ScopeID As String, timeoutNum As Integer) As String Public Function ScopeOpen(ScopeID As String, timeoutNum As Integer) As String
Try Try
ScopeClear()
If ScopeID = "" Then
Return "FAIL"
End If
myMgr = New Ivi.Visa.Interop.ResourceManager myMgr = New Ivi.Visa.Interop.ResourceManager
myscope = New Ivi.Visa.Interop.FormattedIO488 myscope = New Ivi.Visa.Interop.FormattedIO488
myscope.IO = myMgr.Open(ScopeID) myscope.IO = myMgr.Open(ScopeID)
myscope.IO.Clear()
myscope.IO.Timeout = timeoutNum myscope.IO.Timeout = timeoutNum
DrainDeviceOutput()
strQueryResult = DoQueryString("*IDN?") strQueryResult = DoQueryString("*IDN?")
Debug.Print("Identification string: " + strQueryResult) Debug.Print("Identification string: " + strQueryResult)
Return strQueryResult Return strQueryResult
Catch ex As System.Runtime.InteropServices.COMException
Debug.Print("ErrorCode 값: " & ex.ErrorCode)
Debug.Print("ErroMassage 값: " & ex.Message.ToString)
Debug.Print("HResult 값: " & ex.HResult)
Return "FAIL"
Catch ex As Exception Catch ex As Exception
Return "FAIL" Return "FAIL"
End Try End Try
End Function End Function
Public Function ScopeRunCk() As Boolean ''계측기 버퍼 비우기
Public Sub DrainDeviceOutput(Optional readTimeoutMs As Integer = 200)
Dim prevTimeout As Integer = myscope.IO.Timeout
Try Try
strQueryResult = DoQueryString("*IDN?") myscope.IO.Timeout = readTimeoutMs
If InStr(strQueryResult, "KEYSIGHT") > 0 Then Dim s As String = myscope.ReadString
Return False Debug.Print("남아있는 데이터: " + s)
Else Do While Not String.IsNullOrWhiteSpace(s)
Return True s = myscope.ReadString
End If Loop
Catch ex As Exception Catch
Return True checkError()
Finally
myscope.IO.Timeout = prevTimeout
End Try End Try
End Function End Sub
Public Function DoCommand(command As String) As String Public Function DoCommand(command As String) As String
Dim errStr As String Dim errStr As String
@ -53,15 +66,6 @@
End Function End Function
' Public Sub DoCommand(command As String)
' On Error GoTo VisaComError
' myscope.WriteString(command)
' CheckInstrumentErrors()
' Exit Sub
'VisaComError:
' MsgBox("VISA COM Error: " + vbCrLf + CStr(Err.Number) + ", " + Err.Source + "," + Err.Description, vbExclamation, "VISA COM Error")
' End Sub
Public Function DoQueryString(query As String) As String Public Function DoQueryString(query As String) As String
Dim errStr As String Dim errStr As String
@ -76,27 +80,19 @@
Return DoQueryString Return DoQueryString
Catch ex As Exception Catch ex As Exception
Try
DrainDeviceOutput()
Catch
End Try
Return "VISA COM Error: " + vbCrLf + CStr(Err.Number) + ", " + Err.Source + "," + Err.Description Return "VISA COM Error: " + vbCrLf + CStr(Err.Number) + ", " + Err.Source + "," + Err.Description
End Try End Try
End Function End Function
' Public Function DoQueryString(query As String) As String
' Dim errStr As String
' On Error GoTo VisaComError
' myscope.WriteString(query)
' DoQueryString = myscope.ReadString
' CheckInstrumentErrors()
' Return DoQueryString
'VisaComError:
' MsgBox("VISA COM Error: " + vbCrLf + CStr(Err.Number) + ", " + Err.Source + "," + Err.Description, vbExclamation, "VISA COM Error")
' Return "FAIL"
' End Function
Private Function CheckInstrumentErrors() As String Private Function CheckInstrumentErrors() As String
Dim strerrval As String Dim strerrval As String
Dim strout As String = "" Dim strout As String = ""
Try
myscope.WriteString(":SYSTem:ERRor?") myscope.WriteString(":SYSTem:ERRor?")
strerrval = myscope.ReadString strerrval = myscope.ReadString
While Val(strerrval) <> 0 While Val(strerrval) <> 0
@ -113,25 +109,38 @@
End If End If
Return "" Return ""
Catch ex As Exception
Main_Form.txbWindow.AppendText("Error check Message Error:" & ex.Message & vbCrLf)
Return ex.Message
End Try
End Function End Function
'Private Sub CheckInstrumentErrors() Private Sub checkError()
' Dim strerrval As String Dim strerrval As String
' Dim strout As String = "" Try
myscope.WriteString(":SYSTem:ERRor?")
strerrval = myscope.ReadString
While Val(strerrval) <> 0
myscope.WriteString(":SYSTem:ERRor?")
strerrval = myscope.ReadString
End While
Catch ex As Exception
Main_Form.txbWindow.AppendText("VISA BUFFER CLEAR ERROR:" & ex.Message & vbCrLf)
End Try
End Sub
' myscope.WriteString(":SYSTem:ERRor?")
' strerrval = myscope.ReadString
' While Val(strerrval) <> 0
' strout = "INST Error: " + strerrval
' myscope.WriteString(":SYSTem:ERRor?")
' strerrval = myscope.ReadString
' End While
' If Not strout = "" Then ''' <summary>스코프 버퍼 초기화. 연결된 경우에만 동작.</summary>
' MsgBox(strout, vbExclamation, "INST Error Messages") Public Sub ScopeClear()
' myscope.FlushWrite(False) Try
' myscope.FlushRead() If myscope IsNot Nothing AndAlso myscope.IO IsNot Nothing Then
' End If myscope.IO.Clear()
'End Sub End If
Catch
' 연결 해제 등으로 접근 불가 무시
End Try
End Sub
End Module End Module

View File

@ -1,4 +1,4 @@
Module SpectrumModule Module SpectrumModule
Private myMgr As Ivi.Visa.Interop.ResourceManager Private myMgr As Ivi.Visa.Interop.ResourceManager
Private mySpec As Ivi.Visa.Interop.FormattedIO488 Private mySpec As Ivi.Visa.Interop.FormattedIO488
@ -6,25 +6,47 @@
Public Function SpecOpen(SpecID As String, ToCount As Integer) As String Public Function SpecOpen(SpecID As String, ToCount As Integer) As String
Try Try
SpecClear()
myMgr = New Ivi.Visa.Interop.ResourceManager myMgr = New Ivi.Visa.Interop.ResourceManager
mySpec = New Ivi.Visa.Interop.FormattedIO488 mySpec = New Ivi.Visa.Interop.FormattedIO488
mySpec.IO = myMgr.Open(SpecID) mySpec.IO = myMgr.Open(SpecID)
'mySpec.IO.Clear()
mySpec.IO.Timeout = ToCount mySpec.IO.Timeout = ToCount
SpecDrainDeviceOutput(200)
strQueryRes = SpecQueryStr("*IDN?") strQueryRes = SpecQueryStr("*IDN?")
Return strQueryRes Return strQueryRes
Catch ex As System.Runtime.InteropServices.COMException
Debug.Print("ErrorCode 값: " & ex.ErrorCode)
Debug.Print("ErroMassage 값: " & ex.Message)
Debug.Print("HResult 값: " & ex.HResult)
Return "FAIL"
Catch ex As Exception Catch ex As Exception
Return "FAIL" Return "FAIL"
End Try End Try
End Function End Function
Public Sub SpecDrainDeviceOutput(Optional readTimeoutMs As Integer = 200)
Dim prevTimeout As Integer = mySpec.IO.Timeout
Try
mySpec.IO.Timeout = readTimeoutMs
Dim s As String = mySpec.ReadString
Do While Not String.IsNullOrWhiteSpace(s)
s = mySpec.ReadString
Loop
Catch
' 타임아웃/에러 그만
Finally
mySpec.IO.Timeout = prevTimeout
End Try
End Sub
Public Function RunCommand(command As String) As String Public Function RunCommand(command As String) As String
Dim errStr As String Dim errStr As String
Try Try
mySpec.IO.Clear()
SpecDrainDeviceOutput(200)
mySpec.WriteString(command) mySpec.WriteString(command)
errStr = CheckError() errStr = CheckError()
If errStr.Replace(" ", "") <> "" Then If errStr.Replace(" ", "") <> "" Then
@ -41,6 +63,8 @@
Public Function SpecQueryStr(query As String) As String Public Function SpecQueryStr(query As String) As String
Dim errStr As String Dim errStr As String
Try Try
mySpec.IO.Clear()
SpecDrainDeviceOutput(200)
mySpec.WriteString(query) mySpec.WriteString(query)
SpecQueryStr = mySpec.ReadString SpecQueryStr = mySpec.ReadString
errStr = CheckError() errStr = CheckError()
@ -58,7 +82,7 @@
Private Function CheckError() As String Private Function CheckError() As String
Dim strerrval As String Dim strerrval As String
Dim strout As String = "" Dim strout As String = ""
Try
mySpec.WriteString(":SYSTem:ERRor?") mySpec.WriteString(":SYSTem:ERRor?")
strerrval = mySpec.ReadString strerrval = mySpec.ReadString
While Val(strerrval) <> 0 While Val(strerrval) <> 0
@ -75,6 +99,22 @@
End If End If
Return "" Return ""
Catch ex As Exception
Main_Form.txbWindow.AppendText("Error check Message Error:" & ex.Message & vbCrLf)
Return ex.Message
End Try
End Function End Function
''' <summary>스펙트럼 분석기 버퍼 초기화. 연결된 경우에만 동작.</summary>
Public Sub SpecClear()
Try
If mySpec IsNot Nothing AndAlso mySpec.IO IsNot Nothing Then
mySpec.IO.Clear()
End If
Catch
' 연결 해제 등으로 접근 불가 무시
End Try
End Sub
End Module End Module