Post by SoftwareTesterPost by SoftwareTesterI assume the string print ser.write() will append null characters to the end.
Why do you assume that? Its not said anywhere, and its wrong. A string
consists only of the characters you can "see" - if python usues C
convention for 0-termination or othear means is an implementation detail
none of your concern.
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 ;-)
Post by SoftwareTesterPost by SoftwareTesterbyte = chr(0x40)
ser.write(byte)
type(byte)
<type 'str'>
Its a string as well.
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).
Post by SoftwareTesterI 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