콘텐츠로 이동
무료 평가 시작

도구 빠른 시작

이 페이지에서는 5분 안에 가상 시리얼 포트 두 개를 널 모뎀(null modem) 케이블로 잇고 바이트를 주고받습니다. 이어서 결함(fault)을 하나 주입해 수신 측에서 확인합니다. 개념은 가상 시리얼 포트의 개념에서 설명합니다.

  • macOS 또는 Linux와 터미널 세 개가 필요합니다. 이 과정은 의사 터미널(pseudo terminal, pty)을 사용하므로 드라이버 설치가 필요 없습니다.

  • pdcomm-vserial 프로그램이 PATH에 있어야 합니다. Linux 패키지는 /usr/bin/pdcomm-vserial에 설치합니다. 버전을 확인합니다.

    터미널 창
    pdcomm-vserial --version

    pdcomm-vserial 0.1.0처럼 버전이 출력됩니다.

  1. 터미널 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. 터미널 2에서 포트 b가 받는 내용을 출력합니다.

    터미널 창
    cat /tmp/pdcomm-b
  3. 터미널 3을 하나 더 열고 포트 a로 문자열을 보냅니다.

    터미널 창
    printf 'hello\n' > /tmp/pdcomm-a

    터미널 2에 hello가 나타납니다. 기본 쌍은 9600bps 8N1이며 실제 회선처럼 문자 시간마다 전달합니다.

  4. 터미널 1에 다음 명령을 입력하고 Enter 키를 누릅니다. 포트 b가 다음에 받는 문자 하나에서 비트 0x20을 뒤집습니다.

    {"command":"inject","node":"b","fault":{"xor":32}}

    랩은 {"ok":true}로 응답합니다.

  5. 터미널 3에서 다시 보냅니다.

    터미널 창
    printf 'ABC\n' > /tmp/pdcomm-a

    터미널 2에는 aBC가 나타납니다. 첫 문자 A(0x41)만 a(0x61)로 바뀌었습니다.

  6. 터미널 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)을 씁니다.