오류 메시지는 프로그램이 출력하는 그대로 적었습니다. 메시지로 이 페이지를 검색합니다.
| 메시지 |
원인 |
해결 |
pdcomm-vserial: the PDComm Virtual Serial extension is not loaded |
macOS에서 driver 백엔드를 썼습니다. |
macOS에서는 pty 백엔드를 씁니다. |
pdcomm-vserial: no PDComm Virtual Serial ports are installed |
Windows에 포트 드라이버가 없습니다. |
MSI를 설치하거나 ports install로 포트를 만듭니다. |
pdcomm-vserial: No such file or directory (os error 2) |
Linux에서 드라이버 포트를 쓰는데 모듈이 적재되지 않아 /dev/pdcomm-vserial가 없습니다. |
sudo modprobe pdcomm_vserial로 적재합니다. Secure Boot 상태도 확인합니다. |
pdcomm-vserial: Permission denied (os error 13) |
드라이버 제어 장치는 root만 엽니다. |
sudo로 랩을 실행합니다. 응용 프로그램이 /dev/ttyPDVn을 열 때 이 오류가 나면 dialout 그룹에 추가합니다. |
pdcomm-vserial: Device or resource busy (os error 16) |
다른 랩(보통 pdcomm-vseriald 서비스)이 드라이버를 쓰고 있습니다. |
sudo systemctl stop pdcomm-vseriald로 서비스를 멈추고 실행합니다. |
pdcomm-vserial: Address already in use (os error 48) |
다른 프로그램이 listen 포트를 쓰고 있습니다. Linux에서는 os error 98입니다. |
다른 포트를 지정하거나 127.0.0.1:0으로 빈 포트를 고르게 합니다. |
… is not a loopback address; set allow_remote to expose it |
TCP 서버를 외부 주소로 열려고 했습니다. |
신뢰할 수 있는 네트워크라면 랩에 "allow_remote": true를 지정합니다. |
… exists and is not a symlink |
link 경로에 일반 파일이 있습니다. |
파일을 지우거나 다른 경로를 씁니다. |
pdcomm-vserial: ports commands manage the Windows driver; on Linux load pdcomm_vserial.ko |
ports 명령은 Windows 전용입니다. |
Linux는 패키지와 modprobe로 포트를 관리합니다. |
pdcomm-vserial: daemon mode needs a Unix host; use run on Windows |
Windows에서 daemon을 실행했습니다. |
run을 씁니다. |
랩 파일 자체의 오류는 랩 파일 오류를 참고합니다.
| 증상 |
원인과 해결 |
| 받은 문자가 깨지거나 프레이밍·패리티 오류가 남 |
양쪽의 속도, 데이터 비트, 패리티가 다릅니다. 가상 회선도 실제 수신기처럼 깨진 문자를 전달합니다. 추적 기록의 "event":"port" 줄로 각 노드의 실제 설정을 확인합니다. |
| 포트를 연 직후 보낸 첫 프레임만 실패 |
응용 프로그램이 속도와 형식을 설정하기 전에 보냈습니다. 랩은 데이터를 받은 시점의 설정으로 전달합니다. 포트를 열고 설정을 마친 뒤 보냅니다. 추적 기록에서 첫 tx 앞의 port 줄로 그때의 설정을 확인합니다. |
| RS-485 버스에서 RTU 요청이 자주 실패 |
instant 진행 방식에서는 프레임 사이에 침묵이 없습니다. realistic을 씁니다. |
| 버스에서 응답이 겹쳐 깨짐 |
두 장치가 동시에 송신했습니다. 추적 기록에서 collision을 찾고 장치 주소가 겹치지 않는지 확인합니다. |
| 응용 프로그램이 포트를 열지 못함 |
랩이 멈추면 링크를 지웁니다. 랩이 실행 중인지, 링크 경로가 맞는지 확인합니다. |
| 관리자에서 Start lab을 눌러도 Stopped with an error |
로그 창의 pdcomm-vserial: … 메시지를 이 페이지에서 찾습니다. Cannot start …이면 관리자 옆에 pdcomm-vserial이 없으니 PDCOMM_VSERIAL_BIN을 지정합니다. |
| 도구 결과 |
해결 |
a lab is already running; stop it first |
vserial_stop으로 먼저 멈춥니다. 서버 하나는 랩 하나만 실행합니다. |
no lab is running |
vserial_start로 랩을 시작합니다. |
JSON-RPC 오류 -32602 Unknown tool: … |
도구 이름을 확인합니다. tools/list로 목록을 봅니다. |
| 증상 |
원인과 해결 |
| 로그 파일이 생기지 않음 |
환경 변수 값이 하나라도 잘못되면 전체를 무시합니다. PDCOMM_LOG는 소문자 레벨 이름입니다. 상태의 configuration_errors를 확인합니다. 이미 실행 중인 프로그램은 다시 시작해야 환경 변수를 읽습니다. |
Cannot open logging sink |
로그 파일의 폴더가 없거나 쓸 권한이 없습니다. |
Cannot configure PDComm logging 예외 |
설정 JSON이 잘못되었습니다. 시뮬레이터의 logging_configure로 같은 JSON을 보내면 원인 메시지를 볼 수 있습니다. |
dropped가 0보다 큼 |
큐가 가득 찼거나 레코드가 8192바이트를 넘었습니다. 레벨을 debug나 info로 낮추거나 더 빠른 디스크에 씁니다. |
| 한 파일에 두 프로세스의 레코드가 섞임 |
프로세스나 라이브러리마다 다른 파일을 지정합니다. |
| 증상 |
해결 |
no search index found (tried: …) |
--index, --root, PDCOMM_DOCS_INDEX 중 하나로 search-index.json을 지정합니다. |
| 검색 결과가 다른 언어로 나옴 |
--lang이나 PDCOMM_DOCS_LANG을 지정합니다. |
| 오프라인 사이트에서 검색이 동작하지 않음 |
HTML 파일을 직접 열면 브라우저가 검색 색인을 읽지 못합니다. pdcomm-docs serve나 python3 -m http.server로 엽니다. |
전체 명령과 오류는 pdcomm-docs 명령 레퍼런스를 참고합니다.