You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
3.5 KiB

# DCT
PC 버전 DCT를 Android 태블릿으로 구현한 계측 앱과 통신 테스트 프로그램입니다.
## 구조
- `Android/`: Kotlin·Jetpack Compose 기반 태블릿 앱과 테스트
- `DCT_test/`: Windows C# WPF 로그 재생 테스트 서버
- `docs/`, `refer/`: 개발 문서와 PC 원본·프로토콜 참고 자료 (원격 저장소 제외)
## Android 앱 설치
1. Android Studio에서 `Android/`를 열고 Gradle JDK를 **21**, SDK를 **Android 34**로 준비합니다.
2. 태블릿의 개발자 옵션에서 USB 또는 무선 디버깅을 켜고 연결합니다.
3. Gradle 동기화 후 `app`과 태블릿을 선택하여 **Run ▶**으로 설치합니다.
APK로 설치하려면 `Android/`에서 실행합니다 (`adb`는 Android SDK platform-tools 사용).
```powershell
.\gradlew.bat assembleDebug
adb install -r app\build\outputs\apk\debug\app-debug.apk
```
## 장비 Wi-Fi AP 연결
연결된 Wi-Fi 행 아래에서도 IP·포트를 확인할 수 있습니다. TCP 연결 중에는 실제 **통신 주소**, 통신 전에는 저장된 **접속 설정**을 표시하며 저장 변경으로 현재 연결 주소를 바꾸어 표시하지 않습니다.
이미 시스템에서 연결한 Wi-Fi도 팝업 목록 위에 **Wi-Fi 연결됨**으로 표시합니다. 이름/IP 정보 탭은 통신을 자동 시작하지 않으며 목록 하단 **닫기** 왼쪽의 **통신 연결** 버튼으로 기존 IP/포트에 접속할 수 있습니다. **⋮ → 현재 Wi-Fi로 연결** 및 **저장 후 연결**도 유지합니다.
태블릿 앱의 Wi-Fi 버튼에서 AP를 누르고 비밀번호를 입력해 Android 연결 요청을 승인합니다. 기본 접속 설정은 **`192.168.4.1:5000`**입니다. PC와 통신하려면 같은 공유기/Wi-Fi에 연결하고 **⋮ → IP / 포트 설정**에 PC의 현재 IPv4/포트(외부 AP 기본6000)를 입력합니다. **저장 후 연결**은 현재 Wi-Fi로 접속하거나 기존 AP에서 TCP를 재연결합니다. IP/포트는 기억하며 저장만 하면 다음 연결부터 적용됩니다. **장비 기본값**으로 ESP32 주소를 복원할 수 있습니다. 계측/기록·AP 연결 중에는 변경할 수 없으며 비밀번호는 저장하지 않습니다.
Wi-Fi Direct는 향후 칩 변경을 위해 코드를 보존하되 자동 초기화와 UI 진입을 주석 처리했습니다. 다이얼로그 닫기는 연결을 유지하고, 취소/연결 해제는 별도 버튼입니다.
## 테스트 앱 실행
1. Windows의 Visual Studio에서 `DCT_test/DCT_test/DCT_test.csproj`를 엽니다. **.NET 데스크톱 개발** 및 **.NET Framework 4.7.2 타기팅 팩**이 필요합니다.
2. NuGet 패키지 복원 후 **F5**로 실행하고 로그 파일을 선택하여 **서버 시작**을 누릅니다 (기본 포트 `6000`).
3. 외부 AP 테스트는 PC와 태블릿을 같은 공유기에 연결하고 서버의 **외부 공유기/AP → 현재 PC IP 선택 → 포트 입력(기본6000) → 서버 시작**으로 사용합니다. 공유기/IP/DHCP 설정을 바꿀 필요가 없습니다. 앱 **Wi-Fi → ⋮ → IP / 포트 설정 → 같은 PC IP/포트 → 저장 후 연결**을 사용합니다. [현재 PC 설정](DCT_test/README.md#외부-공유기ap-모드-2026-10-12-후속). Direct/PC 핫스팟 모드도 유지합니다.
4. 호환되는 연결 환경에서 로그에 맞는 MDB·DBC 또는 A2L 프로젝트를 열고 태블릿의 **계측 시작/중지**로 재생을 제어합니다. 서버 시작만으로 재생되지 않으며, 중지 후 재시작하면 로그 처음부터 재생합니다.