<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Codesys service disables serial communication</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/e1dedad96a/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Runtime/thread/e1dedad96a/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Runtime/thread/e1dedad96a/</id><updated>2020-02-27T16:04:56.046000Z</updated><subtitle>Recent posts to Codesys service disables serial communication</subtitle><entry><title>Codesys service disables serial communication</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/e1dedad96a/?limit=25#5cc4" rel="alternate"/><published>2020-02-27T16:04:56.046000Z</published><updated>2020-02-27T16:04:56.046000Z</updated><author><name>NiekW</name><uri>https://forge.codesys.com/u/niekw/</uri></author><id>https://forge.codesys.com9e68697d379d573f76914cd51c43578093fb93f2</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;This is the python code that stops working when codesys service is active. Any ideas how to get both of them working in parallel?&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="s s-Atom"&gt;\#&lt;/span&gt;&lt;span class="p"&gt;!&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="s s-Atom"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="s s-Atom"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="s s-Atom"&gt;env&lt;/span&gt; &lt;span class="s s-Atom"&gt;python3&lt;/span&gt;
&lt;span class="s s-Atom"&gt;import&lt;/span&gt; &lt;span class="nv"&gt;RPi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;GPIO&lt;/span&gt; &lt;span class="s s-Atom"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;GPIO&lt;/span&gt;
&lt;span class="s s-Atom"&gt;import&lt;/span&gt; &lt;span class="s s-Atom"&gt;serial&lt;/span&gt;
&lt;span class="nv"&gt;ENABLE_PIN&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;              &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="nv"&gt;The&lt;/span&gt; &lt;span class="nv"&gt;BCM&lt;/span&gt; &lt;span class="s s-Atom"&gt;pin&lt;/span&gt; &lt;span class="s s-Atom"&gt;number&lt;/span&gt; &lt;span class="s s-Atom"&gt;corresponding&lt;/span&gt; &lt;span class="s s-Atom"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;GPIO1&lt;/span&gt;
&lt;span class="nv"&gt;SERIAL_PORT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s s-Atom"&gt;'/dev/ttyUSB0'&lt;/span&gt;  &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="nv"&gt;The&lt;/span&gt; &lt;span class="s s-Atom"&gt;location&lt;/span&gt; &lt;span class="s s-Atom"&gt;of&lt;/span&gt; &lt;span class="s s-Atom"&gt;our&lt;/span&gt; &lt;span class="s s-Atom"&gt;serial&lt;/span&gt; &lt;span class="s s-Atom"&gt;port&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;  &lt;span class="nv"&gt;This&lt;/span&gt; &lt;span class="s s-Atom"&gt;may&lt;/span&gt;
                              &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="s s-Atom"&gt;vary&lt;/span&gt; &lt;span class="s s-Atom"&gt;depending&lt;/span&gt; &lt;span class="s s-Atom"&gt;on&lt;/span&gt; &lt;span class="nv"&gt;OS&lt;/span&gt; &lt;span class="s s-Atom"&gt;and&lt;/span&gt; &lt;span class="nv"&gt;RPi&lt;/span&gt; &lt;span class="s s-Atom"&gt;version&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;  &lt;span class="nv"&gt;The&lt;/span&gt;
