CommunitySchreiben & Editierengithub.com

10walnut/serial-protocol-tester-skill

Aus herstellereigenen seriellen Protokolldokumenten schnell ausführbares JSON generieren, das funktionale Testoberflächen direkt steuert und Kommunikationsprobleme zwischen Host und Gerät identifiziert.

Was ist serial-protocol-tester-skill?

Diese Fähigkeit übersetzt herstellereigene serielle Protokollspezifikationen (Dokumente, Tabellen, Beispiel-Frames oder Beschreibungen) in ein strukturiertes `serial_protocol.v1` JSON-Skript. Das JSON kann von einer separaten PySide6-Anwendung geladen werden, die als schaltflächengesteuerte funktionale Testkonsole fungiert. Die Fähigkeit unterstützt Host-/Gerätesimulation, erwartete vs. tatsächliche TX/RX-Feldvergleiche und hilft, die Fehlerursache (Host, Gerät, Skript oder Übertragungsweg) zu isolieren. Sie ist für Entwickler und Tester konzipiert, die mit eingebetteten Systemen, IoT-Geräten oder industrieller Kommunikation arbeiten, und stellt sicher, dass alle Protokolldetails (Byte-Reihenfolge, Prüfsummen, Zeitsteuerung, Baudrate, Wertskalierung) originalgetreu erhalten bleiben. Die Ausgabe erfolgt in der vom Benutzer bevorzugten Sprache (basierend auf der Anfrage oder der Quellsprache), ohne automatische zweisprachige Inhalte. Die Fähigkeit validiert das generierte JSON automatisch mit einem bereitgestellten Skript und identifiziert fehlende Fakten (z. B. Prüfsummenabdeckung, Vorzeichenbehaftung, Antwortlänge), bevor sie Annahmen trifft.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add 10walnut/serial-protocol-tester-skill

Installed? Explore more Schreiben & Editieren skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Serial Protocol Tester

Verwandeln Sie herstellereigene serielle Kommunikationsdokumente, Tabellen, Beispiel-Frames oder Beschreibungen in ein ausführbares Protokollskript. Die separate PySide6-Anwendung lädt dieses Skript als schaltflächengesteuerte funktionale Testkonsole, unterstützt Host-/Gerätesimulation und hilft, erwartete Frames mit tatsächlichem TX/RX zu vergleichen, um Kommunikationsfehler zu isolieren. Es kann nach der Protokollvalidierung als leichtgewichtiger Host weiterverwendet werden.

