Skip to content

ikalnytskyi/vesc-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VESC communication for Rust

A no-std/no-alloc Rust implementation of the VESC®1 firmware communication protocol, making it ideal for embedded systems, robotics, and any application that needs to communicate with VESC motor controllers.

Supported commands

Note

If you find a missing command, feel free to contribute! Adding a new command should be relatively easy. Just follow the well-established pattern.

Command ID Command Name Status
4 GetValues
6 SetCurrent
8 SetRpm
10 SetHandbrake
34 ForwardCan
50 GetValuesSelective

Supported command replies

Note

Many commands have no replies, so this list need not mirror the supported commands.

Command ID Command Name Status
4 GetValues
50 GetValuesSelective

Installation

Add this to your Cargo.toml:

[dependencies]
vesc = "0.1"

Usage

let mut buf = [0u8; 16];
let size = vesc::encode(Command::SetRpm(5000), &mut buf).unwrap();
tx.write_all(&buf[..size]).unwrap();
let mut decoder = Decoder::default();
let mut buf = [0u8; 512];

loop {
    let size = rx.read(&mut buf).unwrap()
    decoder.feed(&buf[..size]).unwrap();

    for reply in self.decoder.by_ref() {
        // process `reply`
    }
}

License

This project is licensed under the MIT license.

Footnotes

  1. https://vesc-project.com/

About

A no-std/no-alloc implementation of the VESC® firmware communication protocol.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages