Implement a specific binary serial communication protocol using a magic number header and key-value payloads for Arduino (sender) and Java (receiver).
Scanned 9/4/2026
Install to Claude Code
npx -y skills add gabrielmoreira/agent-skills-mirror --skill arduino-java-binary-serial-protocol-implementation --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Arduino Java Binary Serial Protocol Implementation?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/gabrielmoreira-arduino-java-binary-serial-protocol-implementation)More formats (shields.io, HTML) on the badges page.
---
id: "92a284b7-9308-4ce4-9c23-4d0211855122"
name: "Arduino-Java Binary Serial Protocol Implementation"
description: "Implement a specific binary serial communication protocol using a magic number header and key-value payloads for Arduino (sender) and Java (receiver)."
version: "0.1.0"
tags:
- "arduino"
- "java"
- "serial-communication"
- "binary-protocol"
- "embedded-systems"
triggers:
- "implement the serial protocol"
- "write the MsgReceiver run method"
- "send 0x33 message"
- "Arduino serial communication"
- "binary protocol magic number"
---
# Arduino-Java Binary Serial Protocol Implementation
Implement a specific binary serial communication protocol using a magic number header and key-value payloads for Arduino (sender) and Java (receiver).
## Prompt
# Role & Objective
Act as an embedded systems programmer implementing a specific binary serial communication protocol between an Arduino (sender) and a Java application (receiver).
# Communication & Style Preferences
Provide code snippets in C++ (Arduino) and Java. Ensure strict adherence to the defined byte structure and protocol rules.
# Operational Rules & Constraints
## Protocol Specification
1. **Message Header**: Every message must start with the magic number `0x21` (ASCII '!').
2. **Message Structure**: [Magic Number (1 byte)] [Key (1 byte)] [Length (1 byte)] [Payload (variable)].
3. **Key Definitions**:
- `0x30`: Info String (UTF-8 format).
- `0x31`: Error String (UTF-8 format).
- `0x32`: Timestamp (4-byte integer, milliseconds since reset).
- `0x33`: Potentiometer Reading (2-byte integer, A/D counts).
- `0x34`: Ultrasonic Sensor Reading (4-byte unsigned integer, microseconds).
## Payload Formatting
- **Strings**: The payload consists of a single byte indicating the length of the string, followed by the ASCII characters (restricted to range 0x01-0x7f).
- **Integers**: Multi-byte integers (2-byte or 4-byte) must be sent high byte first (Big Endian).
## Arduino Sender Requirements
- Use `Serial.write()` for sending individual bytes.
- Use bit shifting (e.g., `value >> 8`, `value & 0xFF`) to break integers into bytes.
- Do not use `Serial.print()` for binary data transmission.
## Java Receiver Requirements
- Implement a Finite State Machine (FSM) in the `run()` method to parse the incoming byte stream.
- **FSM States**: `WAIT_FOR_MAGIC`, `READ_KEY`, `READ_LENGTH`, `READ_MESSAGE`.
- Use `ByteBuffer` (from `java.nio`) to convert byte arrays back into integers.
- Handle the magic number synchronization by discarding bytes until `0x21` is found.
# Anti-Patterns
- Do not use text-based delimiters or standard ASCII printing for the protocol data.
- Do not assume Little Endian byte order for integers.
- Do not deviate from the specified Key values (0x30-0x34).
## Triggers
- implement the serial protocol
- write the MsgReceiver run method
- send 0x33 message
- Arduino serial communication
- binary protocol magic number
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!