Server : Apache/2.4.18 (Ubuntu) System : Linux canvaswebdesign 3.13.0-71-generic #114-Ubuntu SMP Tue Dec 1 02:34:22 UTC 2015 x86_64 User : oppastar ( 1041) PHP Version : 7.0.33-0ubuntu0.16.04.15 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, Directory : /usr/lib/python3/dist-packages/serial/tools/ |
Upload File : |
#! python # # This is a codec to create and decode hexdumps with spaces between characters. used by miniterm. # # This file is part of pySerial. https://github.com/pyserial/pyserial # (C) 2011 Chris Liechti <cliechti@gmx.net> # # SPDX-License-Identifier: BSD-3-Clause """\ Python 'hex' Codec - 2-digit hex with spaces content transfer encoding. """ import codecs import serial HEXDIGITS = '0123456789ABCDEF' ### Codec APIs def hex_encode(input, errors='strict'): return (serial.to_bytes([int(h, 16) for h in input.split()]), len(input)) def hex_decode(input, errors='strict'): return (''.join('{:02X} '.format(b) for b in input), len(input)) class Codec(codecs.Codec): def encode(self, input, errors='strict'): return serial.to_bytes([int(h, 16) for h in input.split()]) def decode(self, input, errors='strict'): return ''.join('{:02X} '.format(b) for b in input) class IncrementalEncoder(codecs.IncrementalEncoder): def __init__(self, errors='strict'): self.errors = errors self.state = 0 def reset(self): self.state = 0 def getstate(self): return self.state def setstate(self, state): self.state = state def encode(self, input, final=False): state = self.state encoded = [] for c in input.upper(): if c in HEXDIGITS: z = HEXDIGITS.index(c) if state: encoded.append(z + (state & 0xf0)) state = 0 else: state = 0x100 + (z << 4) elif c == ' ': # allow spaces to separate values if state and self.errors == 'strict': raise UnicodeError('odd number of hex digits') state = 0 else: if self.errors == 'strict': raise UnicodeError('non-hex digit found: %r' % c) self.state = state return serial.to_bytes(encoded) class IncrementalDecoder(codecs.IncrementalDecoder): def decode(self, input, final=False): return ''.join('{:02X} '.format(b) for b in input) class StreamWriter(Codec, codecs.StreamWriter): pass class StreamReader(Codec, codecs.StreamReader): pass ### encodings module API def getregentry(): return codecs.CodecInfo( name='hexlify', encode=hex_encode, decode=hex_decode, incrementalencoder=IncrementalEncoder, incrementaldecoder=IncrementalDecoder, streamwriter=StreamWriter, streamreader=StreamReader, _is_text_encoding=True, )