blob: e08f737ed5c431fb5109e1d6146696a956c944f4 [file] [log] [blame]
cliechti22978142009-07-21 01:58:11 +00001====================
2 Short introduction
3====================
4
cliechti86e87872009-07-21 13:32:45 +00005Opening serial ports
6====================
7
Chris Liechtid8137cc2015-09-03 23:09:16 +02008Open port at "9600,8,N,1", no timeout::
cliechti22978142009-07-21 01:58:11 +00009
10 >>> import serial
Chris Liechtid8137cc2015-09-03 23:09:16 +020011 >>> ser = serial.Serial('/dev/ttyUSB0') # open serial port
Chris Liechti90570b92015-08-04 03:32:02 +020012 >>> print(ser.name) # check which port was really used
13 >>> ser.write(b"hello") # write a string
cliechti22978142009-07-21 01:58:11 +000014 >>> ser.close() # close port
15
16Open named port at "19200,8,N,1", 1s timeout::
17
Chris Liechtid8137cc2015-09-03 23:09:16 +020018 >>> with serial.Serial('/dev/ttyS1', 19200, timeout=1) as ser:
19 ... x = ser.read() # read one byte
20 ... s = ser.read(10) # read up to ten bytes (timeout)
21 ... line = ser.readline() # read a '\n' terminated line
cliechti22978142009-07-21 01:58:11 +000022
Chris Liechtid8137cc2015-09-03 23:09:16 +020023Open port at "38400,8,E,1", non blocking HW handshaking::
cliechti22978142009-07-21 01:58:11 +000024
Chris Liechtid8137cc2015-09-03 23:09:16 +020025 >>> ser = serial.Serial('COM3', 38400, timeout=0,
cliechti22978142009-07-21 01:58:11 +000026 ... parity=serial.PARITY_EVEN, rtscts=1)
27 >>> s = ser.read(100) # read up to one hundred bytes
28 ... # or as much is in the buffer
29
cliechti86e87872009-07-21 13:32:45 +000030Configuring ports later
31=======================
32
cliechti22978142009-07-21 01:58:11 +000033Get a Serial instance and configure/open it later::
34
35 >>> ser = serial.Serial()
36 >>> ser.baudrate = 19200
Chris Liechtid8137cc2015-09-03 23:09:16 +020037 >>> ser.port = 'COM1'
cliechti22978142009-07-21 01:58:11 +000038 >>> ser
39 Serial<id=0xa81c10, open=False>(port='COM1', baudrate=19200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0)
40 >>> ser.open()
Chris Liechtid8137cc2015-09-03 23:09:16 +020041 >>> ser.is_open
cliechti22978142009-07-21 01:58:11 +000042 True
43 >>> ser.close()
Chris Liechtid8137cc2015-09-03 23:09:16 +020044 >>> ser.is_open
cliechti22978142009-07-21 01:58:11 +000045 False
46
cliechti86e87872009-07-21 13:32:45 +000047Readline
48========
cliechtifbe5ae72011-08-05 00:50:21 +000049Be carefully when using :meth:`readline`. Do specify a timeout when opening the
cliechti22978142009-07-21 01:58:11 +000050serial port otherwise it could block forever if no newline character is
cliechtifbe5ae72011-08-05 00:50:21 +000051received. Also note that :meth:`readlines` only works with a timeout.
52:meth:`readlines` depends on having a timeout and interprets that as EOF (end
53of file). It raises an exception if the port is not opened correctly.
cliechti86e87872009-07-21 13:32:45 +000054
55Do also have a look at the example files in the examples directory in the
56source distribution or online.
cliechtifbe5ae72011-08-05 00:50:21 +000057
58.. note::
59
60 The ``eol`` parameter for :meth:`readline` is no longer supported when
61 pySerial is run with newer Python versions (V2.6+) where the module
62 :mod:`io` is available.
63
64EOL
65---
66To specify the EOL character for :meth:`readline` or to use universal newline
67mode, it is advised to use io.TextIOWrapper_::
68
69 import serial
70 import io
71 ser = serial.serial_for_url('loop://', timeout=1)
72 sio = io.TextIOWrapper(io.BufferedRWPair(ser, ser))
73
74 sio.write(unicode("hello\n"))
75 sio.flush() # it is buffering. required to get the data out *now*
76 hello = sio.readline()
Chris Liechti90570b92015-08-04 03:32:02 +020077 print(hello == unicode("hello\n"))
cliechtifbe5ae72011-08-05 00:50:21 +000078
79
80.. _io.TextIOWrapper: http://docs.python.org/library/io.html#io.TextIOWrapper
cliechti7bb58832011-08-05 03:55:12 +000081
82
83Testing ports
84=============
85Listing ports
86-------------
87``python -m serial.tools.list_ports`` will print a list of available ports. It
88is also possible to add a regexp as first argument and the list will only
89include entries that matched.
90
91.. note::
92
93 The enumeration may not work on all operating systems. It may be
94 incomplete, list unavailable ports or may lack detailed descriptions of the
95 ports.
96
97.. versionadded: 2.6
98
99Accessing ports
100---------------
cliechti4cb94662013-10-17 03:17:50 +0000101pySerial includes a small console based terminal program called
Chris Liechti90570b92015-08-04 03:32:02 +0200102:ref:`miniterm`. It ca be started with ``python -m serial.tools.miniterm <port_name>``
cliechti7bb58832011-08-05 03:55:12 +0000103(use option ``-h`` to get a listing of all options).