본문 바로가기
728x90

작디 작은 나만의 라이브러리/EPSON 써멀 프린터 라이브러리5

[신입 개발자의 '0' 번째 라이브러리] 1년차가 된 지금 다시 돌아본 Epson 프린터 라이브러리 - EPSON 써멀 프린터 라이브러리 제작기(fin) 들어가며입사 2개월 차였던 2023년 11월, 저는 Epson 프린터를 제어하기 위한 라이브러리를 개발했습니다.당시에는 "돌아가는 코드"를 만드는 것에 집중했고, 실제로 지금까지 다행히도 프로덕션 환경에서 안정적으로 동작하고 있습니다.하지만 1년이라는 시간이 지난 지금, 조금은 더 넓어진 시야로 이 코드를 돌아보니 몇 가지 개선점이 보입니다.주요 문제점과 개선 방향1. 단일 책임 원칙 위반가장 큰 문제점은 PrinterDialect 객체에 너무 많은 책임이 집중되어 있다는 점입니다.PrinterDialect 오브젝트의 역할은 아래와 같아요.기본 명령어 상수 관리텍스트 관련 명령어 생성바코드 관련 명령어 생성QR 코드 관련 명령어 생성이미지 관련 명령어 생성이와 같이 다양한 책임을 가지고 있습니다. 이를 .. 2024. 12. 16.
[신입 개발자의 '0' 번째 라이브러리] 프린터 상태 관리와 예외 처리 - EPSON 써멀 프린터 라이브러리 제작기(4) 들어가며지난 글에서는 EPSON 써멀 프린터 라이브러리의 출력 기능 구현에 대해 살펴보았습니다.이번 글에서는 프린터의 상태 관리와 예외 처리 시스템에 대해 상세히 분석해보겠습니다.프린터는 하드웨어 장비이기 때문에 다양한 상태와 오류 상황이 발생할 수 있습니다.용지 부족, 덮개 열림, 전원 문제 등 여러 상황에 대한 적절한 대응이 필요합니다.이를 위해 라이브러리는 다음과 같은 구조를 가지고 있습니다:상태 enum 클래스를 통한 프린터 상태 표현각 연결 방식별 상태 체크 메커니즘커스텀 예외 클래스들을 통한 에러 처리1. 프린터 상태 관리 시스템T83IIIPrinterStatus Enum 클래스enum class T83IIIPrinterStatus(val message: String) { /** 프린터가.. 2024. 12. 16.
[신입 개발자의 '0' 번째 라이브러리] 프린터 출력 기능 구현. Text, Barcode, QR Code, Image - EPSON 써멀 프린터 라이브러리 제작기(3) 들어가며지난 글에서는 EPSON 써멀 프린터 라이브러리의 각 연결 방식별 구현에 대해 살펴보았습니다. 이번 글에서는 프린터의 핵심 출력 기능인 텍스트, 바코드, QR 코드, 이미지 출력 기능의 구현을 상세히 분석해보겠습니다.프린터의 출력 기능은 크게 두 가지 계층으로 구현되어 있습니다:PrinterDialect: 각 기능별 바이트 코드 생성T83PrinterAdaptor: 생성된 바이트 코드를 실제 프린터로 전송이러한 계층 구조는 명령어 생성과 전송을 분리하여 유지보수성과 확장성을 높여줍니다.1. 텍스트 출력 구현PrinterDialect의 텍스트 관련 명령어object PrinterDialect { private val FONT_SIZE_CMD: ByteArray = byteArrayOf(GS, .. 2024. 12. 16.
[신입 개발자의 '0' 번째 라이브러리] 프린터 연결 방식별 구현. Network, Serial, Android SDK - EPSON 써멀 프린터 라이브러리 제작기(2) 들어가며지난 글에서는 EPSON 써멀 프린터 라이브러리의 전체적인 설계와 PrinterDialect, Adapter 패턴의 활용에 대해 살펴보았습니다.이번 글에서는 각 연결 방식별 구체적인 구현을 자세히 분석해보겠습니다.각 연결 방식별 어댑터는 다음과 같은 공통점과 차이점을 가지고 있습니다:공통점: T83PrinterAdaptor 추상 클래스를 구현하여 기본적인 프린터 명령어 전송 기능을 제공차이점: 실제 프린터와의 연결 방식과 통신 방법이 다름1. NetworkPrinterAdaptor 구현 분석NetworkPrinterAdaptor는 TCP/IP 소켓을 통해 프린터와 통신하는 구현체입니다.핵심 특징internal object NetworkPrinterAdaptor : T83PrinterAdaptor(.. 2024. 12. 15.
728x90