diff --git a/README.md b/README.md index 42edc91..52aa026 100644 --- a/README.md +++ b/README.md @@ -1 +1,67 @@ -# 제품 시리얼 번호 입력 시 (실제)제조일자 저장 (PRO, LUX, ALPHA) \ No newline at end of file +# **[생산] 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()` | | +