use std::io::{Cursor, Read}; use byteorder::{BigEndian, ReadBytesExt}; #[derive(Debug)] pub(crate) struct SerialConfig { pub port: Vec, // Port/binary(变长二进制数据) pub baudrate: u32, // Baudrate:32 pub stopbits: u8, // Stopbits:8 pub parity: u8, // Parity:8 pub timeout: u32, // Timeout:32 } pub(crate) fn parse_serial_config(data: &[u8]) -> std::io::Result { let mut cursor = Cursor::new(data); let port_len = cursor.read_u8()?; let mut port = vec![0u8; port_len as usize]; cursor.read_exact(&mut port)?; let baudrate = cursor.read_u32::()?; let stopbits = cursor.read_u8()?; let parity = cursor.read_u8()?; let timeout = cursor.read_u32::()?; Ok(SerialConfig { port, baudrate, stopbits, parity, timeout, }) }