온라인 시리얼 포트 디버거
브라우저 기반 시리얼 디버깅 도구 - 다운로드 불필요, Web Serial API를 통한 실시간 모니터링
연결
데이터 모니터
데이터 전송
전송 기록
통계
시리얼 포트 디버거 문서
이 도구 사용 방법
- 시리얼 장치를 컴퓨터에 연결합니다
- 연결 매개변수를 구성합니다 (보레이트, 데이터 비트, 패리티, 정지 비트)
- "연결"을 클릭하여 시리얼 연결을 설정합니다
- 실시간으로 수신된 데이터를 모니터링합니다
- 텍스트 또는 HEX 형식으로 데이터를 전송합니다
- 전송 기록을 사용하여 이전 명령을 반복합니다
- 연결 통계 및 데이터 전송률을 확인합니다
연결 매개변수
구현 원리
이 도구는 웹 애플리케이션이 직렬 장치와 직접 통신할 수 있도록 하는 최신 브라우저 인터페이스인 Web Serial API를 사용하여 구현됩니다. 다음은 핵심 구현 세부 사항입니다:
핵심 API: Web Serial API
이 도구는 브라우저를 통해 직렬 포트에 액세스하기 위한 JavaScript 인터페이스를 제공하는 Web Serial API 위에 구축되었습니다.
주요 기능:
- 드라이버나 플러그인을 설치하지 않고도 브라우저가 기본적으로 직렬 포트 액세스를 지원
- 여러 직렬 포트 구성(보 레이트, 데이터 비트, 패리티, 정지 비트, 흐름 제어) 지원
- Readable/Writable Streams를 사용한 양방향 데이터 통신
- Promise 및 async/await 기반 비동기 작업
구현 단계
1. 직렬 포트 액세스 요청
const port = await navigator.serial.requestPort();
navigator.serial.requestPort()를 사용하여 사용자에게 직렬 포트 장치를 선택하도록 요청합니다. 보안을 보장하기 위해 사용자 상호 작용이 필요합니다.
2. 포트 구성 및 열기
await port.open({
baudRate: 9600,
dataBits: 8,
parity: 'none',
stopBits: 1,
flowControl: 'none'
});
port.open() 메서드를 호출하고 보 레이트, 데이터 비트, 패리티, 정지 비트 및 흐름 제어를 포함한 구성 매개변수를 전달합니다.
3. 데이터 읽기
const reader = port.readable.getReader();
while (true) {
const { value, done } = await reader.read();
if (done) break;
// 수신된 데이터 처리(Uint8Array)
const text = new TextDecoder().decode(value);
}
port.readable에서 reader를 가져와 비동기 루프를 사용하여 데이터를 지속적으로 읽습니다. 수신된 데이터는 Uint8Array 형식이며 TextDecoder를 사용하여 디코딩해야 합니다.
4. 데이터 전송
const writer = port.writable.getWriter();
const encoder = new TextEncoder();
const data = encoder.encode('Hello Serial!');
await writer.write(data);
port.writable에서 writer를 가져와 TextEncoder를 사용하여 문자열을 Uint8Array로 변환한 다음 writer.write()를 호출하여 데이터를 전송합니다.
5. 연결 닫기
await reader.cancel();
await reader.releaseLock();
await writer.releaseLock();
await port.close();
닫기 전에 reader와 writer의 잠금을 해제한 다음 port.close()를 호출하여 직렬 포트 연결을 닫습니다.
사용된 주요 API
-
navigator.serial.requestPort() - 사용자에게 직렬 포트 선택 요청 -
port.open(options) - 구성으로 직렬 포트 열기 -
port.readable.getReader() - 읽기 스트림의 reader 가져오기 -
port.writable.getWriter() - 쓰기 스트림의 writer 가져오기 -
reader.read() - 직렬 포트에서 데이터 읽기 -
writer.write(data) - 직렬 포트에 데이터 쓰기 -
TextDecoder / TextEncoder - 문자열과 바이트 배열 간 변환 -
port.addEventListener('disconnect') - 장치 연결 해제 이벤트 수신
주요 기능
Web Serial API
추가 소프트웨어 없이 브라우저에서 직접 시리얼 포트에 액세스
실시간 모니터링
타임스탬프 및 자동 스크롤 지원으로 실시간 데이터 모니터링
HEX 모드
검증 기능이 있는 16진수 형식으로 데이터 송수신
전송 기록
이전에 전송한 명령 추적 및 재생
통계
데이터 전송률 및 연결 시간 모니터링
다국어
중국어, 영어, 일본어, 프랑스어, 스페인어 지원
일반적인 사용 사례
개발 및 디버깅
- Arduino 및 ESP32 개발
- 임베디드 시스템 디버깅
- 펌웨어 개발 및 테스트
- IoT 장치 구성
테스트 및 통신
- 모뎀용 AT 명령 테스트
- 센서 데이터 모니터링
- 프로토콜 분석 및 디버깅
- 산업용 장치 통신
브라우저 지원 및 요구 사항
지원되는 브라우저
- Chrome 89+
- Edge 89+
- Firefox (지원 안 함)
- Safari (지원 안 함)
요구 사항
- Web Serial API를 지원하는 Chromium 기반 브라우저
- HTTPS 연결 (Web Serial API에 필요)
- 시리얼 포트 액세스를 위한 사용자 권한
- 호환 가능한 시리얼 장치 드라이버 설치
관련 표준 및 사양
자세한 정보: Wikipedia RS-232, UART 프로토콜 표준 문서
관련 도구
CRC 계산기
Modbus, CCITT 및 기타 프로토콜 표준을 지원하여 CRC-8, CRC-16, CRC-32, CRC-64 체크섬을 계산합니다
진법 변환기
2진수, 8진수, 10진수, 16진수 간 변환, 2-36 사용자 정의 진법 지원
타임스탬프 변환기
Unix 타임스탬프와 사람이 읽을 수 있는 날짜/시간 간 변환
텍스트 툴킷
단어 카운터, 데이터 추출, 분할/결합, 라인 필터, 접두사/접미사 작업이 포함된 포괄적인 텍스트 조작 툴킷
문자 집합 변환기
UTF-8, GBK, Big5, Shift_JIS, ISO-8859, Windows 코드 페이지 등의 문자 집합 인코딩을 자동 감지로 변환
정규식 테스터
즉각적인 일치 결과로 정규 표현식을 테스트하고 디버그합니다