BZZT! (as Mike pointed out ;-) What do you mean "see"?
... print
... for bot4 in xrange(16):
... rep = repr(chr(top4<<4|bot4))[1:-1]
... print '%4s'%(rep,),
...
\x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \t \n \x0b \x0c \r \x0e \x0f
\x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 \x1a \x1b \x1c \x1d \x1e \x1f
! " # $ % & ' ( ) * + , - . /
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 [ \\ ] ^ _
` 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 { | } ~ \x7f
\x80 \x81 \x82 \x83 \x84 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f
\x90 \x91 \x92 \x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e \x9f
\xa0 \xa1 \xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae \xaf
\xb0 \xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd \xbe \xbf
\xc0 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce \xcf
\xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd \xde \xdf
\xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec \xed \xee \xef
\xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb \xfc \xfd \xfe \xff
All 256 accounted for ;-)
I am concerned because I do not know the effect of writing null
character to the device connected to the serial byte.
There should not be a null character passed to the device unless you
explicitly put it in the string data itself, e.g., '\x40\x00' is chr(0x40)
followed by a null byte in a 2-byte string. There is no additional terminating byte.
This does mean that if you do pass a string like 'one\x00two' and access it
as a C string, you will just see the first part. OTOH, you could pass a typical
C string _list_ ended by a null C string like 'one\x00two\x00three\x00\x00' (that
last \x00 is the null string).
I wish to send a single byte to the serial port and nothing more.
Did you try ser.write(byte) as above? What happened?
ser.write('\x40')
should be the equivalent of
byte = chr(0x40)
ser.write(byte)
De nada, HTH ;-)
Regards,
Bengt Richter