&lt;span class="s s-Atom"&gt;\#&lt;/span&gt;&lt;span class="nv"&gt;SERIAL_PORT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s s-Atom"&gt;'/dev/ttyS0'&lt;/span&gt;   &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="nv"&gt;RPi&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="s s-Atom"&gt;has&lt;/span&gt; &lt;span class="s s-Atom"&gt;apparently&lt;/span&gt; &lt;span class="s s-Atom"&gt;used&lt;/span&gt; &lt;span class="s s-Atom"&gt;'ttyAMA0'&lt;/span&gt; &lt;span class="s s-Atom"&gt;for&lt;/span&gt;
                              &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="nv"&gt;Bluetooth&lt;/span&gt; &lt;span class="s s-Atom"&gt;and&lt;/span&gt; &lt;span class="s s-Atom"&gt;assigned&lt;/span&gt; &lt;span class="s s-Atom"&gt;'ttyS0'&lt;/span&gt; &lt;span class="s s-Atom"&gt;to&lt;/span&gt; &lt;span class="s s-Atom"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;GPIO&lt;/span&gt;
                              &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="s s-Atom"&gt;serial&lt;/span&gt; &lt;span class="s s-Atom"&gt;port&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s s-Atom"&gt;so&lt;/span&gt; &lt;span class="s s-Atom"&gt;uncomment&lt;/span&gt; &lt;span class="s s-Atom"&gt;the&lt;/span&gt; &lt;span class="s s-Atom"&gt;appropriate&lt;/span&gt;
                              &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="nv"&gt;SERIAL_PORT&lt;/span&gt; &lt;span class="s s-Atom"&gt;definition&lt;/span&gt; &lt;span class="s s-Atom"&gt;for&lt;/span&gt; &lt;span class="s s-Atom"&gt;your&lt;/span&gt; &lt;span class="s s-Atom"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
                              &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="nv"&gt;Failing&lt;/span&gt; &lt;span class="s s-Atom"&gt;that&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s s-Atom"&gt;check&lt;/span&gt; &lt;span class="s s-Atom"&gt;the&lt;/span&gt; &lt;span class="s s-Atom"&gt;output&lt;/span&gt; &lt;span class="nn"&gt;of&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                              &lt;span class="s s-Atom"&gt;#&lt;/span&gt;   &lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="s s-Atom"&gt;dmesg&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="s s-Atom"&gt;grep&lt;/span&gt; &lt;span class="s s-Atom"&gt;serial&lt;/span&gt;
                              &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="s s-Atom"&gt;to&lt;/span&gt; &lt;span class="s s-Atom"&gt;get&lt;/span&gt; &lt;span class="s s-Atom"&gt;an&lt;/span&gt; &lt;span class="s s-Atom"&gt;idea&lt;/span&gt; &lt;span class="s s-Atom"&gt;as&lt;/span&gt; &lt;span class="s s-Atom"&gt;to&lt;/span&gt; &lt;span class="s s-Atom"&gt;where&lt;/span&gt; &lt;span class="s s-Atom"&gt;serial&lt;/span&gt; &lt;span class="s s-Atom"&gt;has&lt;/span&gt; &lt;span class="s s-Atom"&gt;been&lt;/span&gt;
                              &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="s s-Atom"&gt;assigned&lt;/span&gt; &lt;span class="s s-Atom"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
                              
