pack_unpack/
pack_unpack.rs1use 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 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}