4个版本
0.2.0 | 2020年6月26日 |
---|---|
0.1.2 | 2020年2月8日 |
0.1.1 | 2019年12月3日 |
0.1.0 | 2019年12月3日 |
#1072 在 解析实现
1,127 每月下载量
用于 rxprog
35KB
844 行
srec
一个Rust包,用于解析/读取和生成/写入摩托罗拉S记录(也称为SRECORD或SREC)文件。
示例
读取
let s = fs::read_to_string(path)?;
let records = srec::read_records(&s);
for record in records {
match record {
Ok(record) => match record {
srec::Record::S0(s) => println!("S0 header: \"{}\"", s),
srec::Record::S1(data) => println!(
"S1 data w/ 16-bit address: addr = {:#06X}, data = {:02X?}",
u32::from(data.address),
data.data
),
srec::Record::S2(data) => println!(
"S2 data w/ 24-bit address: addr = {:#08X}, data = {:02X?}",
u32::from(data.address),
data.data
),
srec::Record::S3(data) => println!(
"S3 data w/ 32-bit address: addr = {:#010X}, data = {:02X?}",
u32::from(data.address),
data.data
),
srec::Record::S5(count) => {
println!("S5 16-bit record count: count = {:#06X}", u32::from(count))
}
srec::Record::S6(count) => {
println!("S6 24-bit record count: count = {:#08X}", u32::from(count))
}
srec::Record::S7(addr) => {
println!("S7 32-bit start address: addr = {:#010X}", u32::from(addr))
}
srec::Record::S8(addr) => {
println!("S8 24-bit start address: addr = {:#08X}", u32::from(addr))
}
srec::Record::S9(addr) => {
println!("S9 16-bit start address: addr = {:#06X}", u32::from(addr))
}
},
Err(err) => println!("error reading record: {}", err),
}
}
写入
let records = [
srec::Record::S0("HDR".into()),
srec::Record::S1(srec::Data {
address: srec::Address16(0x1234),
data: vec![0x00, 0x01, 0x02, 0x03],
}),
srec::Record::S1(srec::Data {
address: srec::Address16(0x1238),
data: vec![0x04, 0x05, 0x06, 0x07],
}),
srec::Record::S9(srec::Address16(0x1234)),
];
let s = srec::writer::generate_srec_file(&records);
let mut file = fs::File::create(path)?;
file.write_all(&s.into_bytes())?;