&lt;span class="s s-Atom"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;validate_rfid&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s s-Atom"&gt;code&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="s s-Atom"&gt;:&lt;/span&gt;
    &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="nv"&gt;A&lt;/span&gt; &lt;span class="s s-Atom"&gt;valid&lt;/span&gt; &lt;span class="s s-Atom"&gt;code&lt;/span&gt; &lt;span class="s s-Atom"&gt;will&lt;/span&gt; &lt;span class="s s-Atom"&gt;be&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt; &lt;span class="s s-Atom"&gt;characters&lt;/span&gt; &lt;span class="s s-Atom"&gt;long&lt;/span&gt; &lt;span class="s s-Atom"&gt;with&lt;/span&gt; &lt;span class="s s-Atom"&gt;the&lt;/span&gt; &lt;span class="s s-Atom"&gt;first&lt;/span&gt; &lt;span class="s s-Atom"&gt;char&lt;/span&gt; &lt;span class="s s-Atom"&gt;being&lt;/span&gt;
    &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="s s-Atom"&gt;a&lt;/span&gt; &lt;span class="s s-Atom"&gt;line&lt;/span&gt; &lt;span class="s s-Atom"&gt;feed&lt;/span&gt; &lt;span class="s s-Atom"&gt;and&lt;/span&gt; &lt;span class="s s-Atom"&gt;the&lt;/span&gt; &lt;span class="s s-Atom"&gt;last&lt;/span&gt; &lt;span class="s s-Atom"&gt;char&lt;/span&gt; &lt;span class="s s-Atom"&gt;being&lt;/span&gt; &lt;span class="s s-Atom"&gt;a&lt;/span&gt; &lt;span class="s s-Atom"&gt;carriage&lt;/span&gt; &lt;span class="s s-Atom"&gt;return&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
    &lt;span class="s s-Atom"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s s-Atom"&gt;code&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"ascii"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s s-Atom"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nf"&gt;and&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s s-Atom"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;"\n"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nf"&gt;and&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s s-Atom"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;"\r"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="s s-Atom"&gt;:&lt;/span&gt;
        &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="nv"&gt;We&lt;/span&gt; &lt;span class="s s-Atom"&gt;matched&lt;/span&gt; &lt;span class="s s-Atom"&gt;a&lt;/span&gt; &lt;span class="s s-Atom"&gt;valid&lt;/span&gt; &lt;span class="s s-Atom"&gt;code&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;  &lt;span class="nv"&gt;Strip&lt;/span&gt; &lt;span class="s s-Atom"&gt;off&lt;/span&gt; &lt;span class="s s-Atom"&gt;the&lt;/span&gt; &lt;span class="s2"&gt;"\n"&lt;/span&gt; &lt;span class="s s-Atom"&gt;and&lt;/span&gt; &lt;span class="s2"&gt;"\r"&lt;/span&gt; &lt;span class="s s-Atom"&gt;and&lt;/span&gt; &lt;span class="s s-Atom"&gt;just&lt;/span&gt;
        &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="s s-Atom"&gt;return&lt;/span&gt; &lt;span class="s s-Atom"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;RFID&lt;/span&gt; &lt;span class="s s-Atom"&gt;code&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
        &lt;span class="s s-Atom"&gt;return&lt;/span&gt; &lt;span class="s s-Atom"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="nn"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="nv"&gt;We&lt;/span&gt; &lt;span class="s s-Atom"&gt;didn't match a valid code, so return False.&lt;/span&gt;
&lt;span class="s s-Atom"&gt;        return False&lt;/span&gt;
&lt;span class="s s-Atom"&gt;    &lt;/span&gt;
&lt;span class="s s-Atom"&gt;def main():&lt;/span&gt;
&lt;span class="s s-Atom"&gt;    # Initialize the Raspberry Pi by quashing any warnings and telling it&lt;/span&gt;
&lt;span class="s s-Atom"&gt;    # we're&lt;/span&gt; &lt;span class="s s-Atom"&gt;going&lt;/span&gt; &lt;span class="s s-Atom"&gt;to&lt;/span&gt; &lt;span class="s s-Atom"&gt;use&lt;/span&gt; &lt;span class="s s-Atom"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;BCM&lt;/span&gt; &lt;span class="s s-Atom"&gt;pin&lt;/span&gt; &lt;span class="s s-Atom"&gt;numbering&lt;/span&gt; &lt;span class="s s-Atom"&gt;scheme&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
    &lt;span class="nv"&gt;GPIO&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setwarnings&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nv"&gt;GPIO&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setmode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;GPIO&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;BCM&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="nv"&gt;This&lt;/span&gt; &lt;span class="s s-Atom"&gt;pin&lt;/span&gt; &lt;span class="s s-Atom"&gt;corresponds&lt;/span&gt; &lt;span class="s s-Atom"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;GPIO1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s s-Atom"&gt;which&lt;/span&gt; &lt;span class="s s-Atom"&gt;we'll use to turn the RFID&lt;/span&gt;
