How do I save Arduino serial data to excel?

 *  正在执行任务: C:\Users\xiang\.platformio\penv\Scripts\platformio.exe run 

Traceback (most recent call last):
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\__main__.py", line 103, in main
    cli()  # pylint: disable=no-value-for-parameter
    ^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\click\core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\click\core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\cli.py", line 85, in invoke
    return super().invoke(ctx)
           ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\click\core.py", line 1685, in invoke
    super().invoke(ctx)
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\click\core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\click\core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\click\decorators.py", line 33, in new_func
    return f(get_current_context(), *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\__main__.py", line 56, in cli
    maintenance.on_cmd_start(ctx, caller)
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\maintenance.py", line 35, in on_cmd_start
    telemetry.on_cmd_start(ctx)
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\telemetry.py", line 172, in on_cmd_start
    process_postponed_logs()
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\telemetry.py", line 366, in process_postponed_logs
    events = load_postponed_events()
             ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\telemetry.py", line 328, in load_postponed_events
    state_path = app.resolve_state_path(
                 ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\app.py", line 77, in resolve_state_path
    state_dir = ProjectConfig.get_instance().get("platformio", conf_option_dir)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\project\config.py", line 489, in get_instance
    instance = {"mtime": mtime, "config": ProjectConfig(path)}
                                          ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\project\config.py", line 87, in __init__
    self.read(path, parse_extra)
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\project\config.py", line 99, in read
    self._parser.read(path, "utf-8")
  File "C:\Users\xiang\.platformio\python3\Lib\configparser.py", line 713, in read
    self._read(fp, filename)
  File "C:\Users\xiang\.platformio\python3\Lib\configparser.py", line 1036, in _read
    for lineno, line in enumerate(fp, start=1):
  File "<frozen codecs>", line 322, in decode
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 576: invalid start byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\Users\xiang\.platformio\penv\Scripts\platformio.exe\__main__.py", line 7, in <module>
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\__main__.py", line 109, in main
    maintenance.on_platformio_exception(exc)
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\maintenance.py", line 61, in on_platformio_exception
    telemetry.log_exception(exc)
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\telemetry.py", line 276, in log_exception
    log_event("exception", params)
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\telemetry.py", line 168, in log_event
    TelemetryLogger().log_event(name, params, instant_sending=instant_sending)
    ^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\util.py", line 132, in get_instance
    _instances[cls] = cls(*args, **kwargs)
                      ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\telemetry.py", line 78, in __init__
    self._http_session = HTTPSession()
                         ^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\http.py", line 52, in __init__
    self.headers.update({"User-Agent": app.get_user_agent()})
                                       ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\app.py", line 277, in get_user_agent
    if not get_setting("enable_telemetry"):
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\app.py", line 208, in get_setting
    with State() as state:
         ^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\app.py", line 88, in __init__
    self.path = resolve_state_path("core_dir", "appstate.json")
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\app.py", line 77, in resolve_state_path
    state_dir = ProjectConfig.get_instance().get("platformio", conf_option_dir)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\project\config.py", line 489, in get_instance
    instance = {"mtime": mtime, "config": ProjectConfig(path)}
                                          ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\project\config.py", line 87, in __init__
    self.read(path, parse_extra)
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\project\config.py", line 99, in read
    self._parser.read(path, "utf-8")
  File "C:\Users\xiang\.platformio\python3\Lib\configparser.py", line 713, in read
    self._read(fp, filename)
  File "C:\Users\xiang\.platformio\python3\Lib\configparser.py", line 1036, in _read
    for lineno, line in enumerate(fp, start=1):
  File "<frozen codecs>", line 322, in decode
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 576: invalid start byte
Exception ignored in atexit callback: <function _finalize at 0x000001C40D26FD80>
Traceback (most recent call last):
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\telemetry.py", line 313, in _finalize
    telemetry = TelemetryLogger()
                ^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\util.py", line 132, in get_instance
    _instances[cls] = cls(*args, **kwargs)
                      ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\telemetry.py", line 78, in __init__
    self._http_session = HTTPSession()
                         ^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\http.py", line 52, in __init__
    self.headers.update({"User-Agent": app.get_user_agent()})
                                       ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\app.py", line 277, in get_user_agent
    if not get_setting("enable_telemetry"):
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\app.py", line 208, in get_setting
    with State() as state:
         ^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\app.py", line 88, in __init__
    self.path = resolve_state_path("core_dir", "appstate.json")
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\app.py", line 77, in resolve_state_path
    state_dir = ProjectConfig.get_instance().get("platformio", conf_option_dir)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\project\config.py", line 489, in get_instance
    instance = {"mtime": mtime, "config": ProjectConfig(path)}
                                          ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\project\config.py", line 87, in __init__
    self.read(path, parse_extra)
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\project\config.py", line 99, in read
    self._parser.read(path, "utf-8")
  File "C:\Users\xiang\.platformio\python3\Lib\configparser.py", line 713, in read
    self._read(fp, filename)
  File "C:\Users\xiang\.platformio\python3\Lib\configparser.py", line 1036, in _read
    for lineno, line in enumerate(fp, start=1):
  File "<frozen codecs>", line 322, in decode
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 576: invalid start byte

 *  终端进程“C:\Users\xiang\.platformio\penv\Scripts\platformio.exe 'run'”已终止,退出代码: 1。 
 *  终端将被任务重用,按任意键关闭。 

 *  正在执行任务: C:\Users\xiang\.platformio\penv\Scripts\platformio.exe run 

Traceback (most recent call last):
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\__main__.py", line 103, in main
    cli()  # pylint: disable=no-value-for-parameter
    ^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\click\core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\click\core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\cli.py", line 85, in invoke
    return super().invoke(ctx)
           ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\click\core.py", line 1685, in invoke
    super().invoke(ctx)
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\click\core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\click\core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\click\decorators.py", line 33, in new_func
    return f(get_current_context(), *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\__main__.py", line 56, in cli
    maintenance.on_cmd_start(ctx, caller)
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\maintenance.py", line 35, in on_cmd_start
    telemetry.on_cmd_start(ctx)
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\telemetry.py", line 172, in on_cmd_start
    process_postponed_logs()
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\telemetry.py", line 366, in process_postponed_logs
    events = load_postponed_events()
             ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\telemetry.py", line 328, in load_postponed_events
    state_path = app.resolve_state_path(
                 ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\app.py", line 77, in resolve_state_path
    state_dir = ProjectConfig.get_instance().get("platformio", conf_option_dir)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\project\config.py", line 489, in get_instance
    instance = {"mtime": mtime, "config": ProjectConfig(path)}
                                          ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\project\config.py", line 87, in __init__
    self.read(path, parse_extra)
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\project\config.py", line 99, in read
    self._parser.read(path, "utf-8")
  File "C:\Users\xiang\.platformio\python3\Lib\configparser.py", line 713, in read
    self._read(fp, filename)
  File "C:\Users\xiang\.platformio\python3\Lib\configparser.py", line 1036, in _read
    for lineno, line in enumerate(fp, start=1):
  File "<frozen codecs>", line 322, in decode
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 576: invalid start byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\Users\xiang\.platformio\penv\Scripts\platformio.exe\__main__.py", line 7, in <module>
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\__main__.py", line 109, in main
    maintenance.on_platformio_exception(exc)
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\maintenance.py", line 61, in on_platformio_exception
    telemetry.log_exception(exc)
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\telemetry.py", line 276, in log_exception
    log_event("exception", params)
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\telemetry.py", line 168, in log_event
    TelemetryLogger().log_event(name, params, instant_sending=instant_sending)
    ^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\util.py", line 132, in get_instance
    _instances[cls] = cls(*args, **kwargs)
                      ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\telemetry.py", line 78, in __init__
    self._http_session = HTTPSession()
                         ^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\http.py", line 52, in __init__
    self.headers.update({"User-Agent": app.get_user_agent()})
                                       ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\app.py", line 277, in get_user_agent
    if not get_setting("enable_telemetry"):
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\app.py", line 208, in get_setting
    with State() as state:
         ^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\app.py", line 88, in __init__
    self.path = resolve_state_path("core_dir", "appstate.json")
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\app.py", line 77, in resolve_state_path
    state_dir = ProjectConfig.get_instance().get("platformio", conf_option_dir)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\project\config.py", line 489, in get_instance
    instance = {"mtime": mtime, "config": ProjectConfig(path)}
                                          ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\project\config.py", line 87, in __init__
    self.read(path, parse_extra)
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\project\config.py", line 99, in read
    self._parser.read(path, "utf-8")
  File "C:\Users\xiang\.platformio\python3\Lib\configparser.py", line 713, in read
    self._read(fp, filename)
  File "C:\Users\xiang\.platformio\python3\Lib\configparser.py", line 1036, in _read
    for lineno, line in enumerate(fp, start=1):
  File "<frozen codecs>", line 322, in decode
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 576: invalid start byte
Exception ignored in atexit callback: <function _finalize at 0x0000022E890DFD80>
Traceback (most recent call last):
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\telemetry.py", line 313, in _finalize
    telemetry = TelemetryLogger()
                ^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\util.py", line 132, in get_instance
    _instances[cls] = cls(*args, **kwargs)
                      ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\telemetry.py", line 78, in __init__
    self._http_session = HTTPSession()
                         ^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\http.py", line 52, in __init__
    self.headers.update({"User-Agent": app.get_user_agent()})
                                       ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\app.py", line 277, in get_user_agent
    if not get_setting("enable_telemetry"):
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\app.py", line 208, in get_setting
    with State() as state:
         ^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\app.py", line 88, in __init__
    self.path = resolve_state_path("core_dir", "appstate.json")
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\app.py", line 77, in resolve_state_path
    state_dir = ProjectConfig.get_instance().get("platformio", conf_option_dir)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\project\config.py", line 489, in get_instance
    instance = {"mtime": mtime, "config": ProjectConfig(path)}
                                          ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\project\config.py", line 87, in __init__
    self.read(path, parse_extra)
  File "C:\Users\xiang\.platformio\penv\Lib\site-packages\platformio\project\config.py", line 99, in read
    self._parser.read(path, "utf-8")
  File "C:\Users\xiang\.platformio\python3\Lib\configparser.py", line 713, in read
    self._read(fp, filename)
  File "C:\Users\xiang\.platformio\python3\Lib\configparser.py", line 1036, in _read
    for lineno, line in enumerate(fp, start=1):
  File "<frozen codecs>", line 322, in decode
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 576: invalid start byte

 *  终端进程“C:\Users\xiang\.platformio\penv\Scripts\platformio.exe 'run'”已终止,退出代码: 1。 
 *  终端将被任务重用,按任意键关闭。 

[{
	"resource": "/e:/Wenzhou University/Temporary working folder/Project/EXperiment2(piezoelectric)/demo2/platformio.ini",
	"owner": "PlatformIO",
	"severity": 8,
	"message": "'utf-8' codec can't decode byte 0xa1 in position 576: invalid start byte",
	"startLineNumber": 1,
	"startColumn": 1,
	"endLineNumber": 1,
	"endColumn": 1
}]

Ah. There was some fancy characters copied, I think. Try with just

monitor_filters =
  time
  log2file
1 Like

Thank you for your reply, what a great way to export my data

This is a very good method, may I ask whether there is a way to save the data at the same time, real-time display of the curve drawn by the data. Such as serial plotter like the kind.

I also used BetterSerialPlotter, but it can only collect 5,000 data at a time.
nathandunk/BetterSerialPlotter: A drop-in replacement for the arduino serial plotter (github.com)