8 breaking releases

Uses new Rust 2024

new 0.9.0 Apr 25, 2025
0.8.0 Nov 30, 2024
0.8.0-rc.1 Oct 23, 2024
0.7.0 Jul 5, 2024
0.2.0 Nov 14, 2022

#695 in Game dev

Download history 2/week @ 2025-02-03 1/week @ 2025-02-10 3/week @ 2025-02-17 3/week @ 2025-02-24 10/week @ 2025-03-03 89/week @ 2025-04-21

89 downloads per month

MIT/Apache

28KB
225 lines

bevy_serialport

Crates.io Downloads Documentation MIT/Apache 2.0

bevy_serialport is a plugin for add async serial port support for bevy.

Usage

use bevy::{app::ScheduleRunnerPlugin, log::LogPlugin};
use std::time::Duration;

use bevy::prelude::*;
use bytes::Bytes;


use bevy_serialport::{
    DataBits, FlowControl, Parity, SerialData, SerialPortPlugin, SerialPortRuntime,
    SerialPortSetting, SerialResource, StopBits,
};


fn main() {
    App::new()
        .add_plugins((
            MinimalPlugins.set(ScheduleRunnerPlugin::run_loop(Duration::from_secs_f64(
                1.0 / 60.0,
            ))),
            LogPlugin::default(),
            SerialPortPlugin,
        ))
        .add_systems(Startup, setup)
        .add_systems(Update, (receive, send_test_data))
        .run();
}

fn setup(mut serial_res: ResMut<SerialResource>, rt: Res<SerialPortRuntime>) {
    let serial_setting = SerialPortSetting {
        port_name: "COM1".to_string(),
        baud_rate: 115_200,
        data_bits: DataBits::Five,
        flow_control: FlowControl::None,
        parity: Parity::None,
        stop_bits: StopBits::One,
        timeout: Default::default(),
    };
    serial_res
        .open_with_setting(rt.clone(), serial_setting)
        .expect("open serial port error");
}

fn receive(mut serial_ev: EventReader<SerialData>) {
    for message in serial_ev.read() {
        info!("receive {:?}", message);
    }
}

fn send_test_data(mut serial_res: ResMut<SerialResource>) {
    serial_res.send_message("COM1", Bytes::from(&b"123457"[..]))
}

Supported Versions

bevy bevy_serialport
0.16 0.9
0.15 0.8
0.14 0.7
0.13 0.6
0.12 0.5
0.11 0.4
0.10 0.3
0.9 0.2
0.8 0.1

License

Dual-licensed under either:

At your option. This means that when using this crate in your game, you may choose which license to use.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dually licensed as above, without any additional terms or conditions.

Dependencies

~20–33MB
~494K SLoC