pack_unpack/
pack_unpack.rs

1use std::process;
2
3use meatpack::{MeatPackResult, Packer, Unpacker};
4
5fn main() {
6	let gcode = "M73 P0 R3
7M73 Q0 S3 ; Hello
8M201 X4000 Y4000 Z200 E2500
9M203 X300 Y300 Z40 E100
10M204 P4000 R1200 T4000
11";
12	let mut packer = Packer::<64>::default();
13	let mut out: Vec<u8> = vec![];
14
15	out.extend(packer.header());
16
17	for byte in gcode.as_bytes() {
18		let packed = packer.pack(byte);
19		match packed {
20			Ok(MeatPackResult::Line(line)) => {
21				println!("{:?}", line);
22				out.extend(line);
23			}
24			Ok(MeatPackResult::WaitingForNextByte) => {}
25			Err(e) => println!("{:?}", e),
26		}
27	}
28
29	println!("{:?}", out);
30
31	let mut unpacker = Unpacker::<64>::default();
32	for byte in out {
33		let res = unpacker.unpack(&byte);
34		match res {
35			Ok(MeatPackResult::WaitingForNextByte) => {}
36			Ok(MeatPackResult::Line(line)) => {
37				// If in std.
38				for byte in line {
39					let c = char::from(*byte);
40					print!("{}", c);
41				}
42			}
43			Err(e) => {
44				println!("{:?}", e);
45				process::exit(0)
46			}
47		}
48	}
49}