&lt;span class="s s-Atom"&gt;    # reader on and off with.&lt;/span&gt;
&lt;span class="s s-Atom"&gt;    GPIO.setup(ENABLE_PIN, GPIO.OUT)&lt;/span&gt;
&lt;span class="s s-Atom"&gt;    # Setting the pin to LOW will turn the reader on.  You should notice&lt;/span&gt;
&lt;span class="s s-Atom"&gt;    # the green LED light on the reader turn red if successfully enabled.&lt;/span&gt;
&lt;span class="s s-Atom"&gt;    print("Enabling RFID reader and reading from serial port: " + SERIAL_PORT)&lt;/span&gt;
&lt;span class="s s-Atom"&gt;    GPIO.output(ENABLE_PIN, GPIO.LOW)&lt;/span&gt;
&lt;span class="s s-Atom"&gt;    # Set up the serial port as per the Parallax reader's&lt;/span&gt; &lt;span class="s s-Atom"&gt;datasheet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
    &lt;span class="s s-Atom"&gt;ser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s s-Atom"&gt;serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;Serial&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s s-Atom"&gt;baudrate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                        &lt;span class="s s-Atom"&gt;bytesize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s s-Atom"&gt;serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;EIGHTBITS&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                        &lt;span class="s s-Atom"&gt;parity&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s s-Atom"&gt;serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;PARITY_NONE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                        &lt;span class="s s-Atom"&gt;port&lt;/span&gt;     &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SERIAL_PORT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                        &lt;span class="s s-Atom"&gt;stopbits&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s s-Atom"&gt;serial&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;STOPBITS_ONE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                        &lt;span class="s s-Atom"&gt;timeout&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="nv"&gt;Wrap&lt;/span&gt; &lt;span class="s s-Atom"&gt;everything&lt;/span&gt; &lt;span class="s s-Atom"&gt;in&lt;/span&gt; &lt;span class="s s-Atom"&gt;a&lt;/span&gt; &lt;span class="s s-Atom"&gt;try&lt;/span&gt; &lt;span class="s s-Atom"&gt;block&lt;/span&gt; &lt;span class="s s-Atom"&gt;to&lt;/span&gt; &lt;span class="s s-Atom"&gt;catch&lt;/span&gt; &lt;span class="s s-Atom"&gt;any&lt;/span&gt; &lt;span class="s s-Atom"&gt;exceptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
    &lt;span class="nn"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="nv"&gt;Loop&lt;/span&gt; &lt;span class="s s-Atom"&gt;forever&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s s-Atom"&gt;or&lt;/span&gt; &lt;span class="s s-Atom"&gt;until&lt;/span&gt; &lt;span class="nv"&gt;CTRL&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;C&lt;/span&gt; &lt;span class="o"&gt;is&lt;/span&gt; &lt;span class="s s-Atom"&gt;pressed&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
        &lt;span class="s s-Atom"&gt;while&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="s s-Atom"&gt;:&lt;/span&gt;
            &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="nv"&gt;Read&lt;/span&gt; &lt;span class="s s-Atom"&gt;in&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt; &lt;span class="s s-Atom"&gt;bytes&lt;/span&gt; &lt;span class="s s-Atom"&gt;from&lt;/span&gt; &lt;span class="s s-Atom"&gt;the&lt;/span&gt; &lt;span class="s s-Atom"&gt;serial&lt;/span&gt; &lt;span class="s s-Atom"&gt;port&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
            &lt;span class="s s-Atom"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s s-Atom"&gt;ser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="nv"&gt;Attempt&lt;/span&gt; &lt;span class="s s-Atom"&gt;to&lt;/span&gt; &lt;span class="s s-Atom"&gt;validate&lt;/span&gt; &lt;span class="s s-Atom"&gt;the&lt;/span&gt; &lt;span class="s s-Atom"&gt;data&lt;/span&gt; &lt;span class="s s-Atom"&gt;we&lt;/span&gt; &lt;span class="s s-Atom"&gt;just&lt;/span&gt; &lt;span class="s s-Atom"&gt;read&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
            &lt;span class="s s-Atom"&gt;code&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;validate_rfid&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s s-Atom"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="nv"&gt;If&lt;/span&gt; &lt;span class="nf"&gt;validate_rfid&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="s s-Atom"&gt;returned&lt;/span&gt; &lt;span class="s s-Atom"&gt;a&lt;/span&gt; &lt;span class="s s-Atom"&gt;code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s s-Atom"&gt;display&lt;/span&gt; &lt;span class="s s-Atom"&gt;it&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
            &lt;span class="s s-Atom"&gt;if&lt;/span&gt; &lt;span class="nn"&gt;code&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Read RFID code: "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s s-Atom"&gt;code&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nn"&gt;except&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="nv"&gt;If&lt;/span&gt; &lt;span class="s s-Atom"&gt;we&lt;/span&gt; &lt;span class="s s-Atom"&gt;caught&lt;/span&gt; &lt;span class="s s-Atom"&gt;an&lt;/span&gt; &lt;span class="s s-Atom"&gt;exception&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s s-Atom"&gt;then&lt;/span&gt; &lt;span class="s s-Atom"&gt;disable&lt;/span&gt; &lt;span class="s s-Atom"&gt;the&lt;/span&gt; &lt;span class="s s-Atom"&gt;reader&lt;/span&gt; &lt;span class="s s-Atom"&gt;by&lt;/span&gt; &lt;span class="s s-Atom"&gt;setting&lt;/span&gt;
        &lt;span class="s s-Atom"&gt;#&lt;/span&gt; &lt;span class="s s-Atom"&gt;the&lt;/span&gt; &lt;span class="s s-Atom"&gt;pin&lt;/span&gt; &lt;span class="s s-Atom"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;HIGH&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s s-Atom"&gt;then&lt;/span&gt; &lt;span class="s s-Atom"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Disabling RFID reader..."&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nv"&gt;GPIO&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;output&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;ENABLE_PIN&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;GPIO&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;HIGH&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        
