record function

Future<String> record(
  1. String address
)

Implementation

Future<String> record(String address) async {
  final port = SerialPort(address);
  final _ = port.openRead();
  final config = port.config;
  //You should always set baud rate, data bits, parity and stop bits.
  // debugPrint('baudRate ${config.baudRate}');//10?
  // debugPrint('bits ${config.bits}');//10?
  // debugPrint('parity ${config.parity}');//10?
  // debugPrint('stopBits ${config.stopBits}');//10?
  config.baudRate = 115200;
  port.config = config;
  final reader = SerialPortReader(port);
  final List<Uint8List> dataList = [];
  const MAX_SAMPLES = 1000;
  await for (final Uint8List data in reader.stream) {
      if (dataList.length >= MAX_SAMPLES) {
        //counter doesnt work since data.length varies
        // should instead append to collapsed list?
        debugPrint('closing since max samples reached');
        break;
      }
      debugPrint('####${data}#####');
      dataList.add(data);
  }
  debugPrint('${dataList.length}');
  final epochMs = DateTime.now().toUtc().millisecondsSinceEpoch;
  final fileName = 'record_$epochMs.dat';
  final IOSink sink = File(fileName).openWrite();
  for (var data in dataList) {
    sink.add(data);
  }
  await sink.flush();
  await sink.close();
  return fileName;
}