From 05ce19447826dab412f04ae44623d52fe6630ec3 Mon Sep 17 00:00:00 2001 From: Moirtz Wagner Date: Wed, 2 Sep 2026 20:55:26 +0200 Subject: [PATCH] Zeiterfassung und pyserial entfernt zeit.py las eine Stempeluhr ueber die serielle Schnittstelle aus und schrieb in die Tabelle zeiten. Kein Startskript rief es auf, kein Modul importierte es. Damit faellt auch pyserial weg - ausser zwei Testdateien in sunspec2, die nicht ausgefuehrt werden, hat serial keinen Nutzer mehr. Co-Authored-By: Claude Opus 5 --- pyserial-master.zip | Bin 202391 -> 0 bytes pyserial-master/pyserial-master/.gitignore | 13 - pyserial-master/pyserial-master/.travis.yml | 16 - pyserial-master/pyserial-master/CHANGES.rst | 825 ---------- pyserial-master/pyserial-master/LICENSE.txt | 39 - pyserial-master/pyserial-master/MANIFEST.in | 39 - pyserial-master/pyserial-master/README.rst | 56 - .../pyserial-master/documentation/Makefile | 88 -- .../documentation/appendix.rst | 148 -- .../pyserial-master/documentation/conf.py | 200 --- .../documentation/examples.rst | 274 ---- .../pyserial-master/documentation/index.rst | 44 - .../documentation/pyserial.png | Bin 7050 -> 0 bytes .../documentation/pyserial.rst | 145 -- .../documentation/pyserial_api.rst | 1309 ---------------- .../documentation/shortintro.rst | 123 -- .../pyserial-master/documentation/tools.rst | 291 ---- .../documentation/url_handlers.rst | 274 ---- .../pyserial-master/examples/at_protocol.py | 154 -- .../examples/port_publisher.py | 578 ------- .../examples/port_publisher.sh | 44 - .../examples/rfc2217_server.py | 188 --- .../examples/setup-miniterm-py2exe.py | 33 - .../examples/setup-rfc2217_server-py2exe.py | 31 - .../examples/setup-wxTerminal-py2exe.py | 41 - .../examples/tcp_serial_redirect.py | 230 --- .../examples/wxSerialConfigDialog.py | 293 ---- .../examples/wxSerialConfigDialog.wxg | 252 --- .../pyserial-master/examples/wxTerminal.py | 367 ----- .../pyserial-master/examples/wxTerminal.wxg | 154 -- pyserial-master/pyserial-master/pylintrc | 378 ----- .../pyserial-master/requirements.txt | 0 pyserial-master/pyserial-master/setup.cfg | 7 - pyserial-master/pyserial-master/setup.py | 108 -- .../pyserial-master/test/handlers/__init__.py | 0 .../test/handlers/protocol_test.py | 202 --- .../pyserial-master/test/run_all_tests.py | 55 - pyserial-master/pyserial-master/test/test.py | 233 --- .../pyserial-master/test/test_advanced.py | 161 -- .../pyserial-master/test/test_asyncio.py | 82 - .../pyserial-master/test/test_cancel.py | 109 -- .../pyserial-master/test/test_close.py | 58 - .../pyserial-master/test/test_context.py | 49 - .../pyserial-master/test/test_exclusive.py | 59 - .../pyserial-master/test/test_high_load.py | 76 - .../pyserial-master/test/test_iolib.py | 61 - .../pyserial-master/test/test_pty.py | 54 - .../pyserial-master/test/test_readline.py | 104 -- .../pyserial-master/test/test_rfc2217.py | 42 - .../pyserial-master/test/test_rs485.py | 67 - .../test/test_settings_dict.py | 80 - .../pyserial-master/test/test_threaded.py | 75 - .../test/test_timeout_class.py | 66 - .../pyserial-master/test/test_url.py | 51 - .../pyserial-master/test/test_util.py | 36 - serial/__init__.py | 91 -- serial/__main__.py | 3 - serial/rfc2217.py | 1351 ----------------- serial/rs485.py | 94 -- serial/serialcli.py | 253 --- serial/serialjava.py | 251 --- serial/serialposix.py | 907 ----------- serial/serialutil.py | 707 --------- serial/serialwin32.py | 477 ------ serial/threaded/__init__.py | 297 ---- serial/tools/__init__.py | 0 serial/tools/hexlify_codec.py | 126 -- serial/tools/list_ports.py | 110 -- serial/tools/list_ports_common.py | 121 -- serial/tools/list_ports_linux.py | 112 -- serial/tools/list_ports_osx.py | 299 ---- serial/tools/list_ports_posix.py | 119 -- serial/tools/list_ports_windows.py | 427 ------ serial/tools/miniterm.py | 1071 ------------- serial/urlhandler/__init__.py | 0 serial/urlhandler/protocol_alt.py | 57 - serial/urlhandler/protocol_cp2110.py | 258 ---- serial/urlhandler/protocol_hwgrep.py | 91 -- serial/urlhandler/protocol_loop.py | 308 ---- serial/urlhandler/protocol_rfc2217.py | 12 - serial/urlhandler/protocol_socket.py | 359 ----- serial/urlhandler/protocol_spy.py | 337 ---- serial/win32.py | 366 ----- zeit.py | 98 -- 84 files changed, 17164 deletions(-) delete mode 100644 pyserial-master.zip delete mode 100644 pyserial-master/pyserial-master/.gitignore delete mode 100644 pyserial-master/pyserial-master/.travis.yml delete mode 100644 pyserial-master/pyserial-master/CHANGES.rst delete mode 100644 pyserial-master/pyserial-master/LICENSE.txt delete mode 100644 pyserial-master/pyserial-master/MANIFEST.in delete mode 100644 pyserial-master/pyserial-master/README.rst delete mode 100644 pyserial-master/pyserial-master/documentation/Makefile delete mode 100644 pyserial-master/pyserial-master/documentation/appendix.rst delete mode 100644 pyserial-master/pyserial-master/documentation/conf.py delete mode 100644 pyserial-master/pyserial-master/documentation/examples.rst delete mode 100644 pyserial-master/pyserial-master/documentation/index.rst delete mode 100644 pyserial-master/pyserial-master/documentation/pyserial.png delete mode 100644 pyserial-master/pyserial-master/documentation/pyserial.rst delete mode 100644 pyserial-master/pyserial-master/documentation/pyserial_api.rst delete mode 100644 pyserial-master/pyserial-master/documentation/shortintro.rst delete mode 100644 pyserial-master/pyserial-master/documentation/tools.rst delete mode 100644 pyserial-master/pyserial-master/documentation/url_handlers.rst delete mode 100644 pyserial-master/pyserial-master/examples/at_protocol.py delete mode 100644 pyserial-master/pyserial-master/examples/port_publisher.py delete mode 100644 pyserial-master/pyserial-master/examples/port_publisher.sh delete mode 100644 pyserial-master/pyserial-master/examples/rfc2217_server.py delete mode 100644 pyserial-master/pyserial-master/examples/setup-miniterm-py2exe.py delete mode 100644 pyserial-master/pyserial-master/examples/setup-rfc2217_server-py2exe.py delete mode 100644 pyserial-master/pyserial-master/examples/setup-wxTerminal-py2exe.py delete mode 100644 pyserial-master/pyserial-master/examples/tcp_serial_redirect.py delete mode 100644 pyserial-master/pyserial-master/examples/wxSerialConfigDialog.py delete mode 100644 pyserial-master/pyserial-master/examples/wxSerialConfigDialog.wxg delete mode 100644 pyserial-master/pyserial-master/examples/wxTerminal.py delete mode 100644 pyserial-master/pyserial-master/examples/wxTerminal.wxg delete mode 100644 pyserial-master/pyserial-master/pylintrc delete mode 100644 pyserial-master/pyserial-master/requirements.txt delete mode 100644 pyserial-master/pyserial-master/setup.cfg delete mode 100644 pyserial-master/pyserial-master/setup.py delete mode 100644 pyserial-master/pyserial-master/test/handlers/__init__.py delete mode 100644 pyserial-master/pyserial-master/test/handlers/protocol_test.py delete mode 100644 pyserial-master/pyserial-master/test/run_all_tests.py delete mode 100644 pyserial-master/pyserial-master/test/test.py delete mode 100644 pyserial-master/pyserial-master/test/test_advanced.py delete mode 100644 pyserial-master/pyserial-master/test/test_asyncio.py delete mode 100644 pyserial-master/pyserial-master/test/test_cancel.py delete mode 100644 pyserial-master/pyserial-master/test/test_close.py delete mode 100644 pyserial-master/pyserial-master/test/test_context.py delete mode 100644 pyserial-master/pyserial-master/test/test_exclusive.py delete mode 100644 pyserial-master/pyserial-master/test/test_high_load.py delete mode 100644 pyserial-master/pyserial-master/test/test_iolib.py delete mode 100644 pyserial-master/pyserial-master/test/test_pty.py delete mode 100644 pyserial-master/pyserial-master/test/test_readline.py delete mode 100644 pyserial-master/pyserial-master/test/test_rfc2217.py delete mode 100644 pyserial-master/pyserial-master/test/test_rs485.py delete mode 100644 pyserial-master/pyserial-master/test/test_settings_dict.py delete mode 100644 pyserial-master/pyserial-master/test/test_threaded.py delete mode 100644 pyserial-master/pyserial-master/test/test_timeout_class.py delete mode 100644 pyserial-master/pyserial-master/test/test_url.py delete mode 100644 pyserial-master/pyserial-master/test/test_util.py delete mode 100644 serial/__init__.py delete mode 100644 serial/__main__.py delete mode 100644 serial/rfc2217.py delete mode 100644 serial/rs485.py delete mode 100644 serial/serialcli.py delete mode 100644 serial/serialjava.py delete mode 100644 serial/serialposix.py delete mode 100644 serial/serialutil.py delete mode 100644 serial/serialwin32.py delete mode 100644 serial/threaded/__init__.py delete mode 100644 serial/tools/__init__.py delete mode 100644 serial/tools/hexlify_codec.py delete mode 100644 serial/tools/list_ports.py delete mode 100644 serial/tools/list_ports_common.py delete mode 100644 serial/tools/list_ports_linux.py delete mode 100644 serial/tools/list_ports_osx.py delete mode 100644 serial/tools/list_ports_posix.py delete mode 100644 serial/tools/list_ports_windows.py delete mode 100644 serial/tools/miniterm.py delete mode 100644 serial/urlhandler/__init__.py delete mode 100644 serial/urlhandler/protocol_alt.py delete mode 100644 serial/urlhandler/protocol_cp2110.py delete mode 100644 serial/urlhandler/protocol_hwgrep.py delete mode 100644 serial/urlhandler/protocol_loop.py delete mode 100644 serial/urlhandler/protocol_rfc2217.py delete mode 100644 serial/urlhandler/protocol_socket.py delete mode 100644 serial/urlhandler/protocol_spy.py delete mode 100644 serial/win32.py delete mode 100644 zeit.py diff --git a/pyserial-master.zip b/pyserial-master.zip deleted file mode 100644 index 1074a7854dce79bc825472f07ea817bae91a686d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202391 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%0Axkqm;3Ui1Hb=v$n%@seY5}`yt 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 QSVT}*KvaxZ04xCd9~Z4jEdT%j diff --git a/pyserial-master/pyserial-master/.gitignore b/pyserial-master/pyserial-master/.gitignore deleted file mode 100644 index fdbfde0..0000000 --- a/pyserial-master/pyserial-master/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -**/__pycache__ -*.pyc -*.pyo -documentation/_build -build -dist -*.egg-info - -/MANIFEST - -.idea -venv -xxx* diff --git a/pyserial-master/pyserial-master/.travis.yml b/pyserial-master/pyserial-master/.travis.yml deleted file mode 100644 index ff48704..0000000 --- a/pyserial-master/pyserial-master/.travis.yml +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright Roger Meier -# SPDX-License-Identifier: BSD-3-Clause - -language: python - -python: - - 2.7 - - 3.4 - - 3.5 - - 3.6 - - pypy - - pypy3 - -script: - - python setup.py install - - python test/run_all_tests.py loop:// diff --git a/pyserial-master/pyserial-master/CHANGES.rst b/pyserial-master/pyserial-master/CHANGES.rst deleted file mode 100644 index ab5a1d5..0000000 --- a/pyserial-master/pyserial-master/CHANGES.rst +++ /dev/null @@ -1,825 +0,0 @@ -======================== - pySerial Release Notes -======================== - -Version 1.0 13 Feb 2002 ---------------------------- -- First public release. -- Split from the pybsl application (see http://mspgcc.sourceforge.net) - -New Features: - -- Added Jython support - - -Version 1.1 14 Feb 2002 ---------------------------- -Bugfixes: - -- Win32, when not specifying a timeout -- Typos in the Docs - -New Features: - -- added ``serialutil`` which provides a base class for the ``Serial`` - objects. - -- ``readline``, ``readlines``, ``writelines`` and ``flush`` are now supported - see README.txt for deatils. - - -Version 1.11 14 Feb 2002 ---------------------------- -Same as 1.1 but added missing files. - - -Version 1.12 18 Feb 2002 ---------------------------- -Removed unneeded constants to fix RH7.x problems. - - -Version 1.13 09 Apr 2002 ---------------------------- -Added alternate way for enabling rtscts (CNEW_RTSCTS is tried too) -If port opening fails, a ``SerialException`` is raised on all platforms - - -Version 1.14 29 May 2002 ---------------------------- -Added examples to archive -Added non-blocking mode for ``timeout=0`` (tnx Mat Martineau) - -Bugfixes: - -- win32 does now return the remaining characters on timeout - - -Version 1.15 04 Jun 2002 ---------------------------- -Bugfixes (win32): - -- removed debug messages -- compatibility to win9x improved - - -Version 1.16 02 Jul 2002 ---------------------------- -Added implementation of RI and corrected RTS/CTS on Win32 - - -Version 1.17 03 Jul 2002 ---------------------------- -Silly mix of two versions in win32 code corrected - - -Version 1.18 06 Dec 2002 ---------------------------- -Bugfixes (general): - -- remove the mapping of flush to the destructive flushOutput as - this is not the expected behaviour. -- readline: EOL character for lines can be chosen idea by - John Florian. - -Bugfixes (posix): - -- cygwin port numbering fixed -- test each and every constant for it's existence in termios module, - use default if not existent (fix for Bug item #640214) -- wrong exception on nonexistent ports with /dev file. bug report - by Louis Cordier - -Bugfixes (win32): - -- RTS/CTS handling as suggested in Bug #635072 -- bugfix of timeouts brought up by Markus Hoffrogge - - -Version 1.19 19 Mar 2003 ---------------------------- -Bugfixes (posix): - -- removed ``dgux`` entry which actually had a wrong comment and is - probably not in use anywhere. - -Bugfixes (win32): - -- added ``int()`` conversion, [Bug 702120] -- remove code to set control lines in close method of win32 - version. [Bug 669625] - - -Version 1.20 28 Aug 2003 ---------------------------- -- Added ``serial.device()`` for all platforms - -Bugfixes (win32): - -- don't recreate overlapped structures and events on each - read/write. -- don't set unneeded event masks. -- don't use DOS device names for ports > 9. -- remove send timeout (it's not used in the linux impl. anyway). - - -Version 1.21 30 Sep 2003 ---------------------------- -Bugfixes (win32): - -- name for COM10 was not built correctly, found by Norm Davis. - -Bugfixes (examples): - -- small change in ``miniterm.py`` that should mage it run on cygwin, - [Bug 809904] submitted by Rolf Campbell. - - -Version 2.0b1 1 Oct 2003 ---------------------------- -Transition to the Python 2.0 series: - -- New implementation only supports Python 2.2+, backwards compatibility - should be maintained almost everywhere. - The OS handles (like the ``hComPort`` or ``fd`` attribute) were prefixed - with an underscore. The different names stay, as anyone that uses one of - these has to write platform specific code anyway. -- Common base class ``serialutil.SerialBase`` for all implementations. -- ``PARITY_NONE``, ``PARITY_EVEN``, ``PARITY_ODD`` constants changed and all - these constants moved to ``serialutil.py`` (still available as - ``serial.PARITY_NONE`` etc. and they should be used that way) -- Added ``serial.PARITY_NAMES`` (implemented in ``serialutil.PARITY_NAMES``). - This dictionary can be used to convert parity constants to meaningful - strings. -- Each Serial class and instance has a list of supported values: - ``BAUDRATES``, ``BYTESIZES``, ``PARITIES``, ``STOPBITS``Ggg - (i.e. ``serial.Serial.BAUDRATES or s = serial.Serial; s.BAUDRATES``) - these values can be used to fill in value sin GUI dialogs etc. -- Creating a ``Serial()`` object without port spec returns an unconfigured, - closed port. Useful if a GUI dialog should take a port and configure - it. -- New methods for ``serial.Serial`` instances: ``open()``, ``isOpen()`` -- A port can be opened and closed as many times as desired. -- Instances of ``serial.Serial`` have ``baudrate``, ``bytesize``, ``timeout`` - etc. attributes implemented as properties, all can be set while the port is - opened. It will then be reconfigured. -- Improved ``__doc__``'s. -- New ``test_advanced.py`` for the property setting/getting testing. -- Small bugfix on posix with get* methods (return value should be true a - boolean). -- added a ``__repr__`` that returns a meaningful string will all the serial - setting, easy for debugging. -- The serialposix module does not throw an exception on unsupported - platforms, the message is still printed. The idea that it may still - work even if the platform itself s not known, it simply tries to do - the posix stuff anyway (It's likely that opening ports by number - fails, but by name it should work). - - -Version 2.0b2 4 Oct 2003 ---------------------------- -- Added serial port configuration dialog for wxPython to the examples. -- Added terminal application for wxPython with wxGlade design file - to the examples. -- Jython support is currently broken as Jython does not have a Python 2.2 - compatible release out yet - - -Version 2.0 6 Nov 2003 ---------------------------- -- Fixes ``setup.py`` for older distutils - - -Version 2.1 28 Jul 2004 ---------------------------- -Bugfixes: - -- Fix XON/XOFF values [Bug 975250] - -Bugfixes (posix): - -- ``fd == 0`` fix from Vsevolod Lobko -- netbsd fixes from Erik Lindgren -- Dynamically lookup baudrates and some cleanups - -Bugfixes (examples): - -- CRLF handling of ``miniterm.py`` should be more consistent on Win32 - and others. Added LF only command line option -- Multithreading fixes to ``wxTerminal.py`` (helps with wxGTK) -- Small change for wxPython 2.5 in ``wxSerialConfigDialog.py`` [Bug 994856] - -New Features: - -- Implement write timeouts (``writeTimeout`` parameter) - - -Version 2.2 31 Jul 2005 ---------------------------- -Bugfixes: - -- [Bug 1014227]: property broken -- [Bug 1105687]: ``serial_tcp_example.py``: ``--localport`` option -- [Bug 1106313]: device (port) strings cannot be unicode - -Bugfixes (posix): - -- [Patch 1043436] Fix for [Bug 1043420] (OSError: EAGAIN) -- [Patch 1102700] ``fileno()`` added -- ensure disabled PARMRK - -Bugfixes (win32): - -- [Patch 983106]: keep RTS/CTS state on port setting changes - -New Features: - -- ``dsrdtr`` setting to enable/disable DSR/DTR flow control independently - from the ``rtscts`` setting. (Currently Win32 only, ignored on other - platforms) - - -Version 2.3 19 Jun 2008 ---------------------------- -New Features: - -- iterator interface. ``for line in Serial(...): ...`` is now possible - Suggested by Bernhard Bender -- ``sendBreak()`` accepts a ``duration`` argument. Default duration increased. -- win32 handles \\.\COMx format automatically for com ports of higher number - (COM10 is internally translated to \\.\COM10 etc.) -- miniterm.py has a new feature to send a file (upload) and configurable - special characters for exit and upload. Refactored internals to class based - structure (upload and class refactoring by Colin D Bennett) - -Bugfixes: - -- [Bug 1451535] TCP/serial redirect example "--help" -- update VERSION variable -- update wxSerialConfigDialog.py and wxTerminal.py compatibility with - wxPython 2.8 (Peleg) -- Check for string in write function. Using unicode causes errors, this - helps catching errors early (Tom Lynn) - -Bugfixes (posix): - -- [Bug 1554183] setRTS/setDTR reference to non existing local "on" -- [Bug 1513653] file descriptor not closed when exception is thrown -- FreeBSD now uses cuadX instead of cuaaX (Patrick Phalen) - -Bugfixes (win32): - -- [Bug 1520357] Handle leak -- [Bug 1679013] Ignore exception raised by SetCommTimeout() in close(). -- [Bug 1938118] process hang forever under XP - - -Version 2.4 6 Jul 2008 ---------------------------- -New Features: - -- [Patch 1616790] pyserial: Add inter-character timeout feature -- [Patch 1924805] add a setBreak function -- Add mark/space parity -- Add .NET/Mono backend (IronPython) - -Bugfixes (posix): - -- [Bug 1783159] Arbitrary baud rates (Linux/Posix) - -Bugfixes (win32): - -- [Patch 1561423] Add mark/space parity, Win32 -- [Bug 2000771] serial port CANNOT be specified by number on windows -- examples/scanwin32.py does no longer return \\.\ names -- fix \\.\ handling for some cases - -Bugfixes (jython): - - - The Jython backend tries javax.comm and gnu.io (Seo Sanghyeon) - - -Version 2.5-rc1 2009-07-30 ---------------------------- -New Features: - -- Python 3.x support (through 2to3) -- compatible with Python io library (Python 2.6+) -- Support for Win32 is now written on the top of ctypes (bundled with - Python 2.5+) instead of pywin32 (patch by Giovanni Bajo). -- 1.5 stop bits (STOPBITS_ONE_POINT_FIVE, implemented on all platforms) -- miniterm application extended (CTRL+T -> menu) -- miniterm.py is now installed as "script" -- add scanlinux.py example -- add port_publisher example -- experimental RFC-2217 server support (examples/rfc2217_server.py) -- add ``getSettingsDict`` and ``applySettingsDict`` serial object methods -- use a ``poll`` based implementation on Posix, instead of a ``select`` based, - provides better error handling [removed again in later releases]. - -Bugfixes: - -- Improve and fix tcp_serial_redirector example. -- [Bug 2603052] 5-bit mode (needs 1.5 stop bits in some cases) - -Bugfixes (posix): - -- [Bug 2810169] Propagate exceptions raised in serialposix _reconfigure -- [Bug 2562610] setting non standard baud rates on Darwin (Emmanuel Blot) - -Bugfixes (win32): - -- [Bug 2469098] parity PARITY_MARK, PARITY_SPACE isn't supported on win32 -- [SF 2446218] outWaiting implemented -- [Bug 2392892] scanwin32.py better exception handling -- [Bug 2505422] scanwin32.py Vista 64bit compatibility - - -Version 2.5-rc2 2010-01-02 ---------------------------- -New Features: - -- Documentation update, now written with Sphinx/ReST -- Updated miniterm.py example -- experimental RFC-2217 client support (serial.rfc2217.Serial, see docs) -- add ``loop://`` device for testing. -- add ``serial.serial_for_url`` factory function (support for native ports and - ``rfc2217``, ``socket`` and ``loop`` URLs) -- add new example: ``rfc2217_server.py`` -- tests live in their own directory now (no longer in examples) - -Bugfixes: - -- [Bug 2915810] Fix for suboption parsing in rfc2217 -- Packaging bug (missed some files) - -Bugfixes (posix): - -- improve write timeout behavior -- [Bug 2836297] move Linux specific constants to not break other platforms -- ``poll`` based implementation for ``read`` is in a separate class - ``PosixPollSerial``, as it is not supported well on all platforms (the - default ``Serial`` class uses select). -- changed error handling in ``read`` so that disconnected devices are - detected. - - -Bugfixes (win32): - -- [Bug 2886763] hComPort doesn't get initialized for Serial(port=None) - - -Version 2.5 2010-07-22 ---------------------------- -New Features: - -- [Bug 2976262] dsrdtr should default to False - ``dsrdtr`` parameter default value changed from ``None`` (follow ``rtscts`` - setting) to ``False``. This means ``rtscts=True`` enables hardware flow - control on RTS/CTS but no longer also on DTR/DSR. This change mostly - affects Win32 as on other platforms, that setting was ignored anyway. -- Improved xreadlines, it is now a generator function that yields lines as they - are received (previously it called readlines which would only return all - lines read after a read-timeout). However xreadlines is deprecated and not - available when the io module is used. Use ``for line in Serial(...):`` - instead. - -Bugfixes: - -- [Bug 2925854] test.py produces exception with python 3.1 -- [Bug 3029812] 2.5rc2 readline(s) doesn't work - -Bugfixes (posix): - -- [BUG 3006606] Nonblocking error - Unix platform - -Bugfixes (win32): - -- [Bug 2998169] Memory corruption at faster transmission speeds. - (bug introduced in 2.5-rc1) - - -Version 2.6 2011-11-02 ---------------------------- -New Features: - -- Moved some of the examples to serial.tools so that they can be used - with ``python -m`` -- serial port enumeration now included as ``serial.tools.list_ports`` -- URL handlers for ``serial_for_url`` are now imported dynamically. This allows - to add protocols w/o editing files. The list - ``serial.protocol_handler_packages`` can be used to add or remove user - packages with protocol handlers (see docs for details). -- new URL type: hwgrep:// uses list_ports module to search for ports - by their description -- several internal changes to improve Python 3.x compatibility (setup.py, - use of absolute imports and more) - -Bugfixes: - -- [Bug 3093882] calling open() on an already open port now raises an exception -- [Bug 3245627] connection-lost let rfc2217 hangs in closed loop -- [Patch 3147043] readlines() to support multi-character eol - -Bugfixes (posix): - -- [Patch 3316943] Avoid unneeded termios.tcsetattr calls in serialposix.py -- [Patch 2912349] Serial Scan as a Module with Mac Support - -Bugfixes (win32): - -- [Bug 3057499] writeTimeoutError when write Timeout is 0 -- [Bug 3414327] Character out of range in list_ports_windows -- [Patch 3036175] Windows 98 Support fix -- [Patch 3054352] RTS automatic toggle, for RS485 functionality. -- Fix type definitions for 64 bit Windows compatibility - - -Version 2.7 2013-10-17 ---------------------------- -- Win32: setRTS and setDTR can be called before the port is opened and it will - set the initial state on port open. -- Posix: add platform specific method: outWaiting (already present for Win32) -- Posix: rename flowControl to setXON to match name on Win32, add - flowControlOut function -- rfc2217: zero polls value (baudrate, data size, stop bits, parity) (Erik - Lundh) -- Posix: [Patch pyserial:28] Accept any speed on Linux [update] -- Posix: [Patch pyserial:29] PosixSerial.read() should "ignore" errno.EINTR -- OSX: [Patch pyserial:27] Scan by VendorID/Product ID for USB Serial devices -- Ensure working with bytes in write() calls - -Bugfixes: - -- [Bug 3540332] SerialException not returned -- [Bug pyserial:145] Error in socket_connection.py -- [Bug pyserial:135] reading from socket with timeout=None causes TypeError -- [Bug pyserial:130] setup.py should not append py3k to package name -- [Bug pyserial:117] no error on lost conn w/socket:// - -Bugfixes (posix): - -- [Patch 3462364] Fix: NameError: global name 'base' is not defined -- list_ports and device() for BSD updated (Anders Langworthy) -- [Bug 3518380] python3.2 -m serial.tools.list_ports error -- [Bug pyserial:137] Patch to add non-standard baudrates to Cygwin -- [Bug pyserial:141] open: Pass errno from IOError to SerialException -- [Bug pyserial:125] Undefined 'base' on list_ports_posix.py, function usb_lsusb -- [Bug pyserial:151] Serial.write() without a timeout uses 100% CPU on POSIX -- [Patch pyserial:30] [PATCH 1/1] serial.Serial() should not raise IOError. - -Bugfixes (win32): - -- [Bug 3444941] ctypes.WinError() unicode error -- [Bug 3550043] on Windows in tools global name 'GetLastError' is not defined -- [Bug pyserial:146] flush() does nothing in windows (despite docs) -- [Bug pyserial:144] com0com ports ignored due to missing "friendly name" -- [Bug pyserial:152] Cannot configure port, some setting was wrong. Can leave - port handle open but port not accessible - - -Version 3.0a0 2015-09-22 --------------------------- -- Starting from this release, only Python 2.7 and 3.2 (or newer) are supported. - The source code is compatible to the 2.x and 3.x series without any changes. - The support for earlier Python versions than 2.7 is removed, please refer to - the pyserial-legacy (V2.x) series if older Python versions are a - requirement). -- Development moved to github, update links in docs. -- API changes: properties for ``rts``, ``dtr``, ``cts``, ``dsr``, ``cd``, ``ri``, - ``in_waiting`` (instead of get/set functions) -- remove file ``FileLike`` class, add ``read_until`` and ``iread_until`` to - ``SerialBase`` -- RS485 support changed (``rts_toggle`` removed, added ``serial.rs485`` module - and ``rs485_mode`` property) -- ``socket://`` and ``rfc2217://`` handlers use the IPv6 compatible - ``socket.create_connection`` -- New URL handler: ``spy:://``. -- URL handlers now require the proper format (``?`` and ``&``) for arguments - instead of ``/`` (e.g. ``rfc2217://localhost:7000?ign_set_control&timeout=5.5``) -- Remove obsolete examples. -- Finish update to BSD license. -- Use setuptools if available, fall back to distutils if unavailable. -- miniterm: changed command line options -- miniterm: support encodings on serial port -- miniterm: new transformations, by default escape/convert all control characters -- list_ports: improved, added USB location (Linux, Win32) -- refactored code -- [FTR pyserial:37] Support fileno() function in the socket protocol -- Posix: [Patch pyserial:31] Mark/space parity on Linux -- Linux: [Patch pyserial:32] Module list_ports for linux should include the - product information as description. -- Java: fix 2 bugs (stop bits if/else and non-integer timeouts) (Torsten - Roemer) -- Update wxSerialConfigDialog.py to use serial.tools.list_ports. -- [Patch pyserial:34] Improvements to port_publisher.py example -- [Feature pyserial:39] Support BlueTooth serial port discovery on Linux - -Bugfixes: - -- [Bug pyserial:157] Implement inWaiting in protocol_socket -- [Bug pyserial:166] RFC2217 connections always fail -- [Bug pyserial:172] applySettingsDict() throws an error if the settings dictionary is not complete -- [Bug pyserial:185] SocketSerial.read() never returns data when timeout==0 - -Bugfixes (posix): - -- [Bug pyserial:156] PosixSerial.open raises OSError rather than - SerialException when port open fails -- [Bug pyserial:163] serial.tools.list_ports.grep() fails if it encounters None type -- fix setXON -- [Patch pyserial:36 / 38] Make USB information work in python 3.4 and 2.7 -- clear OCRNL/ONLCR flags (CR/LF translation settings) -- [Feature pyserial:38] RS485 Support -- [Bug pyserial:170] list_ports_posix not working properly for Cygwin -- [Bug pyserial:187] improve support for FreeBSD (list_ports_posix) - -Bugfixes (win32): - -- [Bug pyserial:169] missing "import time" in serialwin32.py - -Bugfixes (cli): - -- [Bug pyserial:159] write() in serialcli.py not working with IronPython 2.7.4 - - -Version 3.0b1 2015-10-19 --------------------------- -- list_ports: add ``vid``, ``pid``, ``serial_number``, ``product``, - ``manufacturer`` and ``location`` attribute for USB devices. -- list_ports: update OSX implementation. -- list_ports: Raspberry Pi: internal port is found. -- serial_for_url: fix import (multiple packages in list) -- threaded: added new module implementing a reader thread -- tweak examples/wx* -- posix: add experimental implementation ``VTIMESerial`` -- new URL handler ``alt://`` to select alternative implementations - - -Version 3.0 2015-12-28 ------------------------- -- minor fixes to setup.py (file list), inter_byte_timeout (not stored when - passed to __init__), rfc2217 (behavior of close when open failed), - list_ports (__str__), loop://, renamed ReaderThread -- hwgrep:// added options to pick n'th port, skip busy ports -- miniterm: --ask option added - -Bugfixes (posix): - -- [#26/#30] always call tcsettattr on open -- [#42] fix disregard read timeout if there is more data -- [#45] check for write timeout, even if EAGAIN was raised - -Bugfixes (win32): - -- [#27] fix race condition in ``read()``, fix minimal timeout issue -- race condition in nonblocking case -- [#49] change exception type in case SetCommState fails -- [#50] fixed issue with 0 timeout on windows 10 - - -Version 3.0.1 2016-01-11 --------------------------- -- special case for FDTIBUS in list_ports on win32 (#61) - -Bugfixes: - -- ``Serial`` keyword arguments, more on backward compatibility, fix #55 -- list_ports: return name if product is None, fix for #54 -- port_publisher: restore some sorting of ports - - -Version 3.1.0 2016-05-27 --------------------------- -Improvements: - -- improve error handling in ``alt://`` handler -- ``socket://`` internally used select, improves timeout behavior -- initial state of RTS/DTR: ignore error when setting on open posix - (support connecting to pty's) -- code style updates -- posix: remove "number_to_device" which is not called anymore -- add cancel_read and cancel_write to win32 and posix implementations - -Bugfixes: - -- [#68] aio: catch errors and close connection -- [#87] hexlify: update codec for Python 2 -- [#100] setPort not implemented -- [#101] bug in serial.threaded.Packetizer with easy fix -- [#104] rfc2217 and socket: set timeout in create_connection -- [#107] miniterm.py fails to exit on failed serial port - -Bugfixes (posix): - -- [#59] fixes for RTS/DTR handling on open -- [#77] list_ports_osx: add missing import -- [#85] serialposix.py _set_rs485_mode() tries to read non-existing - rs485_settings.delay_rts_before_send -- [#96] patch: native RS485 is never enabled - -Bugfixes (win32): - -- fix bad super call and duplicate old-style __init__ call -- [#80] list_ports: Compatibility issue between Windows/Linux - - -Version 3.1.1 2016-06-12 --------------------------- -Improvements: - -- deprecate ``nonblocking()`` method on posix, the port is already in this - mode. -- style: use .format() in various places instead of "%" formatting - -Bugfixes: - -- [#122] fix bug in FramedPacket -- [#127] The Serial class in the .NET/Mono (IronPython) backend does not - implement the _reconfigure_port method -- [#123, #128] Avoid Python 3 syntax in aio module - -Bugfixes (posix): - -- [#126] PATCH: Check delay_before_tx/rx for None in serialposix.py -- posix: retry if interrupted in Serial.read - -Bugfixes (win32): - -- win32: handle errors of GetOverlappedResult in read(), fixes #121 - - -Version 3.2.0 2016-10-14 --------------------------- -See 3.2.1, this one missed a merge request related to removing aio. - - -Version 3.2.1 2016-10-14 --------------------------- -Improvements: - -- remove ``serial.aio`` in favor of separate package, ``pyserial-asyncio`` -- add client mode to example ``tcp_serial_redirect.py`` -- use of monotonic clock for timeouts, when available (Python 3.3 and up) -- [#169] arbitrary baud rate support for BSD family -- improve tests, improve ``loop://`` - -Bugfixes: - -- [#137] Exception while cancel in miniterm (python3) -- [#143] Class Serial in protocol_loop.py references variable before assigning - to it -- [#149] Python 3 fix for threaded.FramedPacket - -Bugfixes (posix): - -- [#133] _update_dtr_state throws Inappropriate ioctl for virtual serial - port created by socat on OS X -- [#157] Broken handling of CMSPAR in serialposix.py - -Bugfixes (win32): - -- [#144] Use Unicode API for list_ports -- [#145] list_ports_windows: support devices with only VID -- [#162] Write in non-blocking mode returns incorrect value on windows - - -Version 3.3 2017-03-08 ------------------------- -Improvements: - -- [#206] Exclusive access on POSIX. ``exclusive`` flag added. -- [#172] list_ports_windows: list_ports with 'manufacturer' info property -- [#174] miniterm: change cancel impl. for console -- [#182] serialutil: add overall timeout for read_until -- socket: use non-blocking socket and new Timeout class -- socket: implement a functional a reset_input_buffer -- rfc2217: improve read timeout implementation -- win32: include error message from system in ClearCommError exception -- and a few minor changes, docs - -Bugfixes: - -- [#183] rfc2217: Fix broken calls to to_bytes on Python3. -- [#188] rfc2217: fix auto-open use case when port is given as parameter - -Bugfixes (posix): - -- [#178] in read, count length of converted data -- [#189] fix return value of write - -Bugfixes (win32): - -- [#194] spurious write fails with ERROR_SUCCESS - - -Version 3.4 2017-07-22 ------------------------- -Improvements: - -- miniterm: suspend function (temporarily release port, :kbd:`Ctrl-T s`) -- [#240] context manager automatically opens port on ``__enter__`` -- [#141] list_ports: add interface number to location string -- [#225] protocol_socket: Retry if ``BlockingIOError`` occurs in - ``reset_input_buffer``. - -Bugfixes: - -- [#153] list_ports: option to include symlinked devices -- [#237] list_ports: workaround for special characters in port names - -Bugfixes (posix): - -- allow calling cancel functions w/o error if port is closed -- [#220] protocol_socket: sync error handling with posix version -- [#227] posix: ignore more blocking errors and EINTR, timeout only - applies to blocking I/O -- [#228] fix: port_publisher typo - - -Version 3.5b0 2020-09-21 ------------------------- -New Features: - -- [#411] Add a backend for Silicon Labs CP2110/4 HID-to-UART bridge. - (depends on `hid` module) - -Improvements: - -- [#315] Use absolute import everywhere -- [#351] win32: miniterm Working CMD.exe terminal using Windows 10 ANSI support -- [#354] Make ListPortInfo hashable -- [#372] threaded: "write" returns byte count -- [#400] Add bytesize and stopbits argument parser to tcp_serial_redirect -- [#408] loop: add out_waiting -- [#495] list_ports_linux: Correct "interface" property on Linux hosts -- [#500] Remove Python 3.2 and 3.3 from test -- [#261, #285, #296, #320, #333, #342, #356, #358, #389, #397, #510] doc updates -- miniterm: add :kbd:`CTRL+T Q` as alternative to exit -- miniterm: suspend function key changed to :kbd:`CTRL-T Z` -- add command line tool entries ``pyserial-miniterm`` (replaces ``miniterm.py``) - and ``pyserial-ports`` (runs ``serial.tools.list_ports``). -- ``python -m serial`` opens miniterm (use w/o args and it will print port - list too) [experimental] - -Bugfixes: - -- [#371] Don't open port if self.port is not set while entering context manager -- [#437, #502] refactor: raise new instances for PortNotOpenError and SerialTimeoutException -- [#261, #263] list_ports: set default `name` attribute -- [#286] fix: compare only of the same type in list_ports_common.ListPortInfo -- rfc2217/close(): fix race-condition -- [#305] return b'' when connection closes on rfc2217 connection -- [#386] rfc2217/close(): fix race condition -- Fixed flush_input_buffer() for situations where the remote end has closed the socket. -- [#441] reset_input_buffer() can hang on sockets -- examples: port_publisher python 3 fixes -- [#324] miniterm: Fix miniterm constructor exit_character and menu_character -- [#326] miniterm: use exclusive access for native serial ports by default -- [#497] miniterm: fix double use of CTRL-T + s use z for suspend instead -- [#443, #444] examples: refactor wx example, use Bind to avoid deprecated - warnings, IsChecked, unichr - -Bugfixes (posix): - -- [#265] posix: fix PosixPollSerial with timeout=None and add cancel support -- [#290] option for low latency mode on linux -- [#335] Add support to xr-usb-serial ports -- [#494] posix: Don't catch the SerialException we just raised -- [#519] posix: Fix custom baud rate to not temporarily set 38400 baud rates on linux -- [#509 #518] list_ports: use hardcoded path to library on osx - -Bugfixes (win32): - -- [#481] win32: extend RS485 error messages -- [#303] win32: do not check for links in serial.tools.list_ports -- [#430] Add WaitCommEvent function to win32 -- [#314, #433] tools/list_ports_windows: Scan both 'Ports' and 'Modem' device classes -- [#414] Serial number support for composite USB devices -- Added recursive search for device USB serial number to support composite devices - -Bugfixes (MacOS): - -- [#364] MacOS: rework list_ports to support unicode product descriptors. -- [#367] Mac and bsd fix _update_break_state - - -Version 3.5 2020-11-23 ----------------------- -See above (3.5b0) for what's all new in this release - -Bugfixes: - -- spy: ensure bytes in write() - -Bugfixes (posix): - -- [#540] serialposix: Fix inconsistent state after exception in open() - -Bugfixes (win32): - -- [#530] win32: Fix exception for composite serial number search on Windows - -Bugfixes (MacOS): - -- [#542] list_ports_osx: kIOMasterPortDefault no longer exported on Big Sur -- [#545, #545] list_ports_osx: getting USB info on BigSur/AppleSilicon diff --git a/pyserial-master/pyserial-master/LICENSE.txt b/pyserial-master/pyserial-master/LICENSE.txt deleted file mode 100644 index 8920d4e..0000000 --- a/pyserial-master/pyserial-master/LICENSE.txt +++ /dev/null @@ -1,39 +0,0 @@ -Copyright (c) 2001-2020 Chris Liechti -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. - ---------------------------------------------------------------------------- -Note: -Individual files contain the following tag instead of the full license text. - - SPDX-License-Identifier: BSD-3-Clause - -This enables machine processing of license information based on the SPDX -License Identifiers that are here available: http://spdx.org/licenses/ diff --git a/pyserial-master/pyserial-master/MANIFEST.in b/pyserial-master/pyserial-master/MANIFEST.in deleted file mode 100644 index 696a944..0000000 --- a/pyserial-master/pyserial-master/MANIFEST.in +++ /dev/null @@ -1,39 +0,0 @@ -include README.rst -include LICENSE.txt -include CHANGES.rst -include MANIFEST.in -include setup.py -include setup.cfg -include pylintrc - -include examples/at_protocol.py -include examples/port_publisher.py -include examples/port_publisher.sh -include examples/rfc2217_server.py -include examples/setup-miniterm-py2exe.py -include examples/setup-rfc2217_server-py2exe.py -include examples/setup-wxTerminal-py2exe.py -include examples/tcp_serial_redirect.py -include examples/wxSerialConfigDialog.py -include examples/wxSerialConfigDialog.wxg -include examples/wxTerminal.py -include examples/wxTerminal.wxg - -include test/handlers/__init__.py -include test/handlers/protocol_test.py -include test/run_all_tests.py -include test/test_advanced.py -include test/test_high_load.py -include test/test_iolib.py -include test/test.py -include test/test_readline.py -include test/test_rfc2217.py -include test/test_rs485.py -include test/test_settings_dict.py -include test/test_url.py - -include documentation/*.rst -include documentation/pyserial.png -include documentation/conf.py -include documentation/Makefile - diff --git a/pyserial-master/pyserial-master/README.rst b/pyserial-master/pyserial-master/README.rst deleted file mode 100644 index 2e793ca..0000000 --- a/pyserial-master/pyserial-master/README.rst +++ /dev/null @@ -1,56 +0,0 @@ -================================= - pySerial |build-status| |docs| -================================= - -Overview -======== -This module encapsulates the access for the serial port. It provides backends -for Python_ running on Windows, OSX, Linux, BSD (possibly any POSIX compliant -system) and IronPython. The module named "serial" automatically selects the -appropriate backend. - -- Project Homepage: https://github.com/pyserial/pyserial -- Download Page: https://pypi.python.org/pypi/pyserial - -BSD license, (C) 2001-2020 Chris Liechti - - -Documentation -============= -For API documentation, usage and examples see files in the "documentation" -directory. The ".rst" files can be read in any text editor or being converted to -HTML or PDF using Sphinx_. An HTML version is online at -https://pythonhosted.org/pyserial/ - -Examples -======== -Examples and unit tests are in the directory examples_. - - -Installation -============ -``pip install pyserial`` should work for most users. - -Detailed information can be found in `documentation/pyserial.rst`_. - -The usual setup.py for Python_ libraries is used for the source distribution. -Windows installers are also available (see download link above). - -or - -To install this package with conda run: - -``conda install -c conda-forge pyserial`` - -conda builds are available for linux, mac and windows. - -.. _`documentation/pyserial.rst`: https://github.com/pyserial/pyserial/blob/master/documentation/pyserial.rst#installation -.. _examples: https://github.com/pyserial/pyserial/blob/master/examples -.. _Python: http://python.org/ -.. _Sphinx: http://sphinx-doc.org/ -.. |build-status| image:: https://travis-ci.org/pyserial/pyserial.svg?branch=master - :target: https://travis-ci.org/pyserial/pyserial - :alt: Build status -.. |docs| image:: https://readthedocs.org/projects/pyserial/badge/?version=latest - :target: http://pyserial.readthedocs.io/ - :alt: Documentation diff --git a/pyserial-master/pyserial-master/documentation/Makefile b/pyserial-master/pyserial-master/documentation/Makefile deleted file mode 100644 index 8384360..0000000 --- a/pyserial-master/pyserial-master/documentation/Makefile +++ /dev/null @@ -1,88 +0,0 @@ -# Makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -PAPER = - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . - -.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest - -help: - @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - -clean: - -rm -rf _build/* - -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html - @echo - @echo "Build finished. The HTML pages are in _build/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml - @echo - @echo "Build finished. The HTML pages are in _build/dirhtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in _build/htmlhelp." - -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in _build/qthelp, like this:" - @echo "# qcollectiongenerator _build/qthelp/pySerial.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile _build/qthelp/pySerial.qhc" - -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex - @echo - @echo "Build finished; the LaTeX files are in _build/latex." - @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ - "run these through (pdf)latex." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes - @echo - @echo "The overview file is in _build/changes." - -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in _build/linkcheck/output.txt." - -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in _build/doctest/output.txt." diff --git a/pyserial-master/pyserial-master/documentation/appendix.rst b/pyserial-master/pyserial-master/documentation/appendix.rst deleted file mode 100644 index fe03954..0000000 --- a/pyserial-master/pyserial-master/documentation/appendix.rst +++ /dev/null @@ -1,148 +0,0 @@ -========== - 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 ` (e.g. by editing a - configuration file, GUI dialog etc.). - - Please note that this enables all :ref:`URL ` 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 ` scheme. E.g. for the :rfc:`2217`: - ``rfc2217://``. - - Custom :ref:`URL ` 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 -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. - diff --git a/pyserial-master/pyserial-master/documentation/conf.py b/pyserial-master/pyserial-master/documentation/conf.py deleted file mode 100644 index d878ea4..0000000 --- a/pyserial-master/pyserial-master/documentation/conf.py +++ /dev/null @@ -1,200 +0,0 @@ -# -*- coding: utf-8 -*- -# -# pySerial documentation build configuration file, created by -# sphinx-quickstart on Tue Jul 21 00:27:45 2009. -# -# This file is execfile()d with the current directory set to its containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -import sys, os - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.append(os.path.abspath('.')) - -# -- General configuration ----------------------------------------------------- - -# Add any Sphinx extension module names here, as strings. They can be extensions -# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['sphinx.ext.intersphinx'] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'pySerial' -copyright = u'2001-2020, Chris Liechti' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = '3.4' -# The full version, including alpha/beta/rc tags. -release = '3.4' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of documents that shouldn't be included in the build. -#unused_docs = [] - -# List of directories, relative to source directory, that shouldn't be searched -# for source files. -exclude_trees = ['_build'] - -# The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - - -# -- Options for HTML output --------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. Major themes that come with -# Sphinx are currently 'default' and 'sphinxdoc'. -#html_theme = 'default' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -html_logo = 'pyserial.png' - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_use_modindex = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = '' - -# Output file base name for HTML help builder. -#htmlhelp_basename = 'pySerialdoc' - - -# -- Options for LaTeX output -------------------------------------------------- - -# The paper size ('letter' or 'a4'). -#latex_paper_size = 'letter' - -# The font size ('10pt', '11pt' or '12pt'). -#latex_font_size = '10pt' - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass [howto/manual]). -latex_documents = [ - ('index', 'pySerial.tex', u'pySerial Documentation', - u'Chris Liechti', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -latex_logo = 'pyserial.png' - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# Additional stuff for the LaTeX preamble. -#latex_preamble = '' - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_use_modindex = True - -# for external links to standard library -intersphinx_mapping = { - #~ 'python': ('http://docs.python.org', None), - 'py': ('http://docs.python.org', None), - } diff --git a/pyserial-master/pyserial-master/documentation/examples.rst b/pyserial-master/pyserial-master/documentation/examples.rst deleted file mode 100644 index 197c015..0000000 --- a/pyserial-master/pyserial-master/documentation/examples.rst +++ /dev/null @@ -1,274 +0,0 @@ -.. _examples: - -========== - Examples -========== - - -Miniterm -======== -Miniterm is now available as module instead of example. -see :ref:`miniterm` for details. - -miniterm.py_ - The miniterm program. - -setup-miniterm-py2exe.py_ - This is a py2exe setup script for Windows. It can be used to create a - standalone ``miniterm.exe``. - -.. _miniterm.py: https://github.com/pyserial/pyserial/blob/master/serial/tools/miniterm.py -.. _setup-miniterm-py2exe.py: https://github.com/pyserial/pyserial/blob/master/examples/setup-miniterm-py2exe.py - - -TCP/IP - serial bridge -====================== -This program opens a TCP/IP port. When a connection is made to that port (e.g. -with telnet) it forwards all data to the serial port and vice versa. - -This example only exports a raw socket connection. The next example -below gives the client much more control over the remote serial port. - -- The serial port settings are set on the command line when starting the - program. -- There is no possibility to change settings from remote. -- All data is passed through as-is. - -:: - - usage: tcp_serial_redirect.py [-h] [-q] [--parity {N,E,O,S,M}] [--rtscts] - [--xonxoff] [--rts RTS] [--dtr DTR] - [-P LOCALPORT] - SERIALPORT [BAUDRATE] - - Simple Serial to Network (TCP/IP) redirector. - - positional arguments: - SERIALPORT serial port name - BAUDRATE set baud rate, default: 9600 - - optional arguments: - -h, --help show this help message and exit - -q, --quiet suppress non error messages - - serial port: - --parity {N,E,O,S,M} set parity, one of {N E O S M}, default: N - --rtscts enable RTS/CTS flow control (default off) - --xonxoff enable software flow control (default off) - --rts RTS set initial RTS line state (possible values: 0, 1) - --dtr DTR set initial DTR line state (possible values: 0, 1) - - network settings: - -P LOCALPORT, --localport LOCALPORT - local TCP port - - NOTE: no security measures are implemented. Anyone can remotely connect to - this service over the network. Only one connection at once is supported. When - the connection is terminated it waits for the next connect. - - -tcp_serial_redirect.py_ - Main program. - -.. _tcp_serial_redirect.py: https://github.com/pyserial/pyserial/blob/master/examples/tcp_serial_redirect.py - - -Single-port TCP/IP - serial bridge (RFC 2217) -============================================= -Simple cross platform :rfc:`2217` serial port server. It uses threads and is -portable (runs on POSIX, Windows, etc). - -- The port settings and control lines (RTS/DTR) can be changed at any time - using :rfc:`2217` requests. The status lines (DSR/CTS/RI/CD) are polled every - second and notifications are sent to the client. -- Telnet character IAC (0xff) needs to be doubled in data stream. IAC followed - by another value is interpreted as Telnet command sequence. -- Telnet negotiation commands are sent when connecting to the server. -- RTS/DTR are activated on client connect and deactivated on disconnect. -- Default port settings are set again when client disconnects. - -:: - - usage: rfc2217_server.py [-h] [-p TCPPORT] [-v] SERIALPORT - - RFC 2217 Serial to Network (TCP/IP) redirector. - - positional arguments: - SERIALPORT - - optional arguments: - -h, --help show this help message and exit - -p TCPPORT, --localport TCPPORT - local TCP port, default: 2217 - -v, --verbose print more diagnostic messages (option can be given - multiple times) - - NOTE: no security measures are implemented. Anyone can remotely connect to - this service over the network. Only one connection at once is supported. When - the connection is terminated it waits for the next connect. - -.. versionadded:: 2.5 - -rfc2217_server.py_ - Main program. - -setup-rfc2217_server-py2exe.py_ - This is a py2exe setup script for Windows. It can be used to create a - standalone ``rfc2217_server.exe``. - -.. _rfc2217_server.py: https://github.com/pyserial/pyserial/blob/master/examples/rfc2217_server.py -.. _setup-rfc2217_server-py2exe.py: https://github.com/pyserial/pyserial/blob/master/examples/setup-rfc2217_server-py2exe.py - - -Multi-port TCP/IP - serial bridge (RFC 2217) -============================================ -This example implements a TCP/IP to serial port service that works with -multiple ports at once. It uses select, no threads, for the serial ports and -the network sockets and therefore runs on POSIX systems only. - -- Full control over the serial port with :rfc:`2217`. -- Check existence of ``/tty/USB0...8``. This is done every 5 seconds using - ``os.path.exists``. -- Send zeroconf announcements when port appears or disappears (uses - python-avahi and dbus). Service name: ``_serial_port._tcp``. -- Each serial port becomes available as one TCP/IP server. e.g. - ``/dev/ttyUSB0`` is reachable at ``:7000``. -- Single process for all ports and sockets (not per port). -- The script can be started as daemon. -- Logging to stdout or when run as daemon to syslog. -- Default port settings are set again when client disconnects. -- modem status lines (CTS/DSR/RI/CD) are not polled periodically and the server - therefore does not send NOTIFY_MODEMSTATE on its own. However it responds to - request from the client (i.e. use the ``poll_modem`` option in the URL when - using a pySerial client.) - -:: - - usage: port_publisher.py [options] - - Announce the existence of devices using zeroconf and provide - a TCP/IP <-> serial port gateway (implements RFC 2217). - - If running as daemon, write to syslog. Otherwise write to stdout. - - optional arguments: - -h, --help show this help message and exit - - serial port settings: - --ports-regex REGEX specify a regex to search against the serial devices - and their descriptions (default: /dev/ttyUSB[0-9]+) - - network settings: - --tcp-port PORT specify lowest TCP port number (default: 7000) - - daemon: - -d, --daemon start as daemon - --pidfile FILE specify a name for the PID file - - diagnostics: - -o FILE, --logfile FILE - write messages file instead of stdout - -q, --quiet suppress most diagnostic messages - -v, --verbose increase diagnostic messages - - NOTE: no security measures are implemented. Anyone can remotely connect to - this service over the network. Only one connection at once, per port, is - supported. When the connection is terminated, it waits for the next connect. - -Requirements: - -- Python (>= 2.4) -- python-avahi -- python-dbus -- python-serial (>= 2.5) - -Installation as daemon: - -- Copy the script ``port_publisher.py`` to ``/usr/local/bin``. -- Copy the script ``port_publisher.sh`` to ``/etc/init.d``. -- Add links to the runlevels using ``update-rc.d port_publisher.sh defaults 99`` -- That's it :-) the service will be started on next reboot. Alternatively run - ``invoke-rc.d port_publisher.sh start`` as root. - -.. versionadded:: 2.5 new example - -port_publisher.py_ - Multi-port TCP/IP-serial converter (RFC 2217) for POSIX environments. - -port_publisher.sh_ - Example init.d script. - -.. _port_publisher.py: https://github.com/pyserial/pyserial/blob/master/examples/port_publisher.py -.. _port_publisher.sh: https://github.com/pyserial/pyserial/blob/master/examples/port_publisher.sh - - -wxPython examples -================= -A simple terminal application for wxPython and a flexible serial port -configuration dialog are shown here. - -wxTerminal.py_ - A simple terminal application. Note that the length of the buffer is - limited by wx and it may suddenly stop displaying new input. - -wxTerminal.wxg_ - A wxGlade design file for the terminal application. - -wxSerialConfigDialog.py_ - A flexible serial port configuration dialog. - -wxSerialConfigDialog.wxg_ - The wxGlade design file for the configuration dialog. - -setup-wxTerminal-py2exe.py_ - A py2exe setup script to package the terminal application. - -.. _wxTerminal.py: https://github.com/pyserial/pyserial/blob/master/examples/wxTerminal.py -.. _wxTerminal.wxg: https://github.com/pyserial/pyserial/blob/master/examples/wxTerminal.wxg -.. _wxSerialConfigDialog.py: https://github.com/pyserial/pyserial/blob/master/examples/wxSerialConfigDialog.py -.. _wxSerialConfigDialog.wxg: https://github.com/pyserial/pyserial/blob/master/examples/wxSerialConfigDialog.wxg -.. _setup-wxTerminal-py2exe.py: https://github.com/pyserial/pyserial/blob/master/examples/setup-wxTerminal-py2exe.py - - - -Unit tests -========== -The project uses a number of unit test to verify the functionality. They all -need a loop back connector. The scripts itself contain more information. All -test scripts are contained in the directory ``test``. - -The unit tests are performed on port ``loop://`` unless a different device -name or URL is given on the command line (``sys.argv[1]``). e.g. to run the -test on an attached USB-serial converter ``hwgrep://USB`` could be used or -the actual name such as ``/dev/ttyUSB0`` or ``COM1`` (depending on platform). - -run_all_tests.py_ - Collect all tests from all ``test*`` files and run them. By default, the - ``loop://`` device is used. - -test.py_ - Basic tests (binary capabilities, timeout, control lines). - -test_advanced.py_ - Test more advanced features (properties). - -test_high_load.py_ - Tests involving sending a lot of data. - -test_readline.py_ - Tests involving ``readline``. - -test_iolib.py_ - Tests involving the :mod:`io` library. Only available for Python 2.6 and - newer. - -test_url.py_ - Tests involving the :ref:`URL ` feature. - -.. _run_all_tests.py: https://github.com/pyserial/pyserial/blob/master/test/run_all_tests.py -.. _test.py: https://github.com/pyserial/pyserial/blob/master/test/test.py -.. _test_advanced.py: https://github.com/pyserial/pyserial/blob/master/test/test_advanced.py -.. _test_high_load.py: https://github.com/pyserial/pyserial/blob/master/test/test_high_load.py -.. _test_readline.py: https://github.com/pyserial/pyserial/blob/master/test/test_readline.py -.. _test_iolib.py: https://github.com/pyserial/pyserial/blob/master/test/test_iolib.py -.. _test_url.py: https://github.com/pyserial/pyserial/blob/master/test/test_url.py diff --git a/pyserial-master/pyserial-master/documentation/index.rst b/pyserial-master/pyserial-master/documentation/index.rst deleted file mode 100644 index c3ca19d..0000000 --- a/pyserial-master/pyserial-master/documentation/index.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. pySerial documentation master file -.. _welcome: - -Welcome to pySerial's documentation -=================================== - - -This module encapsulates the access for the serial port. It provides backends -for Python_ running on Windows, OSX, Linux, BSD (possibly any POSIX compliant -system) and IronPython. The module named "serial" automatically selects the -appropriate backend. - -Other pages (online) - -- `project page on GitHub`_ -- `Download Page`_ with releases -- This page, when viewed online is at https://pyserial.readthedocs.io/en/latest/ or - http://pythonhosted.org/pyserial/ . - -.. _Python: http://python.org/ -.. _`project page on GitHub`: https://github.com/pyserial/ -.. _`Download Page`: http://pypi.python.org/pypi/pyserial - - -Contents: - -.. toctree:: - :maxdepth: 2 - - pyserial - shortintro - pyserial_api - tools - url_handlers - examples - appendix - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - diff --git a/pyserial-master/pyserial-master/documentation/pyserial.png b/pyserial-master/pyserial-master/documentation/pyserial.png deleted file mode 100644 index 7fd45f46eb11b8ec36fb51bb5643832d959a4820..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7050 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 - -Other pages (online) - -- `project page on GitHub`_ -- `Download Page`_ with releases (PyPi) -- This page, when viewed online is at https://pyserial.readthedocs.io/en/latest/ or - http://pythonhosted.org/pyserial/ . - -.. _Python: http://python.org/ -.. _LICENSE: appendix.html#license -.. _`project page on GitHub`: https://github.com/pyserial/pyserial/ -.. _`Download Page`: http://pypi.python.org/pypi/pyserial - - -Features -======== -- Same class based interface on all supported platforms. -- Access to the port settings through Python properties. -- Support for different byte sizes, stop bits, parity and flow control with - RTS/CTS and/or Xon/Xoff. -- Working with or without receive timeout. -- File like API with "read" and "write" ("readline" etc. also supported). -- The files in this package are 100% pure Python. -- The port is set up for binary transmission. No NULL byte stripping, CR-LF - translation etc. (which are many times enabled for POSIX.) This makes this - module universally useful. -- Compatible with :mod:`io` library -- RFC 2217 client (experimental), server provided in the examples. - - -Requirements -============ -- Python 2.7 or Python 3.4 and newer - -- If running on Windows: Windows 7 or newer - -- If running on Jython: "Java Communications" (JavaComm) or compatible - extension for Java - -For older installations (older Python versions or older operating systems), see -`older versions`_ below. - - -Installation -============ - -This installs a package that can be used from Python (``import serial``). - -To install for all users on the system, administrator rights (root) -may be required. - -From PyPI ---------- -pySerial can be installed from PyPI:: - - python -m pip install pyserial - -Using the `python`/`python3` executable of the desired version (2.7/3.x). - -Developers also may be interested to get the source archive, because it -contains examples, tests and the this documentation. - -From Conda ----------- -pySerial can be installed from Conda:: - - conda install pyserial - - or - - conda install -c conda-forge pyserial - -Currently the default conda channel will provide version 3.4 whereas the -conda-forge channel provides the current 3.x version. - -Conda: https://www.continuum.io/downloads - -From source (zip/tar.gz or checkout) ------------------------------------- -Download the archive from http://pypi.python.org/pypi/pyserial or -https://github.com/pyserial/pyserial/releases. -Unpack the archive, enter the ``pyserial-x.y`` directory and run:: - - python setup.py install - -Using the `python`/`python3` executable of the desired version (2.7/3.x). - -Packages --------- -There are also packaged versions for some Linux distributions: - -- Debian/Ubuntu: "python-serial", "python3-serial" -- Fedora / RHEL / CentOS / EPEL: "pyserial" -- Arch Linux: "python-pyserial" -- Gentoo: "dev-python/pyserial" - -Note that some distributions may package an older version of pySerial. -These packages are created and maintained by developers working on -these distributions. - -.. _PyPi: http://pypi.python.org/pypi/pyserial - - -References -========== -* Python: http://www.python.org/ -* Jython: http://www.jython.org/ -* IronPython: http://www.codeplex.com/IronPython - - -Older Versions -============== -Older versions are still available on the current download_ page or the `old -download`_ page. The last version of pySerial's 2.x series was `2.7`_, -compatible with Python 2.3 and newer and partially with early Python 3.x -versions. - -pySerial `1.21`_ is compatible with Python 2.0 on Windows, Linux and several -un*x like systems, MacOSX and Jython. - -On Windows, releases older than 2.5 will depend on pywin32_ (previously known as -win32all). WinXP is supported up to 3.0.1. - - -.. _`old download`: https://sourceforge.net/projects/pyserial/files/pyserial/ -.. _download: https://pypi.python.org/simple/pyserial/ -.. _pywin32: http://pypi.python.org/pypi/pywin32 -.. _`2.7`: https://pypi.python.org/pypi/pyserial/2.7 -.. _`1.21`: https://sourceforge.net/projects/pyserial/files/pyserial/1.21/pyserial-1.21.zip/download diff --git a/pyserial-master/pyserial-master/documentation/pyserial_api.rst b/pyserial-master/pyserial-master/documentation/pyserial_api.rst deleted file mode 100644 index e1ce049..0000000 --- a/pyserial-master/pyserial-master/documentation/pyserial_api.rst +++ /dev/null @@ -1,1309 +0,0 @@ -============== - pySerial API -============== - -.. module:: serial - -Classes -======= - -Native ports ------------- - -.. class:: Serial - - .. method:: __init__(port=None, baudrate=9600, bytesize=EIGHTBITS, parity=PARITY_NONE, stopbits=STOPBITS_ONE, timeout=None, xonxoff=False, rtscts=False, write_timeout=None, dsrdtr=False, inter_byte_timeout=None, exclusive=None) - - :param port: - Device name or :const:`None`. - - :param int baudrate: - Baud rate such as 9600 or 115200 etc. - - :param bytesize: - Number of data bits. Possible values: - :const:`FIVEBITS`, :const:`SIXBITS`, :const:`SEVENBITS`, - :const:`EIGHTBITS` - - :param parity: - Enable parity checking. Possible values: - :const:`PARITY_NONE`, :const:`PARITY_EVEN`, :const:`PARITY_ODD` - :const:`PARITY_MARK`, :const:`PARITY_SPACE` - - :param stopbits: - Number of stop bits. Possible values: - :const:`STOPBITS_ONE`, :const:`STOPBITS_ONE_POINT_FIVE`, - :const:`STOPBITS_TWO` - - :param float timeout: - Set a read timeout value in seconds. - - :param bool xonxoff: - Enable software flow control. - - :param bool rtscts: - Enable hardware (RTS/CTS) flow control. - - :param bool dsrdtr: - Enable hardware (DSR/DTR) flow control. - - :param float write_timeout: - Set a write timeout value in seconds. - - :param float inter_byte_timeout: - Inter-character timeout, :const:`None` to disable (default). - - :param bool exclusive: - Set exclusive access mode (POSIX only). A port cannot be opened in - exclusive access mode if it is already open in exclusive access mode. - - :exception ValueError: - Will be raised when parameter are out of range, e.g. baud rate, data bits. - - :exception SerialException: - In case the device can not be found or can not be configured. - - - The port is immediately opened on object creation, when a *port* is - given. It is not opened when *port* is :const:`None` and a successive call - to :meth:`open` is required. - - *port* is a device name: depending on operating system. e.g. - ``/dev/ttyUSB0`` on GNU/Linux or ``COM3`` on Windows. - - The parameter *baudrate* can be one of the standard values: - 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, - 9600, 19200, 38400, 57600, 115200. - These are well supported on all platforms. - - Standard values above 115200, such as: 230400, 460800, 500000, 576000, - 921600, 1000000, 1152000, 1500000, 2000000, 2500000, 3000000, 3500000, - 4000000 also work on many platforms and devices. - - Non-standard values are also supported on some platforms (GNU/Linux, MAC - OSX >= Tiger, Windows). Though, even on these platforms some serial - ports may reject non-standard values. - - Possible values for the parameter *timeout* which controls the behavior - of :meth:`read`: - - - ``timeout = None``: wait forever / until requested number of bytes - are received - - ``timeout = 0``: non-blocking mode, return immediately in any case, - returning zero or more, up to the requested number of bytes - - ``timeout = x``: set timeout to ``x`` seconds (float allowed) - returns immediately when the requested number of bytes are available, - otherwise wait until the timeout expires and return all bytes that - were received until then. - - :meth:`write` is blocking by default, unless *write_timeout* is set. - For possible values refer to the list for *timeout* above. - - Note that enabling both flow control methods (*xonxoff* and *rtscts*) - together may not be supported. It is common to use one of the methods - at once, not both. - - *dsrdtr* is not supported by all platforms (silently ignored). Setting - it to ``None`` has the effect that its state follows *rtscts*. - - Also consider using the function :func:`serial_for_url` instead of - creating Serial instances directly. - - .. versionchanged:: 2.5 - *dsrdtr* now defaults to ``False`` (instead of *None*) - .. versionchanged:: 3.0 numbers as *port* argument are no longer supported - .. versionadded:: 3.3 ``exclusive`` flag - - .. method:: open() - - Open port. The state of :attr:`rts` and :attr:`dtr` is applied. - - .. note:: - - Some OS and/or drivers may activate RTS and or DTR automatically, - as soon as the port is opened. There may be a glitch on RTS/DTR - when :attr:`rts` or :attr:`dtr` are set differently from their - default value (``True`` / active). - - .. note:: - - For compatibility reasons, no error is reported when applying - :attr:`rts` or :attr:`dtr` fails on POSIX due to EINVAL (22) or - ENOTTY (25). - - .. method:: close() - - Close port immediately. - - .. method:: __del__() - - Destructor, close port when serial port instance is freed. - - - The following methods may raise :exc:`SerialException` when applied to a closed - port. - - .. method:: read(size=1) - - :param size: Number of bytes to read. - :return: Bytes read from the port. - :rtype: bytes - - Read *size* bytes from the serial port. If a timeout is set it may - return fewer characters than requested. With no timeout it will block - until the requested number of bytes is read. - - .. versionchanged:: 2.5 - Returns an instance of :class:`bytes` when available (Python 2.6 - and newer) and :class:`str` otherwise. - - .. method:: read_until(expected=LF, size=None) - - :param expected: The byte string to search for. - :param size: Number of bytes to read. - :return: Bytes read from the port. - :rtype: bytes - - Read until an expected sequence is found ('\\n' by default), the size - is exceeded or until timeout occurs. If a timeout is set it may - return fewer characters than requested. With no timeout it will block - until the requested number of bytes is read. - - .. versionchanged:: 2.5 - Returns an instance of :class:`bytes` when available (Python 2.6 - and newer) and :class:`str` otherwise. - - .. versionchanged:: 3.5 - First argument was called ``terminator`` in previous versions. - - .. method:: write(data) - - :param data: Data to send. - :return: Number of bytes written. - :rtype: int - :exception SerialTimeoutException: - In case a write timeout is configured for the port and the time is - exceeded. - - Write the bytes *data* to the port. This should be of type ``bytes`` - (or compatible such as ``bytearray`` or ``memoryview``). Unicode - strings must be encoded (e.g. ``'hello'.encode('utf-8')``. - - .. versionchanged:: 2.5 - Accepts instances of :class:`bytes` and :class:`bytearray` when - available (Python 2.6 and newer) and :class:`str` otherwise. - - .. versionchanged:: 2.5 - Write returned ``None`` in previous versions. - - .. method:: flush() - - Flush of file like objects. In this case, wait until all data is - written. - - .. attribute:: in_waiting - - :getter: Get the number of bytes in the input buffer - :type: int - - Return the number of bytes in the receive buffer. - - .. versionchanged:: 3.0 changed to property from ``inWaiting()`` - - .. attribute:: out_waiting - - :getter: Get the number of bytes in the output buffer - :type: int - :platform: Posix - :platform: Windows - - Return the number of bytes in the output buffer. - - .. versionchanged:: 2.7 (Posix support added) - .. versionchanged:: 3.0 changed to property from ``outWaiting()`` - - .. method:: reset_input_buffer() - - Flush input buffer, discarding all its contents. - - .. versionchanged:: 3.0 renamed from ``flushInput()`` - - .. method:: reset_output_buffer() - - Clear output buffer, aborting the current output and - discarding all that is in the buffer. - - Note, for some USB serial adapters, this may only flush the buffer of - the OS and not all the data that may be present in the USB part. - - .. versionchanged:: 3.0 renamed from ``flushOutput()`` - - .. method:: send_break(duration=0.25) - - :param float duration: Time in seconds, to activate the BREAK condition. - - Send break condition. Timed, returns to idle state after given - duration. - - - .. attribute:: break_condition - - :getter: Get the current BREAK state - :setter: Control the BREAK state - :type: bool - - When set to ``True`` activate BREAK condition, else disable. - Controls TXD. When active, no transmitting is possible. - - .. attribute:: rts - - :setter: Set the state of the RTS line - :getter: Return the state of the RTS line - :type: bool - - Set RTS line to specified logic level. It is possible to assign this - value before opening the serial port, then the value is applied upon - :meth:`open` (with restrictions, see :meth:`open`). - - .. attribute:: dtr - - :setter: Set the state of the DTR line - :getter: Return the state of the DTR line - :type: bool - - Set DTR line to specified logic level. It is possible to assign this - value before opening the serial port, then the value is applied upon - :meth:`open` (with restrictions, see :meth:`open`). - - Read-only attributes: - - .. attribute:: name - - :getter: Device name. - :type: str - - .. versionadded:: 2.5 - - .. attribute:: cts - - :getter: Get the state of the CTS line - :type: bool - - Return the state of the CTS line. - - .. attribute:: dsr - - :getter: Get the state of the DSR line - :type: bool - - Return the state of the DSR line. - - .. attribute:: ri - - :getter: Get the state of the RI line - :type: bool - - Return the state of the RI line. - - .. attribute:: cd - - :getter: Get the state of the CD line - :type: bool - - Return the state of the CD line - - .. attribute:: is_open - - :getter: Get the state of the serial port, whether it's open. - :type: bool - - New values can be assigned to the following attributes (properties), the - port will be reconfigured, even if it's opened at that time: - - - .. attribute:: port - - :type: str - - Read or write port. When the port is already open, it will be closed - and reopened with the new setting. - - .. attribute:: baudrate - - :getter: Get current baud rate - :setter: Set new baud rate - :type: int - - Read or write current baud rate setting. - - .. attribute:: bytesize - - :getter: Get current byte size - :setter: Set new byte size. Possible values: - :const:`FIVEBITS`, :const:`SIXBITS`, :const:`SEVENBITS`, - :const:`EIGHTBITS` - :type: int - - Read or write current data byte size setting. - - .. attribute:: parity - - :getter: Get current parity setting - :setter: Set new parity mode. Possible values: - :const:`PARITY_NONE`, :const:`PARITY_EVEN`, :const:`PARITY_ODD` - :const:`PARITY_MARK`, :const:`PARITY_SPACE` - - Read or write current parity setting. - - .. attribute:: stopbits - - :getter: Get current stop bit setting - :setter: Set new stop bit setting. Possible values: - :const:`STOPBITS_ONE`, :const:`STOPBITS_ONE_POINT_FIVE`, - :const:`STOPBITS_TWO` - - Read or write current stop bit width setting. - - .. attribute:: timeout - - :getter: Get current read timeout setting - :setter: Set read timeout - :type: float (seconds) - - Read or write current read timeout setting. - - .. attribute:: write_timeout - - :getter: Get current write timeout setting - :setter: Set write timeout - :type: float (seconds) - - Read or write current write timeout setting. - - .. versionchanged:: 3.0 renamed from ``writeTimeout`` - - .. attribute:: inter_byte_timeout - - :getter: Get current inter byte timeout setting - :setter: Disable (``None``) or enable the inter byte timeout - :type: float or None - - Read or write current inter byte timeout setting. - - .. versionchanged:: 3.0 renamed from ``interCharTimeout`` - - .. attribute:: xonxoff - - :getter: Get current software flow control setting - :setter: Enable or disable software flow control - :type: bool - - Read or write current software flow control rate setting. - - .. attribute:: rtscts - - :getter: Get current hardware flow control setting - :setter: Enable or disable hardware flow control - :type: bool - - Read or write current hardware flow control setting. - - .. attribute:: dsrdtr - - :getter: Get current hardware flow control setting - :setter: Enable or disable hardware flow control - :type: bool - - Read or write current hardware flow control setting. - - .. attribute:: rs485_mode - - :getter: Get the current RS485 settings - :setter: Disable (``None``) or enable the RS485 settings - :type: :class:`rs485.RS485Settings` or ``None`` - :platform: Posix (Linux, limited set of hardware) - :platform: Windows (only RTS on TX possible) - - Attribute to configure RS485 support. When set to an instance of - :class:`rs485.RS485Settings` and supported by OS, RTS will be active - when data is sent and inactive otherwise (for reception). The - :class:`rs485.RS485Settings` class provides additional settings - supported on some platforms. - - .. versionadded:: 3.0 - - - The following constants are also provided: - - .. attribute:: BAUDRATES - - A list of valid baud rates. The list may be incomplete, such that higher - and/or intermediate baud rates may also be supported by the device - (Read Only). - - .. attribute:: BYTESIZES - - A list of valid byte sizes for the device (Read Only). - - .. attribute:: PARITIES - - A list of valid parities for the device (Read Only). - - .. attribute:: STOPBITS - - A list of valid stop bit widths for the device (Read Only). - - - The following methods are for compatibility with the :mod:`io` library. - - .. method:: readable() - - :return: True - - .. versionadded:: 2.5 - - .. method:: writable() - - :return: True - - .. versionadded:: 2.5 - - .. method:: seekable() - - :return: False - - .. versionadded:: 2.5 - - .. method:: readinto(b) - - :param b: bytearray or array instance - :return: Number of byte read - - Read up to len(b) bytes into :class:`bytearray` *b* and return the - number of bytes read. - - .. versionadded:: 2.5 - - .. method:: readline(size=-1) - - Provided via :meth:`io.IOBase.readline` See also :ref:`shortintro_readline`. - - .. method:: readlines(hint=-1) - - Provided via :meth:`io.IOBase.readlines`. See also :ref:`shortintro_readline`. - - .. method:: writelines(lines) - - Provided via :meth:`io.IOBase.writelines` - - The port settings can be read and written as dictionary. The following - keys are supported: ``write_timeout``, ``inter_byte_timeout``, - ``dsrdtr``, ``baudrate``, ``timeout``, ``parity``, ``bytesize``, - ``rtscts``, ``stopbits``, ``xonxoff`` - - .. method:: get_settings() - - :return: a dictionary with current port settings. - :rtype: dict - - Get a dictionary with port settings. This is useful to backup the - current settings so that a later point in time they can be restored - using :meth:`apply_settings`. - - Note that the state of control lines (RTS/DTR) are not part of the - settings. - - .. versionadded:: 2.5 - .. versionchanged:: 3.0 renamed from ``getSettingsDict`` - - .. method:: apply_settings(d) - - :param dict d: a dictionary with port settings. - - Applies a dictionary that was created by :meth:`get_settings`. Only - changes are applied and when a key is missing, it means that the - setting stays unchanged. - - Note that control lines (RTS/DTR) are not changed. - - .. versionadded:: 2.5 - .. versionchanged:: 3.0 renamed from ``applySettingsDict`` - - - .. _context-manager: - - This class can be used as context manager. The serial port is closed when - the context is left. - - .. method:: __enter__() - - :returns: Serial instance - - Returns the instance that was used in the ``with`` statement. - - Example: - - >>> with serial.serial_for_url(port) as s: - ... s.write(b'hello') - - The port is opened automatically: - - >>> port = serial.Serial() - >>> port.port = '...' - >>> with port as s: - ... s.write(b'hello') - - Which also means that ``with`` statements can be used repeatedly, - each time opening and closing the port. - - .. versionchanged:: 3.4 the port is automatically opened - - - .. method:: __exit__(exc_type, exc_val, exc_tb) - - Closes serial port (exceptions are not handled by ``__exit__``). - - - Platform specific methods. - - .. warning:: Programs using the following methods and attributes are not - portable to other platforms! - - .. method:: nonblocking() - - :platform: Posix - - .. deprecated:: 3.2 - The serial port is already opened in this mode. This method is not - needed and going away. - - - .. method:: fileno() - - :platform: Posix - :return: File descriptor. - - Return file descriptor number for the port that is opened by this object. - It is useful when serial ports are used with :mod:`select`. - - .. method:: set_input_flow_control(enable) - - :platform: Posix - :param bool enable: Set flow control state. - - Manually control flow - when software flow control is enabled. - - This will send XON (true) and XOFF (false) to the other device. - - .. versionadded:: 2.7 (Posix support added) - .. versionchanged:: 3.0 renamed from ``flowControlOut`` - - .. method:: set_output_flow_control(enable) - - :platform: Posix (HW and SW flow control) - :platform: Windows (SW flow control only) - :param bool enable: Set flow control state. - - Manually control flow of outgoing data - when hardware or software flow - control is enabled. - - Sending will be suspended when called with ``False`` and enabled when - called with ``True``. - - .. versionchanged:: 2.7 (renamed on Posix, function was called ``flowControl``) - .. versionchanged:: 3.0 renamed from ``setXON`` - - .. method:: cancel_read() - - :platform: Posix - :platform: Windows - - Cancel a pending read operation from another thread. A blocking - :meth:`read` call is aborted immediately. :meth:`read` will not report - any error but return all data received up to that point (similar to a - timeout). - - On Posix a call to `cancel_read()` may cancel a future :meth:`read` call. - - .. versionadded:: 3.1 - - .. method:: cancel_write() - - :platform: Posix - :platform: Windows - - Cancel a pending write operation from another thread. The - :meth:`write` method will return immediately (no error indicated). - However the OS may still be sending from the buffer, a separate call to - :meth:`reset_output_buffer` may be needed. - - On Posix a call to `cancel_write()` may cancel a future :meth:`write` call. - - .. versionadded:: 3.1 - - .. note:: The following members are deprecated and will be removed in a - future release. - - .. attribute:: portstr - - .. deprecated:: 2.5 use :attr:`name` instead - - .. method:: inWaiting() - - .. deprecated:: 3.0 see :attr:`in_waiting` - - .. method:: isOpen() - - .. deprecated:: 3.0 see :attr:`is_open` - - .. attribute:: writeTimeout - - .. deprecated:: 3.0 see :attr:`write_timeout` - - .. attribute:: interCharTimeout - - .. deprecated:: 3.0 see :attr:`inter_byte_timeout` - - .. method:: sendBreak(duration=0.25) - - .. deprecated:: 3.0 see :meth:`send_break` - - .. method:: flushInput() - - .. deprecated:: 3.0 see :meth:`reset_input_buffer` - - .. method:: flushOutput() - - .. deprecated:: 3.0 see :meth:`reset_output_buffer` - - .. method:: setBreak(level=True) - - .. deprecated:: 3.0 see :attr:`break_condition` - - .. method:: setRTS(level=True) - - .. deprecated:: 3.0 see :attr:`rts` - - .. method:: setDTR(level=True) - - .. deprecated:: 3.0 see :attr:`dtr` - - .. method:: getCTS() - - .. deprecated:: 3.0 see :attr:`cts` - - .. method:: getDSR() - - .. deprecated:: 3.0 see :attr:`dsr` - - .. method:: getRI() - - .. deprecated:: 3.0 see :attr:`ri` - - .. method:: getCD() - - .. deprecated:: 3.0 see :attr:`cd` - - .. method:: getSettingsDict() - - .. deprecated:: 3.0 see :meth:`get_settings` - - .. method:: applySettingsDict(d) - - .. deprecated:: 3.0 see :meth:`apply_settings` - - .. method:: outWaiting() - - .. deprecated:: 3.0 see :attr:`out_waiting` - - .. method:: setXON(level=True) - - .. deprecated:: 3.0 see :meth:`set_output_flow_control` - - .. method:: flowControlOut(enable) - - .. deprecated:: 3.0 see :meth:`set_input_flow_control` - - .. attribute:: rtsToggle - - :platform: Windows - - Attribute to configure RTS toggle control setting. When enabled and - supported by OS, RTS will be active when data is available and inactive - if no data is available. - - .. versionadded:: 2.6 - .. versionchanged:: 3.0 (removed, see :attr:`rs485_mode` instead) - - -Implementation detail: some attributes and functions are provided by the -class :class:`serial.SerialBase` which inherits from :class:`io.RawIOBase` -and some by the platform specific class and others by the base class -mentioned above. - - -RS485 support -------------- -The :class:`Serial` class has a :attr:`Serial.rs485_mode` attribute which allows to -enable RS485 specific support on some platforms. Currently Windows and Linux -(only a small number of devices) are supported. - -:attr:`Serial.rs485_mode` needs to be set to an instance of -:class:`rs485.RS485Settings` to enable or to ``None`` to disable this feature. - -Usage:: - - import serial - import serial.rs485 - ser = serial.Serial(...) - ser.rs485_mode = serial.rs485.RS485Settings(...) - ser.write(b'hello') - -There is a subclass :class:`rs485.RS485` available to emulate the RS485 support -on regular serial ports (``serial.rs485`` needs to be imported). - - -.. class:: rs485.RS485Settings - - A class that holds RS485 specific settings which are supported on - some platforms. - - .. versionadded:: 3.0 - - .. method:: __init__(rts_level_for_tx=True, rts_level_for_rx=False, loopback=False, delay_before_tx=None, delay_before_rx=None): - - :param bool rts_level_for_tx: - RTS level for transmission - - :param bool rts_level_for_rx: - RTS level for reception - - :param bool loopback: - When set to ``True`` transmitted data is also received. - - :param float delay_before_tx: - Delay after setting RTS but before transmission starts - - :param float delay_before_rx: - Delay after transmission ends and resetting RTS - - .. attribute:: rts_level_for_tx - - RTS level for transmission. - - .. attribute:: rts_level_for_rx - - RTS level for reception. - - .. attribute:: loopback - - When set to ``True`` transmitted data is also received. - - .. attribute:: delay_before_tx - - Delay after setting RTS but before transmission starts (seconds as float). - - .. attribute:: delay_before_rx - - Delay after transmission ends and resetting RTS (seconds as float). - - -.. class:: rs485.RS485 - - A subclass that replaces the :meth:`Serial.write` method with one that toggles RTS - according to the RS485 settings. - - Usage:: - - ser = serial.rs485.RS485(...) - ser.rs485_mode = serial.rs485.RS485Settings(...) - ser.write(b'hello') - - .. warning:: This may work unreliably on some serial ports (control signals not - synchronized or delayed compared to data). Using delays may be unreliable - (varying times, larger than expected) as the OS may not support very fine - grained delays (no smaller than in the order of tens of milliseconds). - - .. note:: Some implementations support this natively in the class - :class:`Serial`. Better performance can be expected when the native version - is used. - - .. note:: The loopback property is ignored by this implementation. The actual - behavior depends on the used hardware. - - - -:rfc:`2217` Network ports -------------------------- - -.. warning:: This implementation is currently in an experimental state. Use - at your own risk. - -.. class:: rfc2217.Serial - - This implements a :rfc:`2217` compatible client. Port names are :ref:`URL - ` in the form: ``rfc2217://:[?