EIA-ASCII-ISO encoding

From wiki.bastelbude.grade.de
Revision as of 16:01, 17 September 2019 by Kannix (talk | contribs) (conversion charts)
Jump to: navigation, search

trivia

  • old NC-maschines might use EIA or ISO 'paper-tape' encoding on serial-communication

links

conversion charts

char EIA ASCII ISO remark
(hex) (dec) (hex) (dec) (hex) (dec)
BS 2A 42 08 8 88 136 BACKSPACE HT 33 51 09 9 09 9 HORIZONTAL TABULATION LF 80 128 0A 10 0A 10 LINE FEED EOB CR 0D 13 8D 141 CARRIAGE RETURN 10 16 20 32 A0 160 SPACE $ 24 36 24 36 DOLLAR SIGN % 5B 91 25 37 A5 165 PERCENT SIGN EOR – Rewind Stop in ASCII & 0E 14 26 38 A6 166 AMPERSAND ( 1A 26 28 40 28 40 LEFT PARENTHESIS ) 4A 74 29 41 A9 169 RIGHT PARENTHESIS + 70 112 2B 43 2B 43 PLUS SIGN , 3B 59 2C 44 COMMA - 40 64 2D 45 2D 45 HYPHEN-MINUS . 6B 107 2E 46 2E 46 FULL STOP / 31 49 2F 47 AF 175 SOLIDUS 0 20 32 30 48 30 48 DIGIT ZERO 1 01 1 31 49 B1 177 DIGIT ONE 2 02 2 32 50 B2 178 DIGIT TWO 3 13 19 33 51 33 51 DIGIT THREE 4 04 4 34 52 B4 180 DIGIT FOUR 5 15 21 35 53 35 53 DIGIT FIVE 6 16 22 36 54 36 54 DIGIT SIX 7 07 7 37 55 B7 183 DIGIT SEVEN 8 08 8 38 56 B8 184 DIGIT EIGHT 9 19 25 39 57 39 57 DIGIT NINE : 3A 58 3A 58 COLON = 3D 61 BD 189 EQUALS SIGN @ 40 64 C0 192 COMMERCIAL AT A 61 97 41 65 41 65 LATIN CAPITAL LETTER A B 62 98 42 66 42 66 LATIN CAPITAL LETTER B C 73 115 43 67 C3 195 LATIN CAPITAL LETTER C D 64 100 44 68 44 68 LATIN CAPITAL LETTER D E 75 117 45 69 C5 197 LATIN CAPITAL LETTER E F 76 118 46 70 C6 198 LATIN CAPITAL LETTER F G 67 103 47 71 47 71 LATIN CAPITAL LETTER G H 68 104 48 72 48 72 LATIN CAPITAL LETTER H I 79 121 49 73 C9 201 LATIN CAPITAL LETTER I J 51 81 4A 74 CA 202 LATIN CAPITAL LETTER J K 52 82 4B 75 4B 75 LATIN CAPITAL LETTER K L 43 67 4C 76 CC 204 LATIN CAPITAL LETTER L M 54 84 4D 77 4D 77 LATIN CAPITAL LETTER M N 45 69 4E 78 4E 78 LATIN CAPITAL LETTER N O 46 70 4F 79 CF 207 LATIN CAPITAL LETTER O P 57 87 50 80 50 80 LATIN CAPITAL LETTER P Q 58 88 51 81 D1 209 LATIN CAPITAL LETTER Q R 49 73 52 82 D2 210 LATIN CAPITAL LETTER R S 32 50 53 83 53 83 LATIN CAPITAL LETTER S T 23 35 54 84 D4 212 LATIN CAPITAL LETTER T U 34 52 55 85 55 85 LATIN CAPITAL LETTER U V 25 37 56 86 56 86 LATIN CAPITAL LETTER V W 26 38 57 87 D7 215 LATIN CAPITAL LETTER W X 37 55 58 88 D8 216 LATIN CAPITAL LETTER X Y 38 56 59 89 59 89 LATIN CAPITAL LETTER Y Z 29 41 5A 90 5A 90 LATIN CAPITAL LETTER Z

