Flutter插件srec的介绍与使用
Flutter插件srec的介绍与使用
Motorola S-Record库
A Dart库用于读取和写入Motorola S-Record文件(常见的文件扩展名包括.s19、.s28、.s37、.srec)。Motorola S-Record是一种将二进制数据存储为ASCII文本的文件格式,通常用于编程微控制器。文件由记录块组成,每个记录块在文本文件中表示为一行。记录以字符“S”开头,并以行尾结束。记录块的最后一字节是该块中所有其他字节的校验和。
一个记录有六个字段:
- 开始代码。通常为“S”。
- 记录类型。
- 字节数。
- 地址。
- 数据。可能为空。
- 校验和。
特性
该库可以读取和写入Motorola S-记录格式的文件。在读取文件时会验证校验和。如果格式无法解析,则会抛出异常并显示错误发生的行。因此,此库还可以用作S-记录文件的检查器。
支持以下记录类型:
记录类型 | ID | 描述 |
---|---|---|
头部 | S0 | 包含后续记录的元数据字段。 |
数据 | S1, S2, S3 | 正常的数据字段。 |
计数 | S5, S6 | 前面S1、S2和S3记录的数量。 |
起始地址(终止) | S7, S8, S9 | 持有初始指令指针的数据字段,并终止记录块。 |
每个记录可以包含0到255字节的有效载荷。
入门
要使用该包,只需将其添加到您的pubspec.yaml
文件中:
dependencies:
srec: ^1.0.0
然后你就可以开始使用了!
使用示例
读取文件
import 'package:srec/srec.dart';
// 示例读取文件...
final file = File(path).readAsStringSync();
var srec = SRecordFile.fromString(file);
将二进制数据转换为Intel HEX字符串
import 'package:srec/srec.dart';
Uint8List data = /* 获取二进制数据 */;
var srec = SRecordFile.fromData(data);
var hexString = srec.toFileContents();
更多示例可以在GitHub的示例目录中找到。
额外信息
如果有任何错误报告或功能请求,请使用GitHub上的问题跟踪器。
依赖关系
该库使用了来自intel_hex包的内存段。
示例代码
Motorola S-Record文件检查器
srec_lint.dart
文件包含了验证Motorola S-记录文件是否无误的所有代码。程序读取文件并解析直到文件末尾。如果有任何类型的错误(校验和不正确、错误的记录块、错误的字符等),则会抛出异常。
示例代码简化如下:
import 'package:srec/srec.dart';
try {
var file = File(path).readAsStringSync();
var srec = SRecordFile.fromString(file);
} catch (e) {
// 处理错误
}
Motorola S-Record文件转换器
convert_to_srec.dart
文件包含了将二进制数据转换为Motorola S-记录文件所需的所有代码。
示例代码简化如下:
import 'package:srec/srec.dart';
List<int> data = /* 填充数据 */;
var srec = SRecordFile.fromData(data);
var hexString = srec.toFileContents();
将Motorola S-Record文件转换为二进制文件
convert_to_binary.dart
文件包含了将Motorola S-记录文件转换为二进制数据所需的所有代码。
示例代码简化如下:
import 'package:srec/srec.dart';
var file = File(path).readAsStringSync();
var srec = SRecordFile.fromString(file);
final filesize = srec.maxAddress;
var data = Uint8List(srec.maxAddress);
for (final seg in srec.segments) {
for (int i = seg.address; i < seg.endAddress; ++i) {
data[i] = seg.byte(i);
}
}
File(outfile).writeAsBytesSync(data);
这段代码片段会在段之间填充0字节。
运行可执行文件
你可以在项目根目录下通过简单的命令尝试这些示例可执行文件:
# 在无效文件上运行检查器 - 将显示错误并返回非零值
dart ./example/srec_lint.dart ./example/srec_lint.dart
# 将文件转换为Motorola S-记录
dart ./example/convert_to_srec.dart ./example/convert_to_srec.dart
# 在有效文件上运行检查器
dart ./example/srec_lint.dart ./example/convert_to_srec.dart.srec
# 将S-记录转换为二进制文件
dart ./example/convert_to_binary.dart ./example/convert_to_srec.dart.srec
更多关于Flutter插件srec的介绍与使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html