@ JSConf Korea 2022
나석주
seokju-na
주문서
영수증
계산서
Thermal Printer
열전사 프린터
USB
시리얼포트
LAN
전원
이 씨리얼은 아는데...
-V
Tx
Rx
+V
0
1
0
0
1
0
1
1
1
0
1
1
0
0
1
0
1
1
1
0
1
1
0
0
1
0
1
1
1
0
0
1
1
1
시리얼 포트로 올바르게 통신하기 위해서
baudRate 값이 필수로 필요해요
"가ab"
UTF-8
EUC-KR
"가ab"
"ab"
Ascii
텍스트
인코딩
Uint8Array
0x61 | 0x62 |
a
b
0xB0 | 0xA1 | 0x61 | 0x62 |
가
a
b
0xEA | 0xB0 | 0x80 | 0x61 | 0x62 |
가
a
b
"Hello World!" 출력하기
아무 반응 없음...
😂
그 전까지는 프린터 버퍼에 쌓여요
=> 출력 커맨드는 무엇이죠? 🤔
명령어(ASCII) | 설명 | HEX |
---|---|---|
LF | 인쇄 및 개행 | 0x0A |
ESC @ | 프린터 초기화 프린터 버퍼를 클리어하고 프린터 모드 리셋 |
0x1B 0x40 |
ESC E n | 텍스트 강조 (bold) | 0x1B 0x45 ... |
GS k n | 바코트 출력 | 0x1D 0x6B ... |
GS V n | 용지 자르기 | 0x1D 0x56 ... |
... |
명령어(ASCII) | 설명 | HEX |
---|---|---|
ESC R n | 코드페이지 문자 셋 지정 | 예: (🇰🇷 n=13) 0x1B 0x52 0x0D |
그 외 다양한 명령어들
Imperative
Declarative
< Printer characterSet="euc-kr" />
왼쪽 정렬 텍스트
가운데 정렬 텍스트
< Text />
< Text align="center" />
< Image src="/image.png" />
< Line />
👆영수증 예시
환경
렌더되는 것
DOM
Native UI
소스 코드
ESC/POS
Command
환경 | 패키지 |
---|---|
DOM | react-dom |
iOS, Android | react-native |
터미널 | ink |
react-pdf | |
Thermal Printer | react-thermal-printer 😍 |