pySerial

ubuntu

prerequisites

  • sudo apt-get install socat
  • sudo apt install python-pip
  • pip install pyserial

virtual null-modem

  • terminal[1]
    • sudo socat PTY,link=/dev/ttyS10 PTY,link=/dev/ttyS11

hack encodings

  • sudo cp usr/lip/python2.7/encodings/hp_roman8.py usr/lip/python2.7/encodings/iso_paper.py
  • edit iso_paper.py as needed ...
""" Python Character Mapping Codec 'ISO_paper tape'
    see https://bastelbude.grade.de/mediawiki/index.php?title=EIA-ASCII-ISO_encoding for details
    valid: 
    [BACKSPACE] [HORIZONTAL TABULATION] [LINE FEED] [CARRIAGE RETURN] [SPACE]
    $ % & ( ) + - . / 
    0 1 2 3 4 5 6 7 8 9 
    : = @ 
    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
"""#"

import codecs

### Codec APIs

class Codec(codecs.Codec):

    def encode(self,input,errors='strict'):
        return codecs.charmap_encode(input,errors,encoding_map)

    def decode(self,input,errors='strict'):
        return codecs.charmap_decode(input,errors,decoding_map)

class IncrementalEncoder(codecs.IncrementalEncoder):
    def encode(self, input, final=False):
        return codecs.charmap_encode(input,self.errors,encoding_map)[0]

class IncrementalDecoder(codecs.IncrementalDecoder):
    def decode(self, input, final=False):
        return codecs.charmap_decode(input,self.errors,decoding_map)[0]

class StreamWriter(Codec,codecs.StreamWriter):
    pass

class StreamReader(Codec,codecs.StreamReader):
    pass

### encodings module API

def getregentry():
    return codecs.CodecInfo(
        name='iso-paper',
        encode=Codec().encode,
        decode=Codec().decode,
        incrementalencoder=IncrementalEncoder,
        incrementaldecoder=IncrementalDecoder,
        streamwriter=StreamWriter,
        streamreader=StreamReader,
    )

### Decoding Map

