Crates.io | k8056 |
lib.rs | k8056 |
version | 0.1.0 |
source | src |
created_at | 2022-10-26 08:48:00.056886 |
updated_at | 2022-10-26 08:48:00.056886 |
description | Code to controll the k8056 relay card |
homepage | |
repository | |
max_upload_size | |
id | 697642 |
size | 4,697 |
Library crate that implements the communication with a k8056 relay card, written in Rust.
This library provides basic structs and enums that provide the specified ACSII instruction, needed to communicate with the K8056 8-CHANNEL RELAY CARD manufactured by Velleman To send the instructions to the relay card, a serial library like serialport is needed.
Working example using serialport library
use serialport;
use k8056::uart::{Command, Idx};
use std::thread;
use std::time::Duration;
fn main() {
let mut port = serialport::new("/dev/ttyUSB0", 2_400)
.timeout(Duration::from_millis(10))
.data_bits(serialport::DataBits::Eight)
.parity(serialport::Parity::None)
.stop_bits(serialport::StopBits::One)
.open()
.expect("Failed to open port");
// Just a bunch of Commands to show how to initialize them
let cmd = Command::Byte(0x1C);
let cmd = Command::Emergency;
let cmd = Command::Force;
let cmd = Command::Display;
let cmd = Command::Address(Idx::new(2));
port.write(&cmd.to_bytes(1)).expect("Write failed!");
for i in 1..9 {
let cmd = Command::Toggle(Idx::new(i));
port.write(&cmd.to_bytes(1)).expect("Write failed!");
thread::sleep(Duration::from_millis(1000));
}
for i in (1..9).rev() {
let cmd = Command::Toggle(Idx::new(i));
port.write(&cmd.to_bytes(1)).expect("Write failed!");
thread::sleep(Duration::from_millis(1000));
}
}