Merge branch 'master' of http://20.249.208.89:3000/jionmt-sw/prod-ProductFunctionTester
This commit is contained in:
commit
078628b364
4802
ProductFunctionTester/Main_Form.Designer.vb
generated
4802
ProductFunctionTester/Main_Form.Designer.vb
generated
File diff suppressed because it is too large
Load Diff
@ -1906,7 +1906,8 @@ Public Class Main_Form
|
||||
End If
|
||||
|
||||
For i = 0 To tableName.Length - 1
|
||||
DBCmd = "SELECT COUNT(PV_SN) FROM " & tableName(i) & " WHERE PV_SN = '" & TestData.Test_Serial & "'"
|
||||
DBCmd = "SELECT COUNT(PV_SN) FROM " & tableName(i) & " WHERE PV_SN = '" & TestData.Test_Serial & "'" &
|
||||
" AND DATE(TestDate) = CURDATE()"
|
||||
Dim DupYn As Int16 = DBQueryScalar(DBCmd)
|
||||
|
||||
If DupYn > 0 Then
|
||||
@ -2605,14 +2606,82 @@ SettingFail:
|
||||
|
||||
End Function
|
||||
|
||||
'Private Sub Jig_End()
|
||||
' If EndTest() Then
|
||||
' txbWindow.AppendText("JIG Serial Test End : FAIL" & vbCrLf)
|
||||
' Exit Sub
|
||||
' End If
|
||||
' txbWindow.AppendText("JIG Serial Test End : Success" & vbCrLf)
|
||||
'End Sub
|
||||
|
||||
Private Sub Jig_End()
|
||||
For retryCount As Integer = 0 To 2
|
||||
txbWindow.AppendText($"JIG 종료 시도 {retryCount + 1}/3" & vbCrLf)
|
||||
|
||||
If EndTest() Then
|
||||
txbWindow.AppendText("JIG Serial Test End : FAIL" & vbCrLf)
|
||||
txbWindow.AppendText($"JIG Serial Test End : FAIL (시도 {retryCount + 1})" & vbCrLf)
|
||||
|
||||
If retryCount < 2 Then
|
||||
Threading.Thread.Sleep(1000)
|
||||
|
||||
If JigSerial IsNot Nothing AndAlso JigSerial.IsOpen Then
|
||||
JigSerial.DiscardInBuffer()
|
||||
JigSerial.DiscardOutBuffer()
|
||||
Threading.Thread.Sleep(200)
|
||||
End If
|
||||
Continue For
|
||||
Else
|
||||
txbWindow.AppendText("JIG 정상 종료 실패 - 강제 종료 실행" & vbCrLf)
|
||||
ForceJigShutdown()
|
||||
Exit Sub
|
||||
End If
|
||||
Else
|
||||
txbWindow.AppendText("JIG Serial Test End : Success" & vbCrLf)
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Private Sub ForceJigShutdown()
|
||||
Try
|
||||
txbWindow.AppendText("강제 JIG 종료 시작" & vbCrLf)
|
||||
|
||||
If JigSerial IsNot Nothing AndAlso JigSerial.IsOpen Then
|
||||
Dim shutdownCommands() As String = {"[endmft]"}
|
||||
|
||||
For Each cmd In shutdownCommands
|
||||
Try
|
||||
SendData(cmd)
|
||||
Threading.Thread.Sleep(500)
|
||||
txbWindow.AppendText($"강제 종료 명령 전송: {cmd}" & vbCrLf)
|
||||
Catch
|
||||
|
||||
End Try
|
||||
Next
|
||||
|
||||
Try
|
||||
Dim portName As String = JigSerial.PortName
|
||||
Dim baudRate As Integer = JigSerial.BaudRate
|
||||
|
||||
JigSerial.Close()
|
||||
Threading.Thread.Sleep(1000)
|
||||
|
||||
JigSerial.PortName = portName
|
||||
JigSerial.BaudRate = baudRate
|
||||
JigSerial.Open()
|
||||
|
||||
txbWindow.AppendText("시리얼 포트 재연결 완료" & vbCrLf)
|
||||
Catch serialEx As Exception
|
||||
txbWindow.AppendText($"시리얼 포트 재연결 실패: {serialEx.Message}" & vbCrLf)
|
||||
End Try
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
txbWindow.AppendText($"강제 종료 중 오류: {ex.Message}" & vbCrLf)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
|
||||
Public Function EPTestRun() As Boolean
|
||||
Dim ForCnt As Int16 = 0
|
||||
Try
|
||||
@ -4488,12 +4557,32 @@ ErrorEnd:
|
||||
|
||||
End Function
|
||||
|
||||
Private Sub InitializeDeviceState()
|
||||
Try
|
||||
txbWindow.AppendText("기기 상태 초기화 시작..." & vbCrLf)
|
||||
|
||||
Try
|
||||
TestMode_On(0) ' MFT 모드를 0으로 초기화
|
||||
Threading.Thread.Sleep(300)
|
||||
Catch
|
||||
|
||||
End Try
|
||||
|
||||
txbWindow.AppendText("기기 상태 초기화 완료" & vbCrLf)
|
||||
|
||||
Catch ex As Exception
|
||||
txbWindow.AppendText("기기 초기화 중 오류 (무시하고 계속): " & ex.Message & vbCrLf)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub rfFunction()
|
||||
Try
|
||||
StartTime = MeasureTimeAll(MeasStart)
|
||||
|
||||
TestData.Test_Serial = txbBarcode.Text
|
||||
|
||||
InitializeDeviceState()
|
||||
|
||||
If StartSwitch = True Then
|
||||
If JigSerial.IsOpen = True Then
|
||||
|
||||
@ -4625,6 +4714,19 @@ ProcessEnd:
|
||||
Jig_End()
|
||||
NormalEnd:
|
||||
myscope.IO.Clear()
|
||||
'txbWindow.AppendText("[" & MeasureTimeAll(MeasEnd) & "ms] Test Play" & vbCrLf)
|
||||
|
||||
Try
|
||||
If TestError = False Then
|
||||
Jig_End() ' 지그 전원 차단
|
||||
TestMode_On(0) ' MFT 모드 초기화
|
||||
txbWindow.AppendText("비정상 종료로 인한 전원 차단" & vbCrLf)
|
||||
End If
|
||||
Catch normalEx As Exception
|
||||
txbWindow.AppendText("정상 종료 처리 중 오류: " & normalEx.Message & vbCrLf)
|
||||
End Try
|
||||
|
||||
'myscope.IO.Clear()
|
||||
txbWindow.AppendText("[" & MeasureTimeAll(MeasEnd) & "ms] Test Play" & vbCrLf)
|
||||
End Sub
|
||||
|
||||
@ -5270,12 +5372,12 @@ ProcessEnd:
|
||||
End If
|
||||
Else
|
||||
If TDDataSet(TD_Data.TestStep) = TestStepList.Rf_NewFail Or TDDataSet(TD_Data.TestStep) = TestStepList.RF_ReFail Then
|
||||
If processNum = TestStepList.HF_NewSuc Or processNum = TestStepList.HF_ReSuc Then
|
||||
If processNum = TestStepList.RF_NewSuc Or processNum = TestStepList.Rf_ReSuc Then
|
||||
txbOkCount.Text = Val(txbOkCount.Text) + 1
|
||||
txbNgCount.Text = Val(txbNgCount.Text) - 1
|
||||
End If
|
||||
Else
|
||||
If processNum = TestStepList.HF_NEWFail Or processNum = TestStepList.HF_ReFail Then
|
||||
If processNum = TestStepList.Rf_NewFail Or processNum = TestStepList.RF_ReFail Then
|
||||
txbOkCount.Text = Val(txbOkCount.Text) - 1
|
||||
txbNgCount.Text = Val(txbNgCount.Text) + 1
|
||||
End If
|
||||
@ -5283,6 +5385,7 @@ ProcessEnd:
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
Private Function CountUpdate() As Boolean
|
||||
If rdbAltoPD.Checked = True Then
|
||||
DBCmd = "UPDATE " & pd1CntTableNow & " SET PD1_AltoCnt = '" & txbDayCount.Text & "', PD1_AltoOkCnt = '" & txbOkCount.Text & "', PD1_AltoNgCnt = '" & txbNgCount.Text & "' WHERE PD1_Date = '" & NowDate & "'"
|
||||
|
114
README.md
Normal file
114
README.md
Normal file
@ -0,0 +1,114 @@
|
||||
# MAXIMUM & ALTO 기능 자동 검사 프로그램
|
||||
|
||||
## 📌 프로그램 개요
|
||||
|
||||
| 항목 | 내용 |
|
||||
| ---------- | -------------------------------------------------------------------------------------------------------------------- |
|
||||
| **프로그램 명** | `MAXIMUM_Multi_Function_Tester Ver.1.1.2` |
|
||||
| **설치 위치** | 6층 공장 라인 중간 / 9층 사무실 가장 오른쪽 검사 장비 |
|
||||
| **용도** | 반 조립 제품의 주파수 발생 여부 검사 및 제조 정보 자동 입력 |
|
||||
| **연결 장비** | Oscilloscope, Spectrum Analyzer, Control Box JIG, Barcode Scanner 등 |
|
||||
| **설명** | 자동으로 Jig 작동, 펌웨어 확인, 주파수 출력 감지 후 제조 정보 입력까지 수행하는 통합 검사 시스템 |
|
||||
|
||||
---
|
||||
|
||||
## 🖥️ 프로그램 UI
|
||||
|
||||
| 검사 모드 선택 화면 | 검사 실행 화면 |
|
||||
| -------------------------------------------------------------------- | --------------------------------------------------------------------- |
|
||||
|  |  |
|
||||
|
||||
---
|
||||
|
||||
## 🔢 검사 모드별 기능 요약
|
||||
|
||||
검사 모드는 제품 타입 및 단계에 따라 최대 8가지로 구분됩니다.
|
||||
|
||||
| 모드 | 설명 | 주요 테스트 기능 | 함수명 |
|
||||
| --- | --------------------- | ------------------ | ------------------- |
|
||||
| 1-1 | 업체전용 (RF/EP) | RF/EP 주파수 감지 | `CompanyFunction()` |
|
||||
| 1-2 | 수입검사 (HF/RF/EP) | 중간 부저 테스트 | `iqcFunction()` |
|
||||
| 1-3 | 생산 1 (HF 측정/정보입력) | HIFU 출력 측정 및 DB 저장 | `hfFunction()` |
|
||||
| 1-4 | 생산 2 (RF/MC/EP) | RF, 미세전류, EP 테스트 | `rfFunction()` |
|
||||
| 2-1 | ALTO 수입검사 (HF/EP) | ALTO HF/EP 테스트 | `altoFunctionIQC()` |
|
||||
| 2-2 | ALTO 생산 3 (HF/EP) | ALTO 생산 테스트 | `AltoFunctionPD()` |
|
||||
| 3-2 | DUALSONIC 생산 4 (HF) | DUALSONIC HF 테스트 | `DSTestFunction()` |
|
||||
| 4-2 | EFFECT 생산 5 (HF/정보입력) | HF 테스트 및 제조 정보 입력 | `hfFunction()` |
|
||||
|
||||
※ DUALSONIC/EFFECT의 수입검사 모드는 UI상 비활성화됨.
|
||||
|
||||
---
|
||||
|
||||
## 🧪 검사 순서 흐름 예시
|
||||
|
||||
### 예: 생산 1(HF)
|
||||
|
||||
```vbnet
|
||||
hfFunction()
|
||||
-> TDDataSearch()
|
||||
-> JigRun_On()
|
||||
-> FirmVerCheck()
|
||||
-> BatteryTest()
|
||||
-> TempTest()
|
||||
-> HFTestRun()
|
||||
-> DataWrite()
|
||||
-> HIFU_PostReg() → dbHFSave()
|
||||
→ CountChanage() → CountUpdate()
|
||||
-> Save_Csv()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🗃️ 데이터베이스 테이블 구성
|
||||
|
||||
```vbnet
|
||||
' 메인 테이블
|
||||
Private TDTable = "jomtTesterDB.jomtCartridgeTbl"
|
||||
Private hfDataTable = "jomtTesterDB.jomtHFTestTbl"
|
||||
Private rfDataTable = "jomtTesterDB.jomtRFTestTbl"
|
||||
Private pd1CntTable = "jomtTesterDB.jomtMES_PD1Tbl"
|
||||
Private iqcCntTable = "jomtTesterDB.jomtMES_IQCTbl"
|
||||
Private NonTDTable = "jomtTesterDB.jomtNonTDTbl"
|
||||
|
||||
' 테스트 서버용 테이블
|
||||
Private TDTestTable = "jomtTesterServerDB.jomtCartridgeTbl"
|
||||
Private hfDataTestTable = "jomtTesterServerDB.jomtHFTestTbl"
|
||||
Private rfDataTestTable = "jomtTesterServerDB.jomtRFTestTbl"
|
||||
Private pd1CntTestTable = "jomtTesterServerDB.jomtMES_PD1Tbl"
|
||||
Private iqcCntTestTable = "jomtTesterServerDB.jomtMES_IQCTbl"
|
||||
Private NonTDTestTable = "jomtTesterServerDB.jomtNonTDTbl"
|
||||
|
||||
' 사용 중인 현재 테이블
|
||||
Private TDTableNow = TDTable
|
||||
Private hfTableNow = hfDataTable
|
||||
Private rfTableNow = rfDataTable
|
||||
Private pd1CntTableNow = pd1CntTable
|
||||
Private iqcCntTableNow = iqcCntTable
|
||||
Private NonTDTableNow = NonTDTable
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📂 파일 구조 예시
|
||||
|
||||
```
|
||||
📦 MAXIMUM_Multi_Function_Tester/
|
||||
┣ 📄 Main_From.vb
|
||||
┣ 📄 MysqlModule.vb
|
||||
┣ 📄 PostgreSQLModule.vb
|
||||
┣ 📄 scopeModule.vb
|
||||
┣ 📄 spectrumModule.vb
|
||||
┣ 📄 TimeKenalModule.vb
|
||||
┗ 📁 Documentation/
|
||||
┗ 📄 검사_자동화_프로그램_사용설명서.pdf
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📎 기타 참고 링크
|
||||
|
||||
* [Notion 기능 설명 정리 링크](https://www.notion.so/03-MAXIMUM-ALTO-1dd93e9b33758054bfc3cf46d9930b9f?pvs=21)
|
||||
|
||||
---
|
||||
|
||||
필요하면 마크다운용 `.md` 파일로도 저장해 드릴 수 있어요. 원하시면 말씀 주세요.
|
Loading…
x
Reference in New Issue
Block a user