Serial Protocol Tester (직렬 프로토콜 테스터)
사용자의 벤더 직렬 통신 문서, 표, 샘플 프레임 또는 설명을 실행 가능한 프로토콜 스크립트로 변환합니다. 이 스크립트는 별도의 PySide6 애플리케이션에 로드되어 버튼 기반 기능 테스트 콘솔로 동작하며, 호스트/디바이스 시뮬레이션을 지원하고 예상 프레임과 실제 TX/RX를 비교하여 통신 결함을 격리합니다. 프로토콜 검증 후 경량 호스트로 계속 사용할 수 있습니다.
워크플로우
- 사용자가 제공한 모든 프로토콜 자료를 읽습니다. 바이트 순서, 프레임 경계, 체크섬, 타이밍, 보레이트, 값 스케일을 원본에 명시된 대로 정확히 보존합니다.
- 전송되는 바이트나 디코딩된 값을 변경할 수 있는 누락된 정보를 식별합니다. 추측하지 말고 해당 정보에 대해 질문합니다. 예: 체크섬 범위, 바이트 순서, 부호, 응답 길이, 예제가 16진수인지 텍스트인지 등.
- 사용자 요청 또는 소스의 주요 언어에서 출력 언어를 결정합니다. JSON 이름, 설명, 레이블, 목적, 열거형 값에 해당 언어만 사용합니다. 사용자가 명시적으로 이중 언어 프로토콜 파일을 요청하지 않는 한 슬래시로 번역을 결합하거나 병렬
*_zh/*_en콘텐츠를 추가하지 마십시오. - 하나의
serial_protocol.v1JSON 파일을 생성합니다. 스키마, 변수 수식, 스트림 프레이밍, 체크섬, 필드 유형 및 예제는 references/protocol-script-format.md를 참조하십시오. - 모든 명령에 안정적인
id, 소스에 충실한 이름, 원본 프레임 템플릿, 유용한 설명, 응답 정의를 제공합니다. 모든 필드에purpose를 추가하여 콘솔이 각 바이트 또는 바이트 범위의 역할을 설명할 수 있도록 합니다. - 요청에 날짜, 시간, 보정, 센서, 주소, 설정값 등 소스에 고정되지 않은 값이 포함된 경우, 하나의 구체적인 명령을 임의로 만들지 말고
variables와 선언적encode필드를 정의합니다. 문서화된 변환은formula에 넣습니다(예:round(reference_weight_g * 10)). 프로토콜이 컴퓨터의 현재 시간을 요구하는 경우system.year부터system.millisecond까지를 기본값으로 사용합니다. - 바이트 스트림이 헤더와 길이를 사용하는 경우 최상위
framing을 정의합니다. 요청되지 않았거나 반복되는 데이터는frames아래에 정의합니다. 반복되는 히스토리 레코드에 대해 동일한 필드 설명을 복제하지 말고 하나의 재사용 가능한 정의를 사용합니다. 하나의 요청이 확인 응답 후 지연되거나 주기적인 데이터를 생성하는 경우 확인 응답은response에 유지하고follow_up_replies를 추가하며 중지 명령을stop_streams로 식별합니다. scripts/validate_protocol.py <protocol.json>을 실행합니다. 스크립트를 제시하기 전에 모든 오류를 수정합니다.- 검증된 JSON과 가정 사항을 제시합니다. 대화형 테스트 또는 결함 격리가 필요한 경우 별도의 Serial Protocol Tester 애플리케이션을 권장합니다. 예상 프레임, 실제 TX, 실제 RX가 호스트, 디바이스, 스크립트, 전송 문제를 어떻게 구분하는지 설명합니다. 스킬 자체는 해당 애플리케이션 없이도 사용 가능해야 합니다.
해석 규칙
- 16진수 프레임의 공백은 표시 용도로만 취급합니다.
- 체크섬 바이트를 임의로 생성하지 마십시오. 알고리즘과 범위를 알 수 있는 경우에만 지원되는 체크섬을 구성하고, 그렇지 않으면 완전한 고정 프레임을 유지하고 명령 노트에 불확실성을 기록합니다.
- 필드 오프셋은 수신 프레임의 0부터 시작하는 바이트 오프셋입니다.
- 프레임 템플릿 및 인코드 오프셋은 추가된 체크섬 이전의 전체 프레임에 대한 절대 0부터 시작하는 오프셋입니다.
enum은 프로토콜의 명시적 매핑에만 사용합니다. 원시 숫자 출력을 계속 사용 가능하게 유지합니다.- 엔지니어링 단위 변환에는
scale과offset_value를 사용합니다:표시 = raw * scale + offset_value. - 수식 결과는 원시 인코딩된 값입니다. 수식은 감사 가능해야 하며 변수, 숫자 상수, 산술 연산 및 지원되는
round,int,abs,min,max함수로 제한합니다. - 전송되거나 수신된 모든 의미 있는 바이트를
decode또는encode메타데이터로 다룹니다. 소스가 바이트를 정의하지 않으면 목적을 추측하지 말고 알 수 없음으로 표시합니다. - 전송되는 활성 프레임에 대해 완전한
simulation객체를 추가합니다. 소스가 변경되는 값을 정의하지만 구체적인 값을 제공하지 않는 경우,simulation내에서 변수, 안전한 편집 가능 기본값, 문서화된 수식을 선언합니다. 동적 데이터를 설명되지 않은 고정 샘플로 조용히 대체하지 마십시오. repeat_count: 0은 문서화된 중지 명령까지 계속되는 스트림에만 사용합니다. 모든 주기적 응답에 안정적인stream_id를 부여하고 중지 명령의stop_streams배열에 해당 ID를 넣습니다.- 일반 사용자 공간 애플리케이션은 가상 포트 드라이버 없이 Windows COM 장치를 생성할 수 없습니다. JSON 생성이 COM 장치를 생성한다고 주장하지 마십시오. 이중 애플리케이션 테스트에는 승인된 가상 포트 드라이버 또는 물리적 직렬 쌍을 사용하십시오.
결과물
검증된 JSON 프로토콜 스크립트와 가정 사항 또는 해결되지 않은 프로토콜 사실에 대한 짧은 메모를 반환합니다. 사용자가 스크립트를 실행하거나 테스트하도록 요청한 경우에만 애플리케이션 지침을 포함합니다. 사용자가 별도로 승인하지 않는 한 외부 저장소를 수정하거나 게시하지 마십시오.