aboutsummaryrefslogtreecommitdiff
path: root/documentation/appendix.rst
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/appendix.rst')
-rw-r--r--documentation/appendix.rst148
1 files changed, 148 insertions, 0 deletions
diff --git a/documentation/appendix.rst b/documentation/appendix.rst
new file mode 100644
index 0000000..fe03954
--- /dev/null
+++ b/documentation/appendix.rst
@@ -0,0 +1,148 @@
+==========
+ Appendix
+==========
+
+How To
+======
+
+Enable :rfc:`2217` (and other URL handlers) in programs using pySerial.
+ Patch the code where the :class:`serial.Serial` is instantiated.
+ E.g. replace::
+
+ s = serial.Serial(...)
+
+ it with::
+
+ s = serial.serial_for_url(...)
+
+ or for backwards compatibility to old pySerial installations::
+
+ try:
+ s = serial.serial_for_url(...)
+ except AttributeError:
+ s = serial.Serial(...)
+
+ Assuming the application already stores port names as strings that's all
+ that is required. The user just needs a way to change the port setting of
+ your application to an ``rfc2217://`` :ref:`URL <URLs>` (e.g. by editing a
+ configuration file, GUI dialog etc.).
+
+ Please note that this enables all :ref:`URL <URLs>` types supported by
+ pySerial and that those involving the network are unencrypted and not
+ protected against eavesdropping.
+
+Test your setup.
+ Is the device not working as expected? Maybe it's time to check the
+ connection before proceeding. :ref:`miniterm` from the :ref:`examples`
+ can be used to open the serial port and do some basic tests.
+
+ To test cables, connecting RX to TX (loop back) and typing some characters
+ in :ref:`miniterm` is a simple test. When the characters are displayed
+ on the screen, then at least RX and TX work (they still could be swapped
+ though).
+
+ There is also a ``spy:://`` URL handler. It prints all calls (read/write,
+ control lines) to the serial port to a file or stderr. See :ref:`spy`
+ for details.
+
+
+FAQ
+===
+Example works in :ref:`miniterm` but not in script.
+ The RTS and DTR lines are switched when the port is opened. This may cause
+ some processing or reset on the connected device. In such a cases an
+ immediately following call to :meth:`write` may not be received by the
+ device.
+
+ A delay after opening the port, before the first :meth:`write`, is
+ recommended in this situation. E.g. a ``time.sleep(1)``
+
+
+Application works when .py file is run, but fails when packaged (py2exe etc.)
+ py2exe and similar packaging programs scan the sources for import
+ statements and create a list of modules that they package. pySerial may
+ create two issues with that:
+
+ - implementations for other modules are found. On Windows, it's safe to
+ exclude 'serialposix', 'serialjava' and 'serialcli' as these are not
+ used.
+
+ - :func:`serial.serial_for_url` does a dynamic lookup of protocol handlers
+ at runtime. If this function is used, the desired handlers have to be
+ included manually (e.g. 'serial.urlhandler.protocol_socket',
+ 'serial.urlhandler.protocol_rfc2217', etc.). This can be done either with
+ the "includes" option in ``setup.py`` or by a dummy import in one of the
+ packaged modules.
+
+User supplied URL handlers
+ :func:`serial.serial_for_url` can be used to access "virtual" serial ports
+ identified by an :ref:`URL <URLs>` scheme. E.g. for the :rfc:`2217`:
+ ``rfc2217://``.
+
+ Custom :ref:`URL <URLs>` handlers can be added by extending the module
+ search path in :data:`serial.protocol_handler_packages`. This is possible
+ starting from pySerial V2.6.
+
+``Permission denied`` errors
+ On POSIX based systems, the user usually needs to be in a special group to
+ have access to serial ports.
+
+ On Debian based systems, serial ports are usually in the group ``dialout``,
+ so running ``sudo adduser $USER dialout`` (and logging-out and -in) enables
+ the user to access the port.
+
+Parity on Raspberry Pi
+ The Raspi has one full UART and a restricted one. On devices with built
+ in wireless (WIFI/BT) use the restricted one on the GPIO header pins.
+ If enhanced features are required, it is possible to swap UARTs, see
+ https://www.raspberrypi.org/documentation/configuration/uart.md
+
+Support for Python 2.6 or earlier
+ Support for older Python releases than 2.7 will not return to pySerial 3.x.
+ Python 2.7 is now many years old (released 2010). If you insist on using
+ Python 2.6 or earlier, it is recommend to use pySerial `2.7`_
+ (or any 2.x version).
+
+.. _`2.7`: https://pypi.python.org/pypi/pyserial/2.7
+
+
+Related software
+================
+
+com0com - http://com0com.sourceforge.net/
+ Provides virtual serial ports for Windows.
+
+
+License
+=======
+Copyright (c) 2001-2020 Chris Liechti <cliechti@gmx.net>
+All Rights Reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ * Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+