decoding_map = codecs.make_identity_dict(range(256))
decoding_map.update({
        0x0008: None, #        needs to be set for encoding_map
        0x000d: None, #        needs to be set for encoding_map
        0x0020: None, #        needs to be set for encoding_map
        0x0025: None, #        needs to be set for encoding_map
        0x0026: None, #        needs to be set for encoding_map
        0x0029: None, #        needs to be set for encoding_map
        0x002c: None, #        needs to be set for encoding_map
        0x002f: None, #        needs to be set for encoding_map
        0x0031: None, #        needs to be set for encoding_map
        0x0032: None, #        needs to be set for encoding_map
        0x0034: None, #        needs to be set for encoding_map
        0x0037: None, #        needs to be set for encoding_map
        0x0038: None, #        needs to be set for encoding_map
        0x003d: None, #        needs to be set for encoding_map
        0x0040: None, #        needs to be set for encoding_map
        0x0043: None, #        needs to be set for encoding_map
        0x0045: None, #        needs to be set for encoding_map
        0x0046: None, #        needs to be set for encoding_map
        0x0049: None, #        needs to be set for encoding_map
        0x004a: None, #        needs to be set for encoding_map
        0x004c: None, #        needs to be set for encoding_map
        0x004f: None, #        needs to be set for encoding_map
        0x0051: None, #        needs to be set for encoding_map
        0x0052: None, #        needs to be set for encoding_map
        0x0054: None, #        needs to be set for encoding_map
        0x0057: None, #        needs to be set for encoding_map
        0x0058: None, #        needs to be set for encoding_map
        0x0088: 0x0008, #        BACKSPACE
        0x0009: 0x0009, #        HORIZONTAL TABULATION
        0x000A: 0x000A, #        LINE FEED
        0x008D: 0x000D, #        CARRIAGE RETURN
        0x00A0: 0x0020, #        SPACE
        0x0024: 0x0024, #        DOLLAR SIGN
        0x00A5: 0x0025, #        PERCENT SIGN
        0x00A6: 0x0026, #        AMPERSAND
        0x0028: 0x0028, #        LEFT PARENTHESIS
        0x00A9: 0x0029, #        RIGHT PARENTHESIS
        0x002B: 0x002B, #        PLUS SIGN
        0x002D: 0x002D, #        HYPHEN-MINUS
        0x002E: 0x002E, #        FULL STOP
        0x00AF: 0x002F, #        SOLIDUS
        0x0030: 0x0030, #        DIGIT ZERO
        0x00B1: 0x0031, #        DIGIT ONE
        0x00B2: 0x0032, #        DIGIT TWO
        0x0033: 0x0033, #        DIGIT THREE
        0x00B4: 0x0034, #        DIGIT FOUR
        0x0035: 0x0035, #        DIGIT FIVE
        0x0036: 0x0036, #        DIGIT SIX
        0x00B7: 0x0037, #        DIGIT SEVEN
        0x00B8: 0x0038, #        DIGIT EIGHT
        0x0039: 0x0039, #        DIGIT NINE
        0x003A: 0x003A, #        COLON
        0x00BD: 0x003D, #        EQUALS SIGN
        0x00C0: 0x0040, #        COMMERCIAL AT
        0x0041: 0x0041, #        LATIN CAPITAL LETTER A
        0x0042: 0x0042, #        LATIN CAPITAL LETTER B
        0x00C3: 0x0043, #        LATIN CAPITAL LETTER C
        0x0044: 0x0044, #        LATIN CAPITAL LETTER D
        0x00C5: 0x0045, #        LATIN CAPITAL LETTER E
        0x00C6: 0x0046, #        LATIN CAPITAL LETTER F
        0x0047: 0x0047, #        LATIN CAPITAL LETTER G
        0x0048: 0x0048, #        LATIN CAPITAL LETTER H
        0x00C9: 0x0049, #        LATIN CAPITAL LETTER I
        0x00CA: 0x004A, #        LATIN CAPITAL LETTER J
        0x004B: 0x004B, #        LATIN CAPITAL LETTER K
        0x00CC: 0x004C, #        LATIN CAPITAL LETTER L
        0x004D: 0x004D, #        LATIN CAPITAL LETTER M
        0x004E: 0x004E, #        LATIN CAPITAL LETTER N
        0x00CF: 0x004F, #        LATIN CAPITAL LETTER O
        0x0050: 0x0050, #        LATIN CAPITAL LETTER P
        0x00D1: 0x0051, #        LATIN CAPITAL LETTER Q
        0x00D2: 0x0052, #        LATIN CAPITAL LETTER R
        0x0053: 0x0053, #        LATIN CAPITAL LETTER S
        0x00D4: 0x0054, #        LATIN CAPITAL LETTER T
        0x0055: 0x0055, #        LATIN CAPITAL LETTER U
        0x0056: 0x0056, #        LATIN CAPITAL LETTER V
        0x00D7: 0x0057, #        LATIN CAPITAL LETTER W
        0x00D8: 0x0058, #        LATIN CAPITAL LETTER X
        0x0059: 0x0059, #        LATIN CAPITAL LETTER Y
        0x005A: 0x005A, #        LATIN CAPITAL LETTER Z
})

### Encoding Map

encoding_map = codecs.make_encoding_map(decoding_map)

run miniterm

  • terminal[2]
    • sudo python -m serial.tools.miniterm --echo --encoding hexlify
  • terminal[3]
    • sudo python -m serial.tools.miniterm --encoding iso-paper

windows

prerequisites

  • ...

virtual null-modem

reference

hack encodings

  • ...

run miniterm

  • ...