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

回到顶部