&lt;span class="s s-Atom"&gt;if&lt;/span&gt; &lt;span class="k"&gt;__&lt;/span&gt;&lt;span class="s s-Atom"&gt;name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;"__main__"&lt;/span&gt;&lt;span class="s s-Atom"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;</summary></entry><entry><title>Codesys service disables serial communication</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/e1dedad96a/?limit=25#f534" rel="alternate"/><published>2020-02-27T16:04:53.844000Z</published><updated>2020-02-27T16:04:53.844000Z</updated><author><name>NiekW</name><uri>https://forge.codesys.com/u/niekw/</uri></author><id>https://forge.codesys.comb3b8e872a8daf0cf9e9f36cf23fd5efcc664cbc3</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi all,&lt;/p&gt;
&lt;p&gt;I'm very new to codesys (and plc programming), so I'm not only looking for a solution but some explanation would be very welcome &lt;/p&gt;
&lt;p&gt;I've installed codesyscontrol service on my Pi, and followed some simple tutorial for making a LED blink with webvisu. (this works fine)&lt;br/&gt;
I also have an RFID module attached to the Pi, and (for now) I handle serial communication with a Python script. (later I would like to use the serial data from RFID inside codesys application, but like I said first time with codesys so 1 step at a time)&lt;/p&gt;
&lt;p&gt;However, when the codesyscontrol.service is active ( $ systemctl | grep codesys) I cannot read serial data with the Python script anymore. I figured this was because the Pi only has 1 UART, so I got an FTDI USB serial port adapter to handle the serial communication with the RFID module. I edit the Python script to use /tty/USB0 instead of /tty/AMA0, but I have the same problem: when I stop the codesys service everything works fine, as soon as I start codesys service it stops working.&lt;/p&gt;
&lt;p&gt;I've gone through the forum and I've tried adding&lt;/p&gt;
&lt;p&gt;&lt;span&gt;[SysCom]&lt;/span&gt;&lt;br/&gt;
Linux.Devicefile=/dev/ttyUSB&lt;/p&gt;
&lt;p&gt;to CODESYScontrol.cfg but this doesnt fix my problem. &lt;/p&gt;
&lt;p&gt;So some questions...&lt;br/&gt;
1: Can someone explain why codesyscontrol.service would cause this problem?&lt;br/&gt;
2: What exactly does &lt;br/&gt;
&lt;span&gt;[SysCom]&lt;/span&gt;&lt;br/&gt;
Linux.Devicefile=/dev/ttyUSB&lt;br/&gt;
do? I suspect it points codesys to the correct hardware address for serial communication?&lt;br/&gt;
3: In some forum posts I see &lt;br/&gt;
portnum := COM.SysCom.SYS_COMPORT1&lt;br/&gt;
added to the .cfg, what does this do?&lt;br/&gt;
4: Final question, how do I fix my problem?   &lt;/p&gt;
&lt;p&gt;Thank you in advance.&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>