Arbeitsablauf

  1. Lesen Sie das gesamte vom Benutzer bereitgestellte Protokollmaterial. Bewahren Sie Byte-Reihenfolge, Framegrenzen, Prüfsummen, Zeitsteuerung, Baudrate und Wertskalierung genau so, wie sie angegeben sind.
  2. Identifizieren Sie fehlende Fakten, die gesendete Bytes oder dekodierte Werte verändern würden. Fragen Sie nach diesen Fakten, anstatt zu raten. Beispiele dafür sind Prüfsummenabdeckung, Byte-Reihenfolge, Vorzeichenbehaftung, Antwortlänge und ob es sich bei Beispielen um Hexadezimal- oder Textwerte handelt.
  3. Bestimmen Sie die Ausgabesprache aus der Anfrage des Benutzers oder der dominierenden Sprache der Quelle. Erzeugen Sie nur diese Sprache in den JSON-Namen, Beschreibungen, Labels, Zwecken und Aufzählungswerten. Fügen Sie keine Übersetzungen mit Schrägstrichen hinzu und fügen Sie keine parallelen *_zh/*_en-Inhalte hinzu, es sei denn, der Benutzer fordert explizit eine zweisprachige Protokolldatei an.
  4. Erstellen Sie eine einzige serial_protocol.v1 JSON-Datei. Lesen Sie references/protocol-script-format.md für das Schema, Variablenformeln, Stream-Framing, Prüfsummen, Feldtypen und Beispiele.
  5. Geben Sie jedem Befehl eine stabile id, einen quelltreuen Namen, eine originale Frameschablone, eine nützliche Beschreibung und eine Antwortdefinition. Fügen Sie jedem Feld einen purpose hinzu, damit die Konsole erklären kann, was jedes Byte oder jeder Bytebereich tut.
  6. Wenn eine Anfrage Datums-, Zeit-, Kalibrierungs-, Sensor-, Adress-, Sollwert- oder andere Werte enthält, die nicht durch die Quelle festgelegt sind, definieren Sie variables und deklarative encode-Felder, anstatt einen konkreten Befehl zu erfinden. Setzen Sie die dokumentierte Umrechnung in formula, z. B. round(reference_weight_g * 10). Verwenden Sie system.year bis system.millisecond als Standardwerte, wenn das Protokoll die aktuelle Uhrzeit des Computers erfordert.
  7. Definieren Sie ein übergeordnetes framing, wenn ein Bytestrom Header und Längen verwendet. Definieren Sie unaufgeforderte oder wiederholte Daten unter frames; verwenden Sie eine wiederverwendbare Definition für wiederholte Verlaufsdatensätze, anstatt die gleiche Felderklärung für jeden Datensatz zu duplizieren. Wenn eine Anfrage eine Quittung gefolgt von verzögerten oder periodischen Daten erzeugt, belassen Sie die Quittung in response, fügen Sie follow_up_replies hinzu und identifizieren Sie den Abbruchbefehl mit stop_streams.
  8. Führen Sie scripts/validate_protocol.py <protocol.json> aus. Beheben Sie jeden Fehler, bevor Sie das Skript präsentieren.
  9. Präsentieren Sie das validierte JSON und die Annahmen. Wenn interaktive Tests oder Fehlerisolierung erforderlich sind, empfehlen Sie die separate Serial Protocol Tester-Anwendung; erklären Sie, wie erwartete Frames, tatsächlicher TX und tatsächlicher RX zwischen Host-, Geräte-, Skript- und Transportproblemen unterscheiden. Die Fähigkeit selbst muss ohne diese Anwendung nutzbar bleiben.

Interpretationsregeln

  • Behandeln Sie Leerzeichen in hexadezimalen Frames nur als Darstellung.
  • Erfinden Sie keine Prüfsummenbytes. Konfigurieren Sie eine unterstützte Prüfsumme, wenn ihr Algorithmus und ihre Abdeckung bekannt sind; andernfalls behalten Sie den vollständigen festen Frame bei und dokumentieren Sie die Unsicherheit in den Befehlsnotizen.
  • Feld-Offsets sind nullbasierte Byte-Offsets im empfangenen Frame.
  • Frame-Schablonen- und Encode-Offsets sind absolute nullbasierte Offsets im vollständigen Frame vor einer angehängten Prüfsumme.
  • Verwenden Sie enum nur für explizite Zuordnungen aus dem Protokoll. Halten Sie die rohen numerischen Ausgaben verfügbar.
  • Verwenden Sie scale und offset_value für die Umrechnung in technische Einheiten: display = raw * scale + offset_value.
  • Formelergebnisse sind rohe codierte Werte. Halten Sie Formeln nachvollziehbar und beschränkt auf Variablen, numerische Konstanten, Arithmetik und die unterstützten Funktionen round, int, abs, min und max.
  • Decken Sie jedes bedeutungsvolle gesendete und empfangene Byte mit decode- oder encode-Metadaten ab. Wenn die Quelle ein Byte nicht definiert, kennzeichnen Sie es als unbekannt, anstatt seinen Zweck zu erraten.
  • Fügen Sie für einen gesendeten aktiven Frame ein vollständiges simulation-Objekt hinzu. Wenn die Quelle einen sich ändernden Wert definiert, aber keinen konkreten Wert angibt, deklarieren Sie Variablen, sichere editierbare Standardwerte und die dokumentierte Formel innerhalb von simulation; ersetzen Sie dynamische Daten nicht stillschweigend durch ein unerklärtes festes Beispiel.
  • Verwenden Sie repeat_count: 0 nur für einen Stream, der fortgesetzt wird, bis ein dokumentierter Stoppbefehl eintrifft. Geben Sie jeder periodischen Antwort eine stabile stream_id und setzen Sie diese ID in das stop_streams-Array des Stoppbefehls.
  • Eine normale Benutzeranwendung kann kein Windows-COM-Gerät ohne einen virtuellen Port-Treiber erstellen. Behaupten Sie nicht, dass die JSON-Erzeugung ein COM-Gerät erstellt. Verwenden Sie für Tests mit zwei Anwendungen einen zugelassenen virtuellen Port-Treiber oder ein physisches serielles Paar.

Liefergegenstände

Geben Sie das validierte JSON-Protokollskript und eine kurze Notiz mit Annahmen oder ungeklärten Protokollfakten zurück. Fügen Sie Anwendungsanweisungen nur hinzu, wenn der Benutzer darum bittet, das Skript auszuführen oder zu testen. Ändern oder veröffentlichen Sie kein externes Repository, es sei denn, der Benutzer autorisiert diese Aktion separat.

Verwandte Skills