From 3dd3ea1c355894e4038fe57ce9c4cae129ba6bc5 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 18 Mar 2020 18:55:54 +0200 Subject: [PATCH] Show a hexadecimal representation of the data (code point of each character) with ``hexlify`` filter --- HISTORY.rst | 1 + docs | 2 +- platformio/commands/device/filters/hexlify.py | 38 +++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 platformio/commands/device/filters/hexlify.py diff --git a/HISTORY.rst b/HISTORY.rst index f5806fa1..1ad463f8 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -25,6 +25,7 @@ PlatformIO Core 4 - `Capture device monitor output to a file `__ with ``log2file`` filter (`issue #670 `_) - Show a timestamp for each new line with ``time`` filter (`issue #981 `_) - Send a text to device on ENTER with ``send_on_enter`` filter (`issue #926 `_) + - Show a hexadecimal representation of the data (code point of each character) with ``hexlify`` filter * Added support for Arm Mbed "module.json" ``dependencies`` field (`issue #3400 `_) * Improved support for Arduino "library.properties" ``depends`` field diff --git a/docs b/docs index 4e1c19c7..03c5eb48 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit 4e1c19c77a8438b8cd6027307142b851127720db +Subproject commit 03c5eb487fe7abd85745a6810bab06eaf29b5a81 diff --git a/platformio/commands/device/filters/hexlify.py b/platformio/commands/device/filters/hexlify.py new file mode 100644 index 00000000..1023b573 --- /dev/null +++ b/platformio/commands/device/filters/hexlify.py @@ -0,0 +1,38 @@ +# Copyright (c) 2014-present PlatformIO +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import serial + +from platformio.commands.device import DeviceMonitorFilter + + +class Hexlify(DeviceMonitorFilter): + NAME = "hexlify" + + def __init__(self, *args, **kwargs): + super(Hexlify, self).__init__(*args, **kwargs) + self._counter = 0 + + def rx(self, text): + result = "" + for b in serial.iterbytes(text): + if (self._counter % 16) == 0: + result += "\n{:04X} | ".format(self._counter) + asciicode = ord(b) + if asciicode <= 255: + result += "{:02X} ".format(asciicode) + else: + result += "?? " + self._counter += 1 + return result