저울 장비와 통신해서 라벨프린터로 프린트하는 웹애플리케이션 서비스를 구현해야 한다. 이해 & 정리 기록
보통은 저울을 직접 선정해서 하면 좋겠지만 고객이 기존에 가진 장비를 우선으로 가능범위를 조율해야 하는 경우도 있다. 장비가 제한적이라 하더라도 선택할 옵션이 있다면 선정 기준도 알아두면 좋은거같다. 이번에 저울업체 몇군데 컨텍하면서 실무적으로 배운점도 많다.
1. 장비의 분류 기준
🔍 결론: 실무에서는 이렇게 분류하면 좋아
분류 기준 | 실무에서 쓰이는 질문 |
1️⃣전송 경로, 전송 방식이 무엇인가 (물리계층 기준) | “USB야? 시리얼이야? TCP야? 무선이야?” |
2️⃣ 통신 프로토콜 기반은 어디에 두눈가 | “ (웹기반통신) REST API야? 아니면 명령어 (커맨드기반) 직접 보내야 돼? 산업용 필드버스 기반, 전용산업통신 프로토콜써?" |
3️⃣ (명령어기반인경우 명령어 형식) 데이터 표현 방식 | “텍스트로 보내? 바이너리로 보내?” |
4️⃣ 장비 처리 능력, 지능형인지 단순입력출력만 하는 비지능형인지 (처리방식) | “이 장비가 연산을 해? 그냥 값만 줘?” |
내가 써야 하는 장비는 시리얼, TCP 통신을 지원하고(물리 1️⃣ ),
제조사에서 제공하는 프로토콜에 따라 커맨드를 직접 보내서 제어를 하는데, (제공프로토콜, 커맨드 2️⃣ )
프토토콜을 보니까 텍스트 방식이라 다루기 편할거 같아. (데이터 3️⃣ )
🧠 실무에서 가장 자주 쓰는 3가지 분류
1️⃣ 전송 방식 → 시리얼 / USB / TCP / 무선
2️⃣ 통신 프로토콜 → 웹 기반 (HTTP 등) / 명령어 기반 / 산업 표준
3️⃣ 명령어 형태 → 텍스트 / 바이너리 / API 호출
1️⃣통신 프로토콜 기준
구분 | 설명 | 예시 |
웹통신 기반 | HTTP, WebSocket, MQTT 등 웹 표준 프로토콜 사용 | 스마트 IoT 기기, 클라우드 API 연동 장비 |
명령어 기반 (커맨드 기반) | 제조사 고유의 프로토콜 (텍스트/바이너리) | 라벨프린터, 저울, 바코드 스캐너 등 |
산업용 필드버스 기반 | 전용 산업 통신 프로토콜 사용 | Modbus, CAN, RS485, Profinet, EtherCAT |
2️⃣전송 경로(물리 계층) 기준
구분 | 설명 | 예시 |
시리얼 통신 기반 | UART, RS232, RS485 등 저속 통신 | 전자저울, 프린터, 센서 등 |
USB 기반 | PC와 직접 USB 연결, HID/가상 COM 포함 | 라벨 프린터, RFID 리더기 |
네트워크 기반 | TCP/IP, UDP 등으로 통신 | TCP 프린터, IoT 장비 |
무선 기반 | WiFi, Bluetooth, Zigbee 등 | BLE 저울, 무선 프린터 |
3️⃣동작 인터페이스 기준
구분 | 설명 | 예시 |
API 기반 제어형 장비 | API 요청으로 직접 기능 호출 가능 | REST API 제공하는 라벨프린터 |
드라이버/소프트웨어 필요형 장비 | 전용 프로그램 통해 명령 전송 | 전용 Windows 프린터 드라이버 |
명령어 직접 송신형 장비 | 사용자가 직접 명령어를 포트에 전송 | ZPL/TSC 등 텍스트 기반 장비 |
4️⃣처리 구조 기준 (지능형 vs 비지능형 장비)
구분 | 설명 | 예시 |
지능형 장비 (Smart Device) | 명령어 해석, 연산, UI, 설정 기능까지 가짐 | 스마트 IoT 디바이스, 프로그래머블 프린터 |
비지능형 장비 (Dumb Device) | 단순 출력/응답만 처리, 로직 없음 | 저울, 일반 스캐너, 단순 프린터 |
2. 라벨프린트장비 선택 시 체크리스트 (개발/연동 관점)
✅ 장비 선택 시 체크리스트 (개발/연동 관점)
항목 | 확인 내용 | 예시 / 참고 | Videojet 9550 모델 |
① 프로토콜 문서 제공 여부 | 장비 제조사가 명령어/통신 규격 문서를 제공하는가? | O: ZPL, TSPL, Zipher ZCP ✖: 문서 없이 드라이버만 제공 |
Zipher Text Communications Protocol |
② 명령어 방식 | 텍스트 기반인가, 바이너리 기반인가? | 텍스트: PRINT "Hello" 바이너리: 0x02 0x10 ... 0x03 |
Text Communications Protocol |
③ 통신 방식(물리) | 시리얼(RS232), USB, TCP/IP 중 어떤 방식인가? | 시리얼만 지원 시 → 포트 설정 필요 | RS232 (시리얼) TCP/IP (소켓) * |
④ 포트 구성 | 여러 포트를 동시에 지원하는가? | 시리얼 + USB + TCP 병행 가능 여부 | ACK/ERR 순차 처리 기반이라 한 채널만 사용하는 게 안정적 |
⑤ 통신 속도(bps) | 지원하는 통신 속도 범위는? | 예: 9600, 115200 등 설정 가능한가 | RS232: 보통 115200 bps 설정 (초당 약 11.5KB 전송 속도) TCP/IP : 응답 속도는 보통 수 밀리초(ms) 수준 프린터 명령어는 매우 짧은 텍스트이기 때문에, 속도 병목은 거의 없음 |
⑥ 응답 구조 | 명령어에 대한 응답(Response)이 존재하는가? | 명령형만 있는 경우 → 통신 성공 여부 확인 어려움 | O 문자열응답 |
⑦ 데이터 포맷 | 인코딩 방식(ASCII, UTF-8, EUC-KR 등)은 무엇인가? | 한글 출력 시 중요! | 다양한 통신 프로토콜(ZPL, SBPL, CIMCOMMS 등)**을 지원하고, 프로토콜에 따라 인코딩방식 달라짐. ** |
⑧ 장비 식별/주소 지정 | 다수 장비 사용 시 식별 가능한 구조인가? | 예: ID 세팅 가능 여부, 브로드캐스트 대응 | |
⑨ 테스트 도구 제공 여부 | 제조사에서 테스트용 툴(exe, 웹툴 등)을 제공하는가? | 초기 연동 시 매우 유리 | |
⑩ SDK 또는 샘플 코드 제공 여부 | Python, Java, Node.js 등으로 된 예제가 있는가? | 예: "ZPL 테스트 툴", "Java SDK" | |
⑪ 펌웨어 업그레이드 가능 여부 | 오류 수정이나 기능 확장이 가능한가? | 폐쇄형 장비일 경우 유지보수 어려움 | |
⑫ 공식 지원 여부 | 문제가 생겼을 때 기술 문의나 피드백이 가능한가? | 기술지원 채널, 담당자 메일 등 |
*
문서에서는 명시되지 않았지만, USB를 통해 가상 COM 포트로 잡히는 경우가 많습니다 ( 내부적으로는 시리얼(RS232)처럼 동작). Videojet 9550의 USB는 **통신이 아닌 파일 전송용(설정, 백업)**으로 사용
**
Zipher 프로토콜 한글 출력을 위해서 UNICODE모드로 설정해야 하고, 프린터 설정과 자바 설정이 필요하다.
✅ 실제로 어떤 방식을 쓰는 게 좋을까?
프린터와 PC가 물리적으로 가까움 | RS232 또는 USB-Serial |
Vue/Java 백엔드가 다른 서버에 있음 | TCP/IP (소켓 방식) |
속도, 확장성, 관리 편의성 | TCP/IP 우선 추천 |
📌 단, TCP/IP를 쓰려면 프린터에 정확한 IP 설정 + 포트 오픈이 되어 있어야 합니다.
✅ 내가 선택하려면 어떻게 확인해?
- 장비 뒷면 포트 확인 (RS232, LAN)
- CLARiTYConfig 또는 프린터 설정 화면에서 "Text Communications" → Serial or Network 설정 여부 확인
- PC에서 장치 관리자 → 포트(COM & LPT) 확인 (USB라면 COM 포트로 뜰 수 있음)
- TCP/IP라면 ping (프린터의 IP로 통신)가능 여부 + 포트 열려 있는지 telnet 테스트
ping 192.168.0.100
telnet 192.168.0.100 3003
크로스 케이블 or 일반 랜선으로 PC - 장비 간 직접 연결가능(자동감지기능) 1:1로 바로 붙는 경우 간단하고 빠른데, vue프론트, java 백, DB 등 여러 장비가 있는 경우 공유기 허브 이용 (같은 네트워크대역에 있으면 공유기가 IP자동할당 됨 DHCP 설정 상태. 그래서 프린터는 할당된 IP를 직접 출력하는 기능이 있는 것. 혹은 공유기에 설정페이지에 접속된 장치 목록이 나옴) Zipher의 경우 상태 출력 명령이 있음
PRNTEST\r
( 초기 설정 후, 프린터에 고정 IP를 넣어두면 매번 확인할 필요가 없도록 하는 게 가장 좋음./ CLARiTYConfig에서 직접 설정 가능 ( Zipher(또는 Domino Printing 소속 장비)에서 공식적으로 제공하는 설정 프로그램)/ 또는 DHCP에서 IP 예약(DHCP Static Mapping) 기능으로 MAC 주소에 고정 IP 할당 가능 )
🧮 IP 설정 예시
항목 | 값 |
PC IP | 192.168.0.10 |
프린터 IP | 192.168.0.100 |
서브넷 마스크 : IP 주소 중 어느 범위까지가 “같은 네트워크”인지 정의. 같은 네트워크 내에서는 직접통신가능(아니면 라우터있어야함). 서브넷 마스크는 네트워크 경계선이다. | 255.255.255.0 : 앞 3바이트(예: 192.168.0)가 같아야 같은 네트워크 |
👉 이 경우 두 장비는 같은 네트워크 대역에 있어요. 왜냐하면:
- 서브넷 마스크 255.255.255.0은
→ IP 주소에서 앞의 3바이트(192.168.0) 는 같아야 한다는 뜻이에요. - 즉, 192.168.0.X에 속하는 모든 장비는 같은 네트워크로 간주돼요.
✅ 요약 정리
RS232 | ✅ 공식 지원 | 프린터 COM포트 + PC COM포트 |
TCP/IP | ✅ 공식 지원 | IP 연결 + 포트 설정 필요 |
USB | ⭕ (간접 지원) | 가상 COM포트로 RS232처럼 사용 가능 |
💡 실무 팁
- 🟨 프로토콜 문서가 없거나 폐쇄적인 장비는 피하는 것이 좋음.
- ✅ Zebra, TSC, Honeywell, Bixolon, Zipher 등은 문서화 잘 되어 있음.
- 🧪 도입 전에 실제 테스트 장비를 빌려서 명령어 전송 테스트를 해보는 것이 가장 확실.
🧩 체크리스트 사용 예시
📦 “Zipher 라벨프린터 X-3000 모델”
- ✔ 프로토콜 문서 있음 → ZCP 프로토콜 (텍스트 기반)
- ✔ USB / RS232 / TCP 모두 지원
- ✔ ZCP 명령어는 ASCII 기반
- ✖ SDK는 제공하지 않음, 명령어 조립 직접 해야 함
- ✔ 테스트용 GUI 툴 제공
✅ 이런 식으로 사전에 정리해두면 팀원 간 커뮤니케이션도 수월하고, 개발 범위도 명확하게 정해짐!
댓글