스캔한 바코드에서 글자가 몇 개씩 빠지거나 앞뒤 순서가 바뀌어 입력되면, 받는 프로그램이 스캐너의 전송 속도를 따라가지 못하는 것입니다. 스캐너의 키 입력 지연(Keystroke Delay, Intercharacter Delay)을 한 단계씩 늘리면 해결되고, 늘린 만큼 스캔 1번의 입력 시간이 길어집니다.
먼저 메모장을 열고 같은 바코드를 스캔합니다. 메모장에서는 원본과 같고 업무 프로그램에서만 글자가 빠지면 스캐너 고장이 아니라 속도 문제입니다.
글자 누락과 순서 뒤바뀜의 원인
USB 키보드(HID) 방식 스캐너는 바코드 글자 1개를 키 입력 1번으로 바꿔 연달아 보냅니다. 제브라 DS2208·DS3608은 키 사이 지연 0ms(No Delay)가 처음 설정이라, 사람이 치는 속도보다 훨씬 빠르게 글자가 들어갑니다.
일부 단말기와 프로그램은 0ms 간격으로 몰려 들어오는 입력을 다 처리하지 못해 중간 글자를 버립니다. 제브라는 글자 사이에 20ms나 40ms, 허니웰은 5ms 단위로 지연을 넣어 전송을 늦춥니다.
순서 뒤바뀜은 글자와 엔터(CR, ASCII 13)·탭(HT, ASCII 9) 같은 제어 키가 서로 다른 경로로 전달될 때 생깁니다. 제브라 DataWedge는 처음 설정에서 엔터·탭을 키 이벤트로, ASCII 32~126 글자를 문자열로 보내고, 키 이벤트가 비동기로 전달되면 엔터가 글자보다 먼저 도착합니다.
증상별 조정 항목
| 증상 | 확인할 점 | 조정할 설정 |
|---|---|---|
| 긴 바코드에서 중간 글자가 빠짐 | 메모장에서는 정상 | 제브라 USB Keystroke Delay, 허니웰 Intercharacter Delay |
| 탭·엔터 앞뒤에서 데이터가 잘림 | 칸 이동 직후의 글자만 빠짐 | 허니웰 Interfunction Delay |
| 연달아 스캔할 때만 다음 데이터가 빠짐 | 한 장씩 천천히 스캔하면 정상 | 허니웰 Intermessage Delay |
| PDA에서 엔터가 데이터보다 먼저 처리됨 | DataWedge 키 입력 출력 사용 | Key event delay |
| 영문이 한글 자모로 입력됨 | 글자 수는 같고 모양만 다름 | PC 한/영 입력 상태 |
마지막 줄은 누락이 아니라 입력 상태 문제입니다. 해결 방법은 바코드 스캐너 한글 깨짐 해결에 정리했습니다.
제브라 스캐너 키 입력 지연 설정
| 설정 항목 | 적용 연결 | 선택 범위 | 처음 설정 |
|---|---|---|---|
| USB Keystroke Delay | USB 키보드(HID) | No Delay, 20ms, 40ms | No Delay |
| HID Keyboard Keystroke Delay | 블루투스 HID (DS3678) | 0ms, 20ms, 40ms | 0ms |
| USB Polling Interval | USB (DS36X8) | 1~10ms, 1ms 단위 | 3ms |
| USB Fast HID | USB 키보드(HID) | 사용, 사용 안 함 | 사용 |
| Intra-Keystroke Delay | 키보드 웨지 | 사용, 사용 안 함 | 사용 안 함 |
DS2208과 DS3608은 설명서의 USB Keystroke Delay 항목에서 Medium Delay(20msec) 바코드를 먼저 스캔합니다. 그래도 빠지면 Long Delay(40msec)로 올립니다. 글자 30개 바코드는 20ms 설정에서 키 간격만 약 0.6초가 더해집니다.
40ms에서도 빠지면 DS36X8의 다른 두 항목을 조정합니다. Polling Interval은 수치가 작을수록 전송이 빨라지므로 3ms보다 크게 설정하고, Fast HID는 사용 안 함으로 바꿔 다시 스캔합니다.
무선 DS3678을 PC 블루투스에 직접 연결했다면 USB 항목 대신 HID Keyboard Keystroke Delay를 설정합니다. PS/2 키보드 웨지 연결에서 Intra-Keystroke Delay를 켜면 키 누름과 뗌 사이에도 지연이 들어가고, Keystroke Delay가 최소 5ms로 바뀝니다.
허니웰 스캐너 지연 설정
| 설정 항목 | 지연이 들어가는 위치 | 설정 바코드 |
|---|---|---|
| Intercharacter Delay | 접두어·데이터·접미어의 모든 글자 사이 | DLYCHR |
| User Specified Intercharacter Delay | 지정한 글자 1종 뒤 | DLYCRX, DLY_XX |
| Interfunction Delay | STX·탭·CR·LF 같은 제어 문자 사이 | DLYFNC |
| Intermessage Delay | 스캔 1번의 전송과 다음 전송 사이 | DLYMSG |
Xenon XP 1950g의 네 항목은 모두 5ms 단위로 최대 5,000ms까지 설정합니다. 해당 바코드를 스캔하고 설명서 뒤쪽 Programming Chart에서 5ms의 개수를 숫자로 스캔한 뒤 Save를 스캔합니다. 숫자 4를 지정하면 20ms입니다.
User Specified 항목은 하이픈처럼 특정 글자 1종 뒤에서만 쉬게 합니다. Delay Length로 길이를 정하고, Character to Trigger Delay 뒤에 그 글자의 16진수 2자리(하이픈은 2D)를 스캔합니다.
4개 항목 중 Intercharacter Delay는 USB Serial 가상 COM 방식에서 동작하지 않고, USB 키보드 방식일 때만 적용됩니다.
안드로이드 PDA 키 입력 출력 지연
TC22 같은 제브라 PDA는 DataWedge 키 입력 출력의 Inter-character delay로 글자마다 지연을 둡니다. 처음 설정은 0이고, 오류가 멈출 때까지 100ms씩 최대 1,000ms까지 올립니다. 이 지연은 앱 반응 속도를 떨어뜨릴 수 있어 오류가 사라지는 가장 작은 단계에서 멈춥니다.
엔터(ASCII 13)가 데이터보다 먼저 처리되면 Key event delay를 추가해, 키 이벤트를 보내기 전에 ms 단위로 기다리게 합니다. 키 입력과 인텐트 방식 비교는 PDA 스캔 데이터 전송 방식에 정리했습니다.
지연 설정 전후 점검 순서
- 메모장에서 영문·숫자가 섞인 가장 긴 바코드를 스캔해 원본과 글자 수를 비교합니다.
- 작업 표시줄 입력 표시가 영문(A)인지 확인합니다.
- 지연을 가장 작은 단계부터 한 단계씩 올리고, 단계마다 업무 프로그램에서 같은 바코드를 10번 연달아 스캔합니다.
- 10번 모두 원본과 같으면 그 단계에서 멈춥니다. 더 올리면 입력 시간만 길어집니다.
- 최대 단계에서도 빠지고 프로그램이 COM 포트를 지원하면 가상 COM 방식으로 바꿉니다.
가상 COM 전환 바코드와 드라이버는 바코드 스캐너 USB HID·가상 COM·RS-232 차이에, 엔터·탭 접미어 설정은 스캐너 엔터 자동 입력 설정에 정리했습니다.




