도구 빠른 시작
이 페이지에서는 5분 안에 가상 시리얼 포트 두 개를 널 모뎀(null modem) 케이블로 잇고 바이트를 주고받습니다. 이어서 결함(fault)을 하나 주입해 수신 측에서 확인합니다. 개념은 가상 시리얼 포트의 개념에서 설명합니다.
-
macOS 또는 Linux와 터미널 세 개가 필요합니다. 이 과정은 의사 터미널(pseudo terminal, pty)을 사용하므로 드라이버 설치가 필요 없습니다.
-
pdcomm-vserial프로그램이PATH에 있어야 합니다. Linux 패키지는/usr/bin/pdcomm-vserial에 설치합니다. 버전을 확인합니다.터미널 창 pdcomm-vserial --versionpdcomm-vserial 0.1.0처럼 버전이 출력됩니다.
가상 포트 쌍 만들기
섹션 제목: “가상 포트 쌍 만들기”-
터미널 1에서 포트 쌍을 시작합니다.
--link-a와--link-b는 포트마다 고정 경로의 심볼릭 링크를 만듭니다.터미널 창 pdcomm-vserial pair --link-a /tmp/pdcomm-a --link-b /tmp/pdcomm-b랩이 준비되면 포트 목록을 JSON 한 줄로 출력합니다.
path는 실행할 때마다 달라집니다.{"ports":[{"backend":"pty","link":"/tmp/pdcomm-a","node":"a","path":"/dev/ttys011"},{"backend":"pty","link":"/tmp/pdcomm-b","node":"b","path":"/dev/ttys016"}],"ready":true}이 터미널은 랩을 제어하는 명령을 기다립니다. 닫지 않습니다.
-
터미널 2에서 포트
b가 받는 내용을 출력합니다.터미널 창 cat /tmp/pdcomm-b -
터미널 3을 하나 더 열고 포트
a로 문자열을 보냅니다.터미널 창 printf 'hello\n' > /tmp/pdcomm-a터미널 2에
hello가 나타납니다. 기본 쌍은 9600bps 8N1이며 실제 회선처럼 문자 시간마다 전달합니다. -
터미널 1에 다음 명령을 입력하고 Enter 키를 누릅니다. 포트
b가 다음에 받는 문자 하나에서 비트 0x20을 뒤집습니다.{"command":"inject","node":"b","fault":{"xor":32}}랩은
{"ok":true}로 응답합니다. -
터미널 3에서 다시 보냅니다.
터미널 창 printf 'ABC\n' > /tmp/pdcomm-a터미널 2에는
aBC가 나타납니다. 첫 문자A(0x41)만a(0x61)로 바뀌었습니다. -
터미널 1에서 랩을 멈춥니다.
{"command":"stop"}Ctrl+D로 입력을 닫아도 랩이 멈춥니다. 랩은
/tmp/pdcomm-a와/tmp/pdcomm-b링크를 지우고 종료 코드 0으로 끝납니다. 터미널 2의cat은 Ctrl+C로 끝냅니다.
자주 나는 오류
섹션 제목: “자주 나는 오류”| 증상 | 해결 |
|---|---|
pdcomm-vserial: /tmp/pdcomm-a exists and is not a symlink |
링크 경로에 일반 파일이 있습니다. 파일을 지우거나 다른 경로를 지정합니다. 이전 랩이 남긴 심볼릭 링크는 랩이 알아서 바꿉니다. |
| 터미널 2에 아무것도 나오지 않음 | 링크 이름을 확인합니다. 보낸 쪽(a)과 받는 쪽(b)이 다른 포트여야 합니다. |
명령에 {"ok":false,"error":"unknown node …"} 응답 |
node에 랩의 노드 이름(a 또는 b)을 씁니다. |
다음 단계
섹션 제목: “다음 단계”- 가상 RS-485 버스에서 Modbus RTU 시험하기에서 실제 프로토콜을 가상 버스에 올립니다.
- pdcomm-vserial 명령과 랩 파일에서 모든 명령과 설정을 확인합니다.
- 가상 시리얼 관리자에서 같은 작업을 GUI로 합니다.