stringtools/_docs_/stringtools.html
2025-08-17 11:18:46 +02:00

704 lines
64 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en" data-content_root="./">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>stringtools package &#8212; stringtools documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
<link rel="stylesheet" type="text/css" href="_static/classic.css?v=67a6116b" />
<link rel="stylesheet" type="text/css" href="_static/pydoctheme.css?v=5ff89526" />
<link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="_static/pygments_dark.css?v=5349f25f" />
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /><link rel="stylesheet" href="_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">
<link rel="shortcut icon" type="image/png" href="_static/py.svg">
<script type="text/javascript" src="_static/copybutton.js"></script>
<script type="text/javascript" src="_static/menu.js"></script>
<script type="text/javascript" src="_static/search-focus.js"></script>
<script type="text/javascript" src="_static/themetoggle.js"></script>
</head>
<body>
<div class="mobile-nav">
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu">
<nav class="nav-content" role="navigation">
<label for="menuToggler" class="toggler__label">
<span></span>
</label>
<span class="nav-items-wrapper">
<a href="https://www.python.org/" class="nav-logo">
<img src="_static/py.svg" alt="Python logo">
</a>
<span class="version_switcher_placeholder"></span>
<form role="search" class="search" action="search.html" method="get">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
<path fill-rule="nonzero" fill="currentColor" d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>
</svg>
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q">
<input type="submit" value="Go">
</form>
</span>
</nav>
<div class="menu-wrapper">
<nav class="menu" role="navigation" aria-label="main navigation">
<div class="language_switcher_placeholder"></div>
<label class="theme-selector-label">
Theme
<select class="theme-selector" oninput="activateTheme(this.value)">
<option value="auto" selected>Auto</option>
<option value="light">Light</option>
<option value="dark">Dark</option>
</select>
</label>
<div>
<h3><a href="#">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">stringtools package</a><ul>
<li><a class="reference internal" href="#stringtools-stringtools">stringtools (Stringtools)</a></li>
<li><a class="reference internal" href="#stringtools.gzip_compress"><code class="docutils literal notranslate"><span class="pre">gzip_compress()</span></code></a></li>
<li><a class="reference internal" href="#stringtools.gzip_extract"><code class="docutils literal notranslate"><span class="pre">gzip_extract()</span></code></a></li>
<li><a class="reference internal" href="#stringtools.hexlify"><code class="docutils literal notranslate"><span class="pre">hexlify()</span></code></a></li>
<li><a class="reference internal" href="#submodules">Submodules</a></li>
<li><a class="reference internal" href="#module-stringtools.csp">stringtools.csp module</a><ul>
<li><a class="reference internal" href="#stringtools-csp-carriage-return-seperation-protocol">stringtools.csp (Carriage-Return seperation protocol)</a></li>
<li><a class="reference internal" href="#stringtools.csp.build_frame"><code class="docutils literal notranslate"><span class="pre">build_frame()</span></code></a></li>
<li><a class="reference internal" href="#stringtools.csp.csp"><code class="docutils literal notranslate"><span class="pre">csp</span></code></a><ul>
<li><a class="reference internal" href="#stringtools.csp.csp.LOG_PREFIX"><code class="docutils literal notranslate"><span class="pre">csp.LOG_PREFIX</span></code></a></li>
<li><a class="reference internal" href="#stringtools.csp.csp.process"><code class="docutils literal notranslate"><span class="pre">csp.process()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#module-stringtools.stp">stringtools.stp module</a><ul>
<li><a class="reference internal" href="#stringtools-stp-serial-transfer-protocol">stringtools.stp (Serial transfer protocol)</a></li>
<li><a class="reference internal" href="#stringtools.stp.DATA_CLEAR_BUFFER"><code class="docutils literal notranslate"><span class="pre">DATA_CLEAR_BUFFER</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.DATA_STORE_SYNC_VALUE"><code class="docutils literal notranslate"><span class="pre">DATA_STORE_SYNC_VALUE</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.DATA_SYNC"><code class="docutils literal notranslate"><span class="pre">DATA_SYNC</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.DATA_VALID_MSG"><code class="docutils literal notranslate"><span class="pre">DATA_VALID_MSG</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.STP_STATE_ESCAPE_1"><code class="docutils literal notranslate"><span class="pre">STP_STATE_ESCAPE_1</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.STP_STATE_ESCAPE_2"><code class="docutils literal notranslate"><span class="pre">STP_STATE_ESCAPE_2</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.STP_STATE_IDLE"><code class="docutils literal notranslate"><span class="pre">STP_STATE_IDLE</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.STP_STATE_STORE_DATA"><code class="docutils literal notranslate"><span class="pre">STP_STATE_STORE_DATA</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.build_frame"><code class="docutils literal notranslate"><span class="pre">build_frame()</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.stp"><code class="docutils literal notranslate"><span class="pre">stp</span></code></a><ul>
<li><a class="reference internal" href="#stringtools.stp.stp.LOG_PREFIX"><code class="docutils literal notranslate"><span class="pre">stp.LOG_PREFIX</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.stp.process"><code class="docutils literal notranslate"><span class="pre">stp.process()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/stringtools.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
<search id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
</nav>
</div>
</div>
<div class="related" role="navigation" aria-label="Related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><img src="_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
<a href="index.html">stringtools documentation</a> &#187;
</li>
<li class="nav-item nav-item-this"><a href="">stringtools package</a></li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="search.html" method="get">
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">
<input type="submit" value="Go">
</form>
</div>
|
</li>
<li class="right">
<label class="theme-selector-label">
Theme
<select class="theme-selector" oninput="activateTheme(this.value)">
<option value="auto" selected>Auto</option>
<option value="light">Light</option>
<option value="dark">Dark</option>
</select>
</label> |</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-stringtools">
<span id="stringtools-package"></span><h1>stringtools package<a class="headerlink" href="#module-stringtools" title="Link to this heading"></a></h1>
<section id="stringtools-stringtools">
<h2>stringtools (Stringtools)<a class="headerlink" href="#stringtools-stringtools" title="Link to this heading"></a></h2>
<p><strong>Author:</strong></p>
<ul class="simple">
<li><p>Dirk Alders &lt;<a class="reference external" href="mailto:sudo-dirk&#37;&#52;&#48;mount-mockery&#46;de">sudo-dirk<span>&#64;</span>mount-mockery<span>&#46;</span>de</a>&gt;</p></li>
</ul>
<p><strong>Description:</strong></p>
<blockquote>
<div><p>This Module supports functionality around string operations.</p>
</div></blockquote>
<p><strong>Submodules:</strong></p>
<ul class="simple">
<li><p><a class="reference internal" href="#module-stringtools.csp" title="stringtools.csp"><code class="xref py py-mod docutils literal notranslate"><span class="pre">stringtools.csp</span></code></a></p></li>
<li><p><a class="reference internal" href="#module-stringtools.stp" title="stringtools.stp"><code class="xref py py-mod docutils literal notranslate"><span class="pre">stringtools.stp</span></code></a></p></li>
<li><p><a class="reference internal" href="#stringtools.gzip_compress" title="stringtools.gzip_compress"><code class="xref py py-func docutils literal notranslate"><span class="pre">gzip_compress()</span></code></a></p></li>
<li><p><a class="reference internal" href="#stringtools.gzip_extract" title="stringtools.gzip_extract"><code class="xref py py-func docutils literal notranslate"><span class="pre">gzip_extract()</span></code></a></p></li>
<li><p><a class="reference internal" href="#stringtools.hexlify" title="stringtools.hexlify"><code class="xref py py-func docutils literal notranslate"><span class="pre">hexlify()</span></code></a></p></li>
</ul>
<p><strong>Unittest:</strong></p>
<blockquote>
<div><p>See also the <a class="reference download internal" download="" href="_downloads/74bf2d266ab1f5e92547a96f9516e30f/unittest.pdf"><code class="xref download docutils literal notranslate"><span class="pre">unittest</span></code></a> documentation.</p>
</div></blockquote>
<p><strong>Module Documentation:</strong></p>
</section>
<dl class="py function">
<dt class="sig sig-object py" id="stringtools.gzip_compress">
<span class="sig-prename descclassname"><span class="pre">stringtools.</span></span><span class="sig-name descname"><span class="pre">gzip_compress</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">s</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">compresslevel</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">9</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#stringtools.gzip_compress" title="Link to this definition"></a></dt>
<dd><p>Method to compress a stream of bytes.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>s</strong> (<em>str</em>) The bytestream (string) to be compressed</p></li>
<li><p><strong>compresslevel</strong> (<em>int</em>) An optional compressionn level (default is 9)</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>The compressed bytestream</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>str</p>
</dd>
</dl>
<p><strong>Example:</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> <span class="c1"># nopep8</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;../..&#39;</span><span class="p">)</span> <span class="c1"># nopep8</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">stringtools</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">report</span>
<span class="n">report</span><span class="o">.</span><span class="n">default_logging_config</span><span class="p">()</span>
<span class="nb">print</span><span class="p">(</span><span class="n">stringtools</span><span class="o">.</span><span class="n">hexlify</span><span class="p">(</span><span class="n">stringtools</span><span class="o">.</span><span class="n">gzip_compress</span><span class="p">(</span><span class="mi">15</span> <span class="o">*</span> <span class="sa">b</span><span class="s1">&#39;</span><span class="se">\x00</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="mi">15</span> <span class="o">*</span> <span class="sa">b</span><span class="s1">&#39;</span><span class="se">\xff</span><span class="s1">&#39;</span><span class="p">)))</span>
</pre></div>
</div>
<p>Will result to the following output:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span> <span class="o">-</span> <span class="n">GZIP</span><span class="p">:</span> <span class="n">Finished</span> <span class="n">to</span> <span class="n">compress</span> <span class="n">a</span> <span class="n">string</span> <span class="p">(</span><span class="n">compression_rate</span><span class="o">=</span><span class="mf">0.867</span><span class="p">,</span> <span class="n">consumed_time</span><span class="o">=</span><span class="mf">0.0</span><span class="n">s</span><span class="p">)</span><span class="o">.</span>
<span class="p">(</span><span class="mi">26</span><span class="p">):</span> <span class="mi">1</span><span class="n">f</span> <span class="mi">8</span><span class="n">b</span> <span class="mi">08</span> <span class="mi">00</span> <span class="mi">9</span><span class="n">f</span> <span class="mi">9</span><span class="n">a</span> <span class="n">a1</span> <span class="mi">68</span> <span class="mi">02</span> <span class="n">ff</span> <span class="mi">63</span> <span class="mi">60</span> <span class="mi">40</span> <span class="mi">01</span> <span class="n">ff</span> <span class="mi">51</span> <span class="mi">01</span> <span class="mi">00</span> <span class="mi">2</span><span class="n">d</span> <span class="mi">8</span><span class="n">a</span> <span class="mi">7</span><span class="n">d</span> <span class="n">de</span> <span class="mi">1</span><span class="n">e</span> <span class="mi">00</span> <span class="mi">00</span> <span class="mi">00</span>
</pre></div>
</div>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="stringtools.gzip_extract">
<span class="sig-prename descclassname"><span class="pre">stringtools.</span></span><span class="sig-name descname"><span class="pre">gzip_extract</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">s</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#stringtools.gzip_extract" title="Link to this definition"></a></dt>
<dd><p>Method to extract data from a compress stream of bytes.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>s</strong> (<em>str</em>) The compressed bytestream (string) to be extracted</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>The extracted data</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>str</p>
</dd>
</dl>
<p><strong>Example:</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> <span class="c1"># nopep8</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;../..&#39;</span><span class="p">)</span> <span class="c1"># nopep8</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">stringtools</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">report</span>
<span class="n">report</span><span class="o">.</span><span class="n">default_logging_config</span><span class="p">()</span>
<span class="nb">print</span><span class="p">(</span><span class="n">stringtools</span><span class="o">.</span><span class="n">hexlify</span><span class="p">(</span><span class="n">stringtools</span><span class="o">.</span><span class="n">gzip_extract</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;</span><span class="se">\x1f\x8b\x08\x00\xd0\x82\xe5\x5c\x02\xff\x63\x60\x40\x01\xff\x51\x01\x00\x2d\x8a\x7d\xde\x1e\x00\x00\x00</span><span class="s1">&#39;</span><span class="p">)))</span>
</pre></div>
</div>
<p>Will result to the following output:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span> <span class="o">-</span> <span class="n">GZIP</span><span class="p">:</span> <span class="n">Finished</span> <span class="n">to</span> <span class="n">extract</span> <span class="n">a</span> <span class="n">string</span> <span class="p">(</span><span class="n">compression_rate</span><span class="o">=</span><span class="mf">0.867</span><span class="p">,</span> <span class="n">consumed_time</span><span class="o">=</span><span class="mf">0.0</span><span class="n">s</span><span class="p">)</span><span class="o">.</span>
<span class="p">(</span><span class="mi">30</span><span class="p">):</span> <span class="mi">00</span> <span class="mi">00</span> <span class="mi">00</span> <span class="mi">00</span> <span class="mi">00</span> <span class="mi">00</span> <span class="mi">00</span> <span class="mi">00</span> <span class="mi">00</span> <span class="mi">00</span> <span class="mi">00</span> <span class="mi">00</span> <span class="mi">00</span> <span class="mi">00</span> <span class="mi">00</span> <span class="n">ff</span> <span class="n">ff</span> <span class="n">ff</span> <span class="n">ff</span> <span class="n">ff</span> <span class="n">ff</span> <span class="n">ff</span> <span class="n">ff</span> <span class="n">ff</span> <span class="n">ff</span> <span class="n">ff</span> <span class="n">ff</span> <span class="n">ff</span> <span class="n">ff</span> <span class="n">ff</span>
</pre></div>
</div>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="stringtools.hexlify">
<span class="sig-prename descclassname"><span class="pre">stringtools.</span></span><span class="sig-name descname"><span class="pre">hexlify</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">s</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#stringtools.hexlify" title="Link to this definition"></a></dt>
<dd><p>Method to hexlify a string.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>s</strong> (<em>str</em>) A string including the bytes to be hexlified.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>The hexlified string</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>str</p>
</dd>
</dl>
<p><strong>Example:</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> <span class="c1"># nopep8</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;../..&#39;</span><span class="p">)</span> <span class="c1"># nopep8</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">stringtools</span>
<span class="nb">print</span><span class="p">(</span><span class="n">stringtools</span><span class="o">.</span><span class="n">hexlify</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;A stringexample with non printable characters like </span><span class="se">\x12</span><span class="s1">&#39;</span><span class="p">))</span>
</pre></div>
</div>
<p>Will result to the following output:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">(</span><span class="mi">52</span><span class="p">):</span> <span class="mi">41</span> <span class="mi">20</span> <span class="mi">73</span> <span class="mi">74</span> <span class="mi">72</span> <span class="mi">69</span> <span class="mi">6</span><span class="n">e</span> <span class="mi">67</span> <span class="mi">65</span> <span class="mi">78</span> <span class="mi">61</span> <span class="mi">6</span><span class="n">d</span> <span class="mi">70</span> <span class="mi">6</span><span class="n">c</span> <span class="mi">65</span> <span class="mi">20</span> <span class="mi">77</span> <span class="mi">69</span> <span class="mi">74</span> <span class="mi">68</span> <span class="mi">20</span> <span class="mi">6</span><span class="n">e</span> <span class="mi">6</span><span class="n">f</span> <span class="mi">6</span><span class="n">e</span> <span class="mi">20</span> <span class="mi">70</span> <span class="mi">72</span> <span class="mi">69</span> <span class="mi">6</span><span class="n">e</span> <span class="mi">74</span> <span class="mi">61</span> <span class="mi">62</span> <span class="mi">6</span><span class="n">c</span> <span class="mi">65</span> <span class="mi">20</span> <span class="mi">63</span> <span class="mi">68</span> <span class="mi">61</span> <span class="mi">72</span> <span class="mi">61</span> <span class="mi">63</span> <span class="mi">74</span> <span class="mi">65</span> <span class="mi">72</span> <span class="mi">73</span> <span class="mi">20</span> <span class="mi">6</span><span class="n">c</span> <span class="mi">69</span> <span class="mi">6</span><span class="n">b</span> <span class="mi">65</span> <span class="mi">20</span> <span class="mi">12</span>
</pre></div>
</div>
</dd></dl>
<section id="submodules">
<h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading"></a></h2>
</section>
<section id="module-stringtools.csp">
<span id="stringtools-csp-module"></span><h2>stringtools.csp module<a class="headerlink" href="#module-stringtools.csp" title="Link to this heading"></a></h2>
<section id="stringtools-csp-carriage-return-seperation-protocol">
<h3>stringtools.csp (Carriage-Return seperation protocol)<a class="headerlink" href="#stringtools-csp-carriage-return-seperation-protocol" title="Link to this heading"></a></h3>
<p><strong>Author:</strong></p>
<ul class="simple">
<li><p>Dirk Alders &lt;<a class="reference external" href="mailto:sudo-dirk&#37;&#52;&#48;mount-mockery&#46;de">sudo-dirk<span>&#64;</span>mount-mockery<span>&#46;</span>de</a>&gt;</p></li>
</ul>
<p><strong>Description:</strong></p>
<blockquote>
<div><p>This module is a submodule of <a class="reference internal" href="#module-stringtools" title="stringtools"><code class="xref py py-mod docutils literal notranslate"><span class="pre">stringtools</span></code></a> and creates an frame to transmit and receive messages via an serial interface.</p>
</div></blockquote>
<p><strong>Submodules:</strong></p>
<ul class="simple">
<li><p><a class="reference internal" href="#stringtools.csp.csp" title="stringtools.csp.csp"><code class="xref py py-class docutils literal notranslate"><span class="pre">stringtools.csp.csp</span></code></a></p></li>
<li><p><a class="reference internal" href="#stringtools.csp.build_frame" title="stringtools.csp.build_frame"><code class="xref py py-func docutils literal notranslate"><span class="pre">stringtools.csp.build_frame()</span></code></a></p></li>
</ul>
</section>
<dl class="py function">
<dt class="sig sig-object py" id="stringtools.csp.build_frame">
<span class="sig-prename descclassname"><span class="pre">stringtools.csp.</span></span><span class="sig-name descname"><span class="pre">build_frame</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">msg</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seperator</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">b'\n'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#stringtools.csp.build_frame" title="Link to this definition"></a></dt>
<dd><p>This Method builds an “csp-frame” to be transfered via a stream.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>data</strong> (<em>str</em>) A String (Bytes) to be framed</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>The “csp-framed” message to be sent</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>str</p>
</dd>
</dl>
<p><strong>Example:</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> <span class="c1"># nopep8</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;../..&#39;</span><span class="p">)</span> <span class="c1"># nopep8</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">stringtools</span>
<span class="n">data</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">&#39;message&#39;</span>
<span class="nb">print</span><span class="p">(</span><span class="n">stringtools</span><span class="o">.</span><span class="n">hexlify</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="n">stringtools</span><span class="o">.</span><span class="n">hexlify</span><span class="p">(</span><span class="n">stringtools</span><span class="o">.</span><span class="n">csp</span><span class="o">.</span><span class="n">build_frame</span><span class="p">(</span><span class="n">data</span><span class="p">)))</span>
</pre></div>
</div>
<p>Will result to the following output:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">(</span><span class="mi">7</span><span class="p">):</span> <span class="mi">6</span><span class="n">d</span> <span class="mi">65</span> <span class="mi">73</span> <span class="mi">73</span> <span class="mi">61</span> <span class="mi">67</span> <span class="mi">65</span>
<span class="p">(</span><span class="mi">8</span><span class="p">):</span> <span class="mi">6</span><span class="n">d</span> <span class="mi">65</span> <span class="mi">73</span> <span class="mi">73</span> <span class="mi">61</span> <span class="mi">67</span> <span class="mi">65</span> <span class="mi">0</span><span class="n">a</span>
</pre></div>
</div>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="stringtools.csp.csp">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">stringtools.csp.</span></span><span class="sig-name descname"><span class="pre">csp</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">seperator</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">b'\n'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#stringtools.csp.csp" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>This class extracts messages from an “csp-stream”.</p>
<p><strong>Example:</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> <span class="c1"># nopep8</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;../..&#39;</span><span class="p">)</span> <span class="c1"># nopep8</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">report</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">stringtools</span>
<span class="n">report</span><span class="o">.</span><span class="n">default_logging_config</span><span class="p">()</span>
<span class="n">s</span> <span class="o">=</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">csp</span><span class="o">.</span><span class="n">csp</span><span class="p">()</span>
<span class="k">for</span> <span class="n">byte</span> <span class="ow">in</span> <span class="sa">b</span><span class="s1">&#39;message</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">:</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">process</span><span class="p">(</span><span class="nb">bytes</span><span class="p">([</span><span class="n">byte</span><span class="p">]))</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
</pre></div>
</div>
<p>Will result to the following output:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">csp</span> <span class="o">-</span> <span class="n">CSP</span><span class="p">:</span> <span class="n">Leaving</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">buffer</span> <span class="p">(</span><span class="n">to</span> <span class="n">be</span> <span class="n">processed</span> <span class="nb">next</span> <span class="n">time</span><span class="p">):</span> <span class="p">(</span><span class="mi">1</span><span class="p">):</span> <span class="mi">6</span><span class="n">d</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">csp</span> <span class="o">-</span> <span class="n">CSP</span><span class="p">:</span> <span class="n">Leaving</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">buffer</span> <span class="p">(</span><span class="n">to</span> <span class="n">be</span> <span class="n">processed</span> <span class="nb">next</span> <span class="n">time</span><span class="p">):</span> <span class="p">(</span><span class="mi">2</span><span class="p">):</span> <span class="mi">6</span><span class="n">d</span> <span class="mi">65</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">csp</span> <span class="o">-</span> <span class="n">CSP</span><span class="p">:</span> <span class="n">Leaving</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">buffer</span> <span class="p">(</span><span class="n">to</span> <span class="n">be</span> <span class="n">processed</span> <span class="nb">next</span> <span class="n">time</span><span class="p">):</span> <span class="p">(</span><span class="mi">3</span><span class="p">):</span> <span class="mi">6</span><span class="n">d</span> <span class="mi">65</span> <span class="mi">73</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">csp</span> <span class="o">-</span> <span class="n">CSP</span><span class="p">:</span> <span class="n">Leaving</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">buffer</span> <span class="p">(</span><span class="n">to</span> <span class="n">be</span> <span class="n">processed</span> <span class="nb">next</span> <span class="n">time</span><span class="p">):</span> <span class="p">(</span><span class="mi">4</span><span class="p">):</span> <span class="mi">6</span><span class="n">d</span> <span class="mi">65</span> <span class="mi">73</span> <span class="mi">73</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">csp</span> <span class="o">-</span> <span class="n">CSP</span><span class="p">:</span> <span class="n">Leaving</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">buffer</span> <span class="p">(</span><span class="n">to</span> <span class="n">be</span> <span class="n">processed</span> <span class="nb">next</span> <span class="n">time</span><span class="p">):</span> <span class="p">(</span><span class="mi">5</span><span class="p">):</span> <span class="mi">6</span><span class="n">d</span> <span class="mi">65</span> <span class="mi">73</span> <span class="mi">73</span> <span class="mi">61</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">csp</span> <span class="o">-</span> <span class="n">CSP</span><span class="p">:</span> <span class="n">Leaving</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">buffer</span> <span class="p">(</span><span class="n">to</span> <span class="n">be</span> <span class="n">processed</span> <span class="nb">next</span> <span class="n">time</span><span class="p">):</span> <span class="p">(</span><span class="mi">6</span><span class="p">):</span> <span class="mi">6</span><span class="n">d</span> <span class="mi">65</span> <span class="mi">73</span> <span class="mi">73</span> <span class="mi">61</span> <span class="mi">67</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">csp</span> <span class="o">-</span> <span class="n">CSP</span><span class="p">:</span> <span class="n">Leaving</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">buffer</span> <span class="p">(</span><span class="n">to</span> <span class="n">be</span> <span class="n">processed</span> <span class="nb">next</span> <span class="n">time</span><span class="p">):</span> <span class="p">(</span><span class="mi">7</span><span class="p">):</span> <span class="mi">6</span><span class="n">d</span> <span class="mi">65</span> <span class="mi">73</span> <span class="mi">73</span> <span class="mi">61</span> <span class="mi">67</span> <span class="mi">65</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">csp</span> <span class="o">-</span> <span class="n">CSP</span><span class="p">:</span> <span class="n">message</span> <span class="n">identified</span> <span class="o">-</span> <span class="p">(</span><span class="mi">7</span><span class="p">):</span> <span class="mi">6</span><span class="n">d</span> <span class="mi">65</span> <span class="mi">73</span> <span class="mi">73</span> <span class="mi">61</span> <span class="mi">67</span> <span class="mi">65</span>
<span class="p">[</span><span class="sa">b</span><span class="s1">&#39;message&#39;</span><span class="p">]</span>
</pre></div>
</div>
<dl class="py attribute">
<dt class="sig sig-object py" id="stringtools.csp.csp.LOG_PREFIX">
<span class="sig-name descname"><span class="pre">LOG_PREFIX</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'CSP:'</span></em><a class="headerlink" href="#stringtools.csp.csp.LOG_PREFIX" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="stringtools.csp.csp.process">
<span class="sig-name descname"><span class="pre">process</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#stringtools.csp.csp.process" title="Link to this definition"></a></dt>
<dd><p>This processes a byte out of a “stp-stream”.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>data</strong> (<em>bytes</em>) A byte stream</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>A list of the extracted message(s)</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>list</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</section>
<section id="module-stringtools.stp">
<span id="stringtools-stp-module"></span><h2>stringtools.stp module<a class="headerlink" href="#module-stringtools.stp" title="Link to this heading"></a></h2>
<section id="stringtools-stp-serial-transfer-protocol">
<h3>stringtools.stp (Serial transfer protocol)<a class="headerlink" href="#stringtools-stp-serial-transfer-protocol" title="Link to this heading"></a></h3>
<p><strong>Author:</strong></p>
<ul class="simple">
<li><p>Dirk Alders &lt;<a class="reference external" href="mailto:sudo-dirk&#37;&#52;&#48;mount-mockery&#46;de">sudo-dirk<span>&#64;</span>mount-mockery<span>&#46;</span>de</a>&gt;</p></li>
</ul>
<p><strong>Description:</strong></p>
<blockquote>
<div><p>This module is a submodule of <a class="reference internal" href="#module-stringtools" title="stringtools"><code class="xref py py-mod docutils literal notranslate"><span class="pre">stringtools</span></code></a> and creates an serial frame to transmit and receive messages via an serial interface.</p>
</div></blockquote>
<p><strong>Submodules:</strong></p>
<ul class="simple">
<li><p><a class="reference internal" href="#stringtools.stp.stp" title="stringtools.stp.stp"><code class="xref py py-class docutils literal notranslate"><span class="pre">stringtools.stp.stp</span></code></a></p></li>
<li><p><a class="reference internal" href="#stringtools.stp.build_frame" title="stringtools.stp.build_frame"><code class="xref py py-func docutils literal notranslate"><span class="pre">stringtools.stp.build_frame()</span></code></a></p></li>
</ul>
</section>
<dl class="py data">
<dt class="sig sig-object py" id="stringtools.stp.DATA_CLEAR_BUFFER">
<span class="sig-prename descclassname"><span class="pre">stringtools.stp.</span></span><span class="sig-name descname"><span class="pre">DATA_CLEAR_BUFFER</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">b'&lt;'</span></em><a class="headerlink" href="#stringtools.stp.DATA_CLEAR_BUFFER" title="Link to this definition"></a></dt>
<dd><p>The clear buffer byte (\x3a\x3c -&gt; start of message)</p>
</dd></dl>
<dl class="py data">
<dt class="sig sig-object py" id="stringtools.stp.DATA_STORE_SYNC_VALUE">
<span class="sig-prename descclassname"><span class="pre">stringtools.stp.</span></span><span class="sig-name descname"><span class="pre">DATA_STORE_SYNC_VALUE</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">b'='</span></em><a class="headerlink" href="#stringtools.stp.DATA_STORE_SYNC_VALUE" title="Link to this definition"></a></dt>
<dd><p>The store sync value byte (\x3a\x3d -&gt; \x3a inside a message)</p>
</dd></dl>
<dl class="py data">
<dt class="sig sig-object py" id="stringtools.stp.DATA_SYNC">
<span class="sig-prename descclassname"><span class="pre">stringtools.stp.</span></span><span class="sig-name descname"><span class="pre">DATA_SYNC</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">b':'</span></em><a class="headerlink" href="#stringtools.stp.DATA_SYNC" title="Link to this definition"></a></dt>
<dd><p>The data sync byte</p>
</dd></dl>
<dl class="py data">
<dt class="sig sig-object py" id="stringtools.stp.DATA_VALID_MSG">
<span class="sig-prename descclassname"><span class="pre">stringtools.stp.</span></span><span class="sig-name descname"><span class="pre">DATA_VALID_MSG</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">b'&gt;'</span></em><a class="headerlink" href="#stringtools.stp.DATA_VALID_MSG" title="Link to this definition"></a></dt>
<dd><p>The valid message byte (\x3a\x3e -&gt; end of message)</p>
</dd></dl>
<dl class="py data">
<dt class="sig sig-object py" id="stringtools.stp.STP_STATE_ESCAPE_1">
<span class="sig-prename descclassname"><span class="pre">stringtools.stp.</span></span><span class="sig-name descname"><span class="pre">STP_STATE_ESCAPE_1</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">1</span></em><a class="headerlink" href="#stringtools.stp.STP_STATE_ESCAPE_1" title="Link to this definition"></a></dt>
<dd><p>Escape 1 state definition (\x3a\x3c found)</p>
</dd></dl>
<dl class="py data">
<dt class="sig sig-object py" id="stringtools.stp.STP_STATE_ESCAPE_2">
<span class="sig-prename descclassname"><span class="pre">stringtools.stp.</span></span><span class="sig-name descname"><span class="pre">STP_STATE_ESCAPE_2</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">2</span></em><a class="headerlink" href="#stringtools.stp.STP_STATE_ESCAPE_2" title="Link to this definition"></a></dt>
<dd><p>Escape 2 state definition (\x3a found inside a message)</p>
</dd></dl>
<dl class="py data">
<dt class="sig sig-object py" id="stringtools.stp.STP_STATE_IDLE">
<span class="sig-prename descclassname"><span class="pre">stringtools.stp.</span></span><span class="sig-name descname"><span class="pre">STP_STATE_IDLE</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0</span></em><a class="headerlink" href="#stringtools.stp.STP_STATE_IDLE" title="Link to this definition"></a></dt>
<dd><p>Idle state definition (default)</p>
</dd></dl>
<dl class="py data">
<dt class="sig sig-object py" id="stringtools.stp.STP_STATE_STORE_DATA">
<span class="sig-prename descclassname"><span class="pre">stringtools.stp.</span></span><span class="sig-name descname"><span class="pre">STP_STATE_STORE_DATA</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">3</span></em><a class="headerlink" href="#stringtools.stp.STP_STATE_STORE_DATA" title="Link to this definition"></a></dt>
<dd><p>Store data state definition (start of message found; data will be stored)</p>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="stringtools.stp.build_frame">
<span class="sig-prename descclassname"><span class="pre">stringtools.stp.</span></span><span class="sig-name descname"><span class="pre">build_frame</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#stringtools.stp.build_frame" title="Link to this definition"></a></dt>
<dd><p>This Method builds an “stp-frame” to be transfered via a stream.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>data</strong> (<em>str</em>) A String (Bytes) to be framed</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>The “stp-framed” message to be sent</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>str</p>
</dd>
</dl>
<p><strong>Example:</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> <span class="c1"># nopep8</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;../..&#39;</span><span class="p">)</span> <span class="c1"># nopep8</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">stringtools</span>
<span class="nb">print</span><span class="p">(</span><span class="nb">repr</span><span class="p">(</span><span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span><span class="o">.</span><span class="n">build_frame</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;:message:&#39;</span><span class="p">)))</span>
</pre></div>
</div>
<p>Will result to the following output:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="sa">b</span><span class="s1">&#39;:&lt;:=message:=:&gt;&#39;</span>
</pre></div>
</div>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="stringtools.stp.stp">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">stringtools.stp.</span></span><span class="sig-name descname"><span class="pre">stp</span></span><a class="headerlink" href="#stringtools.stp.stp" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>This class extracts messages from an “stp-stream”.</p>
<p><strong>Example:</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> <span class="c1"># nopep8</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;../..&#39;</span><span class="p">)</span> <span class="c1"># nopep8</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">report</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">stringtools</span>
<span class="n">report</span><span class="o">.</span><span class="n">default_logging_config</span><span class="p">()</span>
<span class="n">s</span> <span class="o">=</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span><span class="o">.</span><span class="n">stp</span><span class="p">()</span>
<span class="k">for</span> <span class="n">byte</span> <span class="ow">in</span> <span class="sa">b</span><span class="s1">&#39;:&lt;:=message:=:&gt;&#39;</span><span class="p">:</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">process</span><span class="p">(</span><span class="nb">bytes</span><span class="p">([</span><span class="n">byte</span><span class="p">]))</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
</pre></div>
</div>
<p>Will result to the following output:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">data</span> <span class="n">sync</span> <span class="p">(</span><span class="mi">3</span><span class="n">a</span><span class="p">)</span> <span class="n">received</span> <span class="o">=&gt;</span> <span class="n">changing</span> <span class="n">state</span> <span class="n">STP_STATE_IDLE</span> <span class="o">-&gt;</span> <span class="n">STP_STATE_ESCAPE_1</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">start</span> <span class="n">pattern</span> <span class="p">(</span><span class="mi">3</span><span class="n">a</span> <span class="mi">3</span><span class="n">c</span><span class="p">)</span> <span class="n">received</span> <span class="o">=&gt;</span> <span class="n">changing</span> <span class="n">state</span> <span class="n">STP_STATE_ESCAPE_1</span> <span class="o">-&gt;</span> <span class="n">STP_STATE_STORE_DATA</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">data</span> <span class="n">sync</span> <span class="p">(</span><span class="mi">3</span><span class="n">a</span><span class="p">)</span> <span class="n">received</span> <span class="o">=&gt;</span> <span class="n">changing</span> <span class="n">state</span> <span class="n">STP_STATE_STORE_DATA</span> <span class="o">-&gt;</span> <span class="n">STP_STATE_ESCAPE_2</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">store</span> <span class="n">sync</span> <span class="n">pattern</span> <span class="p">(</span><span class="mi">3</span><span class="n">a</span> <span class="mi">3</span><span class="n">d</span><span class="p">)</span> <span class="n">received</span> <span class="o">=&gt;</span> <span class="n">changing</span> <span class="n">state</span> <span class="n">STP_STATE_ESCAPE_2</span> <span class="o">-&gt;</span> <span class="n">STP_STATE_STORE_DATA</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">data</span> <span class="n">sync</span> <span class="p">(</span><span class="mi">3</span><span class="n">a</span><span class="p">)</span> <span class="n">received</span> <span class="o">=&gt;</span> <span class="n">changing</span> <span class="n">state</span> <span class="n">STP_STATE_STORE_DATA</span> <span class="o">-&gt;</span> <span class="n">STP_STATE_ESCAPE_2</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">store</span> <span class="n">sync</span> <span class="n">pattern</span> <span class="p">(</span><span class="mi">3</span><span class="n">a</span> <span class="mi">3</span><span class="n">d</span><span class="p">)</span> <span class="n">received</span> <span class="o">=&gt;</span> <span class="n">changing</span> <span class="n">state</span> <span class="n">STP_STATE_ESCAPE_2</span> <span class="o">-&gt;</span> <span class="n">STP_STATE_STORE_DATA</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">data</span> <span class="n">sync</span> <span class="p">(</span><span class="mi">3</span><span class="n">a</span><span class="p">)</span> <span class="n">received</span> <span class="o">=&gt;</span> <span class="n">changing</span> <span class="n">state</span> <span class="n">STP_STATE_STORE_DATA</span> <span class="o">-&gt;</span> <span class="n">STP_STATE_ESCAPE_2</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">end</span> <span class="n">pattern</span> <span class="p">(</span><span class="mi">3</span><span class="n">a</span> <span class="mi">3</span><span class="n">e</span><span class="p">)</span> <span class="n">received</span> <span class="o">=&gt;</span> <span class="n">storing</span> <span class="n">message</span> <span class="ow">and</span> <span class="n">changing</span> <span class="n">state</span> <span class="n">STP_STATE_ESCAPE_2</span> <span class="o">-&gt;</span> <span class="n">STP_STATE_IDLE</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">message</span> <span class="n">identified</span> <span class="o">-</span> <span class="p">(</span><span class="mi">9</span><span class="p">):</span> <span class="mi">3</span><span class="n">a</span> <span class="mi">6</span><span class="n">d</span> <span class="mi">65</span> <span class="mi">73</span> <span class="mi">73</span> <span class="mi">61</span> <span class="mi">67</span> <span class="mi">65</span> <span class="mi">3</span><span class="n">a</span>
<span class="p">[</span><span class="sa">b</span><span class="s1">&#39;:message:&#39;</span><span class="p">]</span>
</pre></div>
</div>
<dl class="py attribute">
<dt class="sig sig-object py" id="stringtools.stp.stp.LOG_PREFIX">
<span class="sig-name descname"><span class="pre">LOG_PREFIX</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'STP:'</span></em><a class="headerlink" href="#stringtools.stp.stp.LOG_PREFIX" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="stringtools.stp.stp.process">
<span class="sig-name descname"><span class="pre">process</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#stringtools.stp.stp.process" title="Link to this definition"></a></dt>
<dd><p>This processes a byte out of a “stp-stream”.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>data</strong> (<em>bytes</em>) A byte stream</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>The extracted message or None, if no message is identified yet</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>str</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</section>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<div>
<h3><a href="#">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">stringtools package</a><ul>
<li><a class="reference internal" href="#stringtools-stringtools">stringtools (Stringtools)</a></li>
<li><a class="reference internal" href="#stringtools.gzip_compress"><code class="docutils literal notranslate"><span class="pre">gzip_compress()</span></code></a></li>
<li><a class="reference internal" href="#stringtools.gzip_extract"><code class="docutils literal notranslate"><span class="pre">gzip_extract()</span></code></a></li>
<li><a class="reference internal" href="#stringtools.hexlify"><code class="docutils literal notranslate"><span class="pre">hexlify()</span></code></a></li>
<li><a class="reference internal" href="#submodules">Submodules</a></li>
<li><a class="reference internal" href="#module-stringtools.csp">stringtools.csp module</a><ul>
<li><a class="reference internal" href="#stringtools-csp-carriage-return-seperation-protocol">stringtools.csp (Carriage-Return seperation protocol)</a></li>
<li><a class="reference internal" href="#stringtools.csp.build_frame"><code class="docutils literal notranslate"><span class="pre">build_frame()</span></code></a></li>
<li><a class="reference internal" href="#stringtools.csp.csp"><code class="docutils literal notranslate"><span class="pre">csp</span></code></a><ul>
<li><a class="reference internal" href="#stringtools.csp.csp.LOG_PREFIX"><code class="docutils literal notranslate"><span class="pre">csp.LOG_PREFIX</span></code></a></li>
<li><a class="reference internal" href="#stringtools.csp.csp.process"><code class="docutils literal notranslate"><span class="pre">csp.process()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#module-stringtools.stp">stringtools.stp module</a><ul>
<li><a class="reference internal" href="#stringtools-stp-serial-transfer-protocol">stringtools.stp (Serial transfer protocol)</a></li>
<li><a class="reference internal" href="#stringtools.stp.DATA_CLEAR_BUFFER"><code class="docutils literal notranslate"><span class="pre">DATA_CLEAR_BUFFER</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.DATA_STORE_SYNC_VALUE"><code class="docutils literal notranslate"><span class="pre">DATA_STORE_SYNC_VALUE</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.DATA_SYNC"><code class="docutils literal notranslate"><span class="pre">DATA_SYNC</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.DATA_VALID_MSG"><code class="docutils literal notranslate"><span class="pre">DATA_VALID_MSG</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.STP_STATE_ESCAPE_1"><code class="docutils literal notranslate"><span class="pre">STP_STATE_ESCAPE_1</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.STP_STATE_ESCAPE_2"><code class="docutils literal notranslate"><span class="pre">STP_STATE_ESCAPE_2</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.STP_STATE_IDLE"><code class="docutils literal notranslate"><span class="pre">STP_STATE_IDLE</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.STP_STATE_STORE_DATA"><code class="docutils literal notranslate"><span class="pre">STP_STATE_STORE_DATA</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.build_frame"><code class="docutils literal notranslate"><span class="pre">build_frame()</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.stp"><code class="docutils literal notranslate"><span class="pre">stp</span></code></a><ul>
<li><a class="reference internal" href="#stringtools.stp.stp.LOG_PREFIX"><code class="docutils literal notranslate"><span class="pre">stp.LOG_PREFIX</span></code></a></li>
<li><a class="reference internal" href="#stringtools.stp.stp.process"><code class="docutils literal notranslate"><span class="pre">stp.process()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/stringtools.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
<search id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="Related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><img src="_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
<a href="index.html">stringtools documentation</a> &#187;
</li>
<li class="nav-item nav-item-this"><a href="">stringtools package</a></li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="search.html" method="get">
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">
<input type="submit" value="Go">
</form>
</div>
|
</li>
<li class="right">
<label class="theme-selector-label">
Theme
<select class="theme-selector" oninput="activateTheme(this.value)">
<option value="auto" selected>Auto</option>
<option value="light">Light</option>
<option value="dark">Dark</option>
</select>
</label> |</li>
</ul>
</div>
<div class="footer">
&copy;
Copyright
2025, Dirk Alders.
<br>
This page is licensed under the Python Software Foundation License Version 2.
<br>
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
<br>
<br>
The Python Software Foundation is a non-profit corporation.
<a href="https://www.python.org/psf/donations/">Please donate.</a>
<br>
<br>
<br>
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.
</div>
</body>
</html>