2025-07-11 16:39:18 +09:00

68 lines
4.1 KiB
Markdown

# **[생산] DUALSONIC 정보 입력 프로그램 (PRO, LUX, ALPHA)**
## 1. 프로그램 개요
| 항목 | 내용 |
| --- | --- |
| **프로그램 명** | `DualsonicSerialAssigner` |
| **실행 파일 명** | `DUALSONIC_INFO_SET.exe` |
| **설치 위치** | 6층 공장 안쪽 두 번째 책상 |
| **주요 기능** | 아이/페이스 카트리지 및 본체 지그 장착 후 데이터 판독 |
| **데이터 처리** | TD SN은 PCB에서 직접 읽고, 나머지 정보는 NAS DB에서 조회 |
### 접근 권한
| 사용자 구분 | ID | 패스워드 | 모드 | 권한 |
| --- | --- | --- | --- | --- |
| 생산 포장 | 포장 | p1234 | 쓰기모드 | 데이터 입력/수정/저장 |
| 공정 품질 | 공정품질 | qc405 | 읽기모드 | 데이터 조회만 |
## 2. UI
| 쓰기 모드 화면 | 읽기 모드 화면 | 설정 화면 |
| --- | --- |--- |
| ![쓰기모드 화면](/docs/write-main.png) | ![읽기모드 화면](/docs/read-main.png) |![설정 화면](/docs/setting.png)|
### 모드별 특징
#### 쓰기 모드 (WRITE_MODE)
- **활성화된 입력 필드**: 모든 데이터 입력 가능
- **저장 버튼**: 데이터 저장 기능 활성화
- **상태 표시**: 실시간 쓰기 진행 상태 표시
- **에러 처리**: 상세한 오류 메시지 제공
#### 읽기 모드 (READ_MODE)
- **비활성화된 입력 필드**: 읽기 전용 인터페이스
- **조회 버튼**: 정보 확인 기능만 제공
- **간소화된 상태**: 기본적인 상태 정보만 표시
- **제한된 피드백**: 필수 정보만 표시
## 3. 쓰기 모드 (WRITE_MODE)
| 단계 | 주요 내용 | 조건/함수 | 비고 |
| --- | --- | --- | --- |
| ① | 바코드 앞 2자리 확인 → 모델 유형 확인 | `tmpModelType = Val(Mid(...))` | 잘못된 형식이면 종료 |
| ② | 중복 여부 확인 | `td_Compare(..., "jomtProductTbl")td_Compare(..., "jomtCartridgeTbl")` | 중복 시 → `DUPLICATION_NG`로 점프 |
| ③ | 길이 검사 (12자리) | `Len(txbBarcodeNum.Text) <> 12` | 틀리면 종료 |
| ④ | 바코드 파싱 및 판정 | `RET_VAL = RunSN_Parsing(...)` | 결과값: `"타입"`, `"타입,DIFFERENT"` 등 |
| ⑤ | DIFF 처리 | 모델/SN/날짜 다르면 색상 빨간색으로 표시 | `DIFF_MATCH_FLAG(...)` 활용 |
| ⑥ | 중복된 기기 타입이면 → 무시 | `If GetConnectStatus(RET_TYPE) = True` | 이미 연결됨 처리됨 |
| ⑦ | 정상 처리되면 → 바코드 박스에 표시 + 텍스트박스 잠금 여부 결정 | `EnableBarCodeTxbToggle(...)` | |
| ⑧ | 모든 장비가 다 입력되었으면 → 자동으로 `RunProcess()` 실행 | `If IsComplete() = "COMPLETE"` | |
## 4. 읽기 모드 (READ_MODE)
| 단계 | 주요 내용 | 조건/함수 | 비고 |
| --- | --- | --- | --- |
| ① | 바코드 앞 2자리 값으로 모델 유형 판단 | `tmpModelType = Val(Mid(txbBarcodeNum.Text,1,2))` | 유효하지 않은 경우 함수 종료 |
| ② | 바코드 길이 검사 (12자리) | `Len(tmpCmd) <> 12` | 조건 불충족 시 종료 |
| ③ | 바코드 입력 박스 상태 변경 (읽기 중 표시, 배경색 변경) | `txbBarcodeNum.BackColor = Color.YellowGreen` 등 | UI 피드백 제공 |
| ④ | 두 번째 자리 값으로 장비 타입 분류 | `tmpType = Val(Mid(tmpCmd, 2, 1))` | `DS_TYPE` 상수 기준 |
| ⑤ | 텍스트박스 초기화 | `ReadModeTextBoxAllReset()` | 이전 정보 초기화 |
| ⑥ | 장비 타입에 따른 처리 분기 | `If tmpType = DS_TYPE.DS_DEV Then ... Else ...` | 장비별 그룹박스 위치 조정 및 표시 |
| ⑦ | DEV 타입인 경우 | `ReadDeviceInfo()` 호출하여 DB에서 장비 정보 읽기 시도 | 실패 시 바코드박스 빨간색 표시 |
| ⑧ | FACE, EYE 타입 바코드 추출 및 DB 읽기 시도 | `GetProductSN()``ReadCartInfo()` 호출 | 실패 시 각 바코드박스 빨간색 표시 |
| ⑨ | DEV 외 타입인 경우 해당 그룹박스 위치 설정 및 가시화 | 실패 시 해당 바코드박스 빨간색 표시 | `tmpType` 기준으로 처리 |
| ⑩ | 전체 상태에 따라 바코드 박스 메시지 및 색상 변경 | 성공: 녹색 / 실패: 빨간색 | 사용자 피드백 |
| ⑪ | 바코드 입력 박스에 포커스 재설정 | `SetBarCodeBoxFocus()` | |