Enahced python_cwiid test with a wxGlade GUI
authoretisserant
Mon, 19 Jan 2009 08:40:09 +0100
changeset 306 d73d30b1095f
parent 305 6d2cc92eee0b
child 307 b80d3a84b8bf
Enahced python_cwiid test with a wxGlade GUI
tests/linux/python_cwiid/beremiz.xml
tests/linux/python_cwiid/hmi.wxg
tests/linux/python_cwiid/plc.xml
--- a/tests/linux/python_cwiid/beremiz.xml	Mon Jan 19 08:39:36 2009 +0100
+++ b/tests/linux/python_cwiid/beremiz.xml	Mon Jan 19 08:40:09 2009 +0100
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<BeremizRoot URI_location="PYRO://127.0.0.1:3000">
+<BeremizRoot URI_location="LOCAL://">
   <TargetType>
     <Linux CFLAGS="-g" LDFLAGS="-g"/>
   </TargetType>
--- a/tests/linux/python_cwiid/hmi.wxg	Mon Jan 19 08:39:36 2009 +0100
+++ b/tests/linux/python_cwiid/hmi.wxg	Mon Jan 19 08:40:09 2009 +0100
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- generated by wxGlade 0.6.3 on Sat Jan 17 03:40:12 2009 -->
+<!-- generated by wxGlade 0.6.3 on Mon Jan 19 09:26:45 2009 -->
 
 <application path="" name="" class="" option="0" language="python" top_window="frame_1" encoding="UTF-8" use_gettext="0" overwrite="0" use_new_namespace="1" for_version="2.8" is_template="0">
     <object class="HMIFrame" name="frame_1" base="EditFrame">
@@ -7,8 +7,8 @@
         <title>frame_1</title>
         <object class="wxGridSizer" name="grid_sizer_1" base="EditGridSizer">
             <hgap>0</hgap>
-            <rows>3</rows>
-            <cols>3</cols>
+            <rows>2</rows>
+            <cols>2</cols>
             <vgap>0</vgap>
             <object class="sizeritem">
                 <flag>wxEXPAND</flag>
@@ -26,20 +26,12 @@
                         <border>0</border>
                         <option>0</option>
                         <object class="wxButton" name="button_1" base="EditButton">
-                            <label>Joystick</label>
+                            <label>Connect Wiimote</label>
                             <events>
                                 <handler event="EVT_BUTTON">start_manu</handler>
                             </events>
                         </object>
                     </object>
-                    <object class="sizeritem">
-                        <flag>wxEXPAND</flag>
-                        <border>0</border>
-                        <option>0</option>
-                        <object class="wxButton" name="button_1_copy" base="EditButton">
-                            <label>Auto</label>
-                        </object>
-                    </object>
                 </object>
             </object>
             <object class="sizeritem">
@@ -63,87 +55,7 @@
                                 <border>0</border>
                                 <option>0</option>
                                 <object class="wxSpinCtrl" name="spin_ctrl_X" base="EditSpinCtrl">
-                                </object>
-                            </object>
-                            <object class="sizeritem">
-                                <flag>wxEXPAND</flag>
-                                <border>0</border>
-                                <option>1</option>
-                                <object class="wxGridSizer" name="grid_sizer_3" base="EditGridSizer">
-                                    <hgap>0</hgap>
-                                    <rows>1</rows>
-                                    <cols>2</cols>
-                                    <vgap>0</vgap>
-                                    <object class="sizeritem">
-                                        <flag>wxEXPAND</flag>
-                                        <border>0</border>
-                                        <option>0</option>
-                                        <object class="wxRadioButton" name="radio_btn_1" base="EditRadioButton">
-                                            <label>Lock</label>
-                                        </object>
-                                    </object>
-                                    <object class="sizeritem">
-                                        <flag>wxEXPAND</flag>
-                                        <border>0</border>
-                                        <option>0</option>
-                                        <object class="wxButton" name="button_3" base="EditButton">
-                                            <label>Set</label>
-                                        </object>
-                                    </object>
-                                </object>
-                            </object>
-                        </object>
-                    </object>
-                </object>
-            </object>
-            <object class="sizeritem">
-                <flag>wxEXPAND</flag>
-                <border>0</border>
-                <option>1</option>
-                <object class="wxStaticBoxSizer" name="sizer_A" base="EditStaticBoxSizer">
-                    <orient>wxHORIZONTAL</orient>
-                    <label>Axis A</label>
-                    <object class="sizeritem">
-                        <flag>wxEXPAND</flag>
-                        <border>0</border>
-                        <option>1</option>
-                        <object class="wxGridSizer" name="grid_sizer_2_copy" base="EditGridSizer">
-                            <hgap>0</hgap>
-                            <rows>2</rows>
-                            <cols>1</cols>
-                            <vgap>0</vgap>
-                            <object class="sizeritem">
-                                <flag>wxEXPAND</flag>
-                                <border>0</border>
-                                <option>0</option>
-                                <object class="wxSpinCtrl" name="spin_ctrl_A" base="EditSpinCtrl">
-                                </object>
-                            </object>
-                            <object class="sizeritem">
-                                <flag>wxEXPAND</flag>
-                                <border>0</border>
-                                <option>1</option>
-                                <object class="wxGridSizer" name="grid_sizer_3_copy_2" base="EditGridSizer">
-                                    <hgap>0</hgap>
-                                    <rows>1</rows>
-                                    <cols>2</cols>
-                                    <vgap>0</vgap>
-                                    <object class="sizeritem">
-                                        <flag>wxEXPAND</flag>
-                                        <border>0</border>
-                                        <option>0</option>
-                                        <object class="wxRadioButton" name="radio_btn_1_copy_2" base="EditRadioButton">
-                                            <label>Lock</label>
-                                        </object>
-                                    </object>
-                                    <object class="sizeritem">
-                                        <flag>wxEXPAND</flag>
-                                        <border>0</border>
-                                        <option>0</option>
-                                        <object class="wxButton" name="button_3_copy_2" base="EditButton">
-                                            <label>Set</label>
-                                        </object>
-                                    </object>
+                                    <range>0, 255</range>
                                 </object>
                             </object>
                         </object>
@@ -188,210 +100,13 @@
                                 <border>0</border>
                                 <option>0</option>
                                 <object class="wxSpinCtrl" name="spin_ctrl_Y" base="EditSpinCtrl">
-                                </object>
-                            </object>
-                            <object class="sizeritem">
-                                <flag>wxEXPAND</flag>
-                                <border>0</border>
-                                <option>1</option>
-                                <object class="wxGridSizer" name="grid_sizer_3_copy" base="EditGridSizer">
-                                    <hgap>0</hgap>
-                                    <rows>1</rows>
-                                    <cols>2</cols>
-                                    <vgap>0</vgap>
-                                    <object class="sizeritem">
-                                        <flag>wxEXPAND</flag>
-                                        <border>0</border>
-                                        <option>0</option>
-                                        <object class="wxRadioButton" name="radio_btn_1_copy" base="EditRadioButton">
-                                            <label>Lock</label>
-                                        </object>
-                                    </object>
-                                    <object class="sizeritem">
-                                        <flag>wxEXPAND</flag>
-                                        <border>0</border>
-                                        <option>0</option>
-                                        <object class="wxButton" name="button_3_copy" base="EditButton">
-                                            <label>Set</label>
-                                        </object>
-                                    </object>
+                                    <range>0, 255</range>
                                 </object>
                             </object>
                         </object>
                     </object>
                 </object>
             </object>
-            <object class="sizeritem">
-                <flag>wxEXPAND</flag>
-                <border>0</border>
-                <option>1</option>
-                <object class="wxStaticBoxSizer" name="sizer_B" base="EditStaticBoxSizer">
-                    <orient>wxHORIZONTAL</orient>
-                    <label>Axis B</label>
-                    <object class="sizeritem">
-                        <flag>wxEXPAND</flag>
-                        <border>0</border>
-                        <option>1</option>
-                        <object class="wxGridSizer" name="grid_sizer_2_copy_2" base="EditGridSizer">
-                            <hgap>0</hgap>
-                            <rows>2</rows>
-                            <cols>1</cols>
-                            <vgap>0</vgap>
-                            <object class="sizeritem">
-                                <flag>wxEXPAND</flag>
-                                <border>0</border>
-                                <option>0</option>
-                                <object class="wxSpinCtrl" name="spin_ctrl_B" base="EditSpinCtrl">
-                                </object>
-                            </object>
-                            <object class="sizeritem">
-                                <flag>wxEXPAND</flag>
-                                <border>0</border>
-                                <option>1</option>
-                                <object class="wxGridSizer" name="grid_sizer_3_copy_3" base="EditGridSizer">
-                                    <hgap>0</hgap>
-                                    <rows>1</rows>
-                                    <cols>2</cols>
-                                    <vgap>0</vgap>
-                                    <object class="sizeritem">
-                                        <flag>wxEXPAND</flag>
-                                        <border>0</border>
-                                        <option>0</option>
-                                        <object class="wxRadioButton" name="radio_btn_1_copy_3" base="EditRadioButton">
-                                            <label>Lock</label>
-                                        </object>
-                                    </object>
-                                    <object class="sizeritem">
-                                        <flag>wxEXPAND</flag>
-                                        <border>0</border>
-                                        <option>0</option>
-                                        <object class="wxButton" name="button_3_copy_3" base="EditButton">
-                                            <label>Set</label>
-                                        </object>
-                                    </object>
-                                </object>
-                            </object>
-                        </object>
-                    </object>
-                </object>
-            </object>
-            <object class="sizeritem">
-                <flag>wxEXPAND</flag>
-                <border>0</border>
-                <option>1</option>
-                <object class="wxStaticBoxSizer" name="sizer_2" base="EditStaticBoxSizer">
-                    <orient>wxVERTICAL</orient>
-                    <label>Speed Control</label>
-                    <object class="sizeritem">
-                        <flag>wxEXPAND</flag>
-                        <border>0</border>
-                        <option>0</option>
-                        <object class="wxStaticText" name="label_2" base="EditStaticText">
-                            <style>wxALIGN_CENTRE</style>
-                            <attribute>1</attribute>
-                            <label>Max Speed</label>
-                        </object>
-                    </object>
-                    <object class="sizeritem">
-                        <flag>wxEXPAND</flag>
-                        <border>0</border>
-                        <option>0</option>
-                        <object class="wxSlider" name="slider_1_copy" base="EditSlider">
-                            <style>wxSL_HORIZONTAL|wxSL_AUTOTICKS|wxSL_LABELS</style>
-                        </object>
-                    </object>
-                    <object class="sizeritem">
-                        <flag>wxEXPAND</flag>
-                        <border>0</border>
-                        <option>0</option>
-                        <object class="wxStaticText" name="label_2_copy" base="EditStaticText">
-                            <style>wxALIGN_CENTRE</style>
-                            <attribute>1</attribute>
-                            <label>Max Acceleration</label>
-                        </object>
-                    </object>
-                    <object class="sizeritem">
-                        <flag>wxEXPAND</flag>
-                        <border>0</border>
-                        <option>0</option>
-                        <object class="wxSlider" name="slider_1" base="EditSlider">
-                            <style>wxSL_HORIZONTAL|wxSL_AUTOTICKS|wxSL_LABELS</style>
-                        </object>
-                    </object>
-                </object>
-            </object>
-            <object class="sizeritem">
-                <flag>wxEXPAND</flag>
-                <border>0</border>
-                <option>1</option>
-                <object class="wxStaticBoxSizer" name="sizer_Z" base="EditStaticBoxSizer">
-                    <orient>wxHORIZONTAL</orient>
-                    <label>Axis Z</label>
-                    <object class="sizeritem">
-                        <flag>wxEXPAND</flag>
-                        <border>0</border>
-                        <option>1</option>
-                        <object class="wxGridSizer" name="grid_sizer_2_copy_3" base="EditGridSizer">
-                            <hgap>0</hgap>
-                            <rows>2</rows>
-                            <cols>1</cols>
-                            <vgap>0</vgap>
-                            <object class="sizeritem">
-                                <flag>wxEXPAND</flag>
-                                <border>0</border>
-                                <option>0</option>
-                                <object class="wxSpinCtrl" name="spin_ctrl_Z" base="EditSpinCtrl">
-                                </object>
-                            </object>
-                            <object class="sizeritem">
-                                <flag>wxEXPAND</flag>
-                                <border>0</border>
-                                <option>1</option>
-                                <object class="wxGridSizer" name="grid_sizer_3_copy_1" base="EditGridSizer">
-                                    <hgap>0</hgap>
-                                    <rows>1</rows>
-                                    <cols>2</cols>
-                                    <vgap>0</vgap>
-                                    <object class="sizeritem">
-                                        <flag>wxEXPAND</flag>
-                                        <border>0</border>
-                                        <option>0</option>
-                                        <object class="wxRadioButton" name="radio_btn_1_copy_1" base="EditRadioButton">
-                                            <label>Lock</label>
-                                        </object>
-                                    </object>
-                                    <object class="sizeritem">
-                                        <flag>wxEXPAND</flag>
-                                        <border>0</border>
-                                        <option>0</option>
-                                        <object class="wxButton" name="button_3_copy_1" base="EditButton">
-                                            <label>Set</label>
-                                        </object>
-                                    </object>
-                                </object>
-                            </object>
-                        </object>
-                    </object>
-                </object>
-            </object>
-            <object class="sizeritem">
-                <flag>wxEXPAND</flag>
-                <border>0</border>
-                <option>0</option>
-                <object class="wxButton" name="button_2" base="EditButton">
-                    <foreground>#ff0000</foreground>
-                    <stockitem>STOP</stockitem>
-                    <label>&amp;Stop</label>
-                    <font>
-                        <size>20</size>
-                        <family>default</family>
-                        <style>normal</style>
-                        <weight>normal</weight>
-                        <underlined>0</underlined>
-                        <face></face>
-                    </font>
-                </object>
-            </object>
         </object>
     </object>
 </application>
--- a/tests/linux/python_cwiid/plc.xml	Mon Jan 19 08:39:36 2009 +0100
+++ b/tests/linux/python_cwiid/plc.xml	Mon Jan 19 08:40:09 2009 +0100
@@ -8,7 +8,7 @@
               productVersion="0.0"
               creationDateTime="2008-12-14 16:21:19"/>
   <contentHeader name="Beremiz Python Support Tests"
-                 modificationDateTime="2009-01-16 21:51:43">
+                 modificationDateTime="2009-01-19 09:02:00">
     <coordinateInfo>
       <pageSize x="1024" y="1024"/>
       <fbd>
@@ -58,9 +58,14 @@
                 <BOOL/>
               </type>
             </variable>
-            <variable name="Block1">
-              <type>
-                <derived name="python_eval"/>
+            <variable name="pollX">
+              <type>
+                <derived name="python_poll"/>
+              </type>
+            </variable>
+            <variable name="pollY">
+              <type>
+                <derived name="python_poll"/>
               </type>
             </variable>
           </localVars>
@@ -68,25 +73,25 @@
         <body>
           <FBD>
             <inVariable localId="4" height="30" width="160">
-              <position x="70" y="600"/>
+              <position x="25" y="285"/>
               <connectionPointOut>
                 <relPosition x="160" y="15"/>
               </connectionPointOut>
               <expression>'last_point[0]'</expression>
             </inVariable>
             <block localId="5" width="125" height="80" typeName="python_poll" instanceName="py2">
-              <position x="260" y="550"/>
+              <position x="215" y="235"/>
               <inputVariables>
                 <variable formalParameter="TRIG">
                   <connectionPointIn>
                     <relPosition x="0" y="35"/>
                     <connection refLocalId="25" formalParameter="OUT">
-                      <position x="260" y="585"/>
-                      <position x="245" y="585"/>
-                      <position x="245" y="520"/>
-                      <position x="920" y="520"/>
-                      <position x="920" y="470"/>
-                      <position x="870" y="470"/>
+                      <position x="215" y="270"/>
+                      <position x="200" y="270"/>
+                      <position x="200" y="205"/>
+                      <position x="875" y="205"/>
+                      <position x="875" y="155"/>
+                      <position x="825" y="155"/>
                     </connection>
                   </connectionPointIn>
                 </variable>
@@ -94,8 +99,8 @@
                   <connectionPointIn>
                     <relPosition x="0" y="65"/>
                     <connection refLocalId="4">
-                      <position x="260" y="615"/>
-                      <position x="230" y="615"/>
+                      <position x="215" y="300"/>
+                      <position x="185" y="300"/>
                     </connection>
                   </connectionPointIn>
                 </variable>
@@ -115,18 +120,18 @@
               </outputVariables>
             </block>
             <block localId="8" width="125" height="80" typeName="python_poll" instanceName="py3">
-              <position x="260" y="660"/>
+              <position x="215" y="480"/>
               <inputVariables>
                 <variable formalParameter="TRIG">
                   <connectionPointIn>
                     <relPosition x="0" y="35"/>
                     <connection refLocalId="25" formalParameter="OUT">
-                      <position x="260" y="695"/>
-                      <position x="245" y="695"/>
-                      <position x="245" y="520"/>
-                      <position x="920" y="520"/>
-                      <position x="920" y="470"/>
-                      <position x="870" y="470"/>
+                      <position x="215" y="515"/>
+                      <position x="200" y="515"/>
+                      <position x="200" y="205"/>
+                      <position x="875" y="205"/>
+                      <position x="875" y="155"/>
+                      <position x="825" y="155"/>
                     </connection>
                   </connectionPointIn>
                 </variable>
@@ -134,8 +139,8 @@
                   <connectionPointIn>
                     <relPosition x="0" y="65"/>
                     <connection refLocalId="9">
-                      <position x="260" y="725"/>
-                      <position x="230" y="725"/>
+                      <position x="215" y="545"/>
+                      <position x="185" y="545"/>
                     </connection>
                   </connectionPointIn>
                 </variable>
@@ -155,30 +160,30 @@
               </outputVariables>
             </block>
             <inVariable localId="9" height="30" width="160">
-              <position x="70" y="710"/>
+              <position x="25" y="530"/>
               <connectionPointOut>
                 <relPosition x="160" y="15"/>
               </connectionPointOut>
               <expression>'last_point[1]'</expression>
             </inVariable>
             <inVariable localId="11" height="30" width="100">
-              <position x="125" y="455"/>
+              <position x="80" y="140"/>
               <connectionPointOut>
                 <relPosition x="100" y="15"/>
               </connectionPointOut>
               <expression>'btA'</expression>
             </inVariable>
             <block localId="12" width="125" height="80" typeName="python_poll" instanceName="py1">
-              <position x="260" y="405"/>
+              <position x="215" y="90"/>
               <inputVariables>
                 <variable formalParameter="TRIG">
                   <connectionPointIn>
                     <relPosition x="0" y="35"/>
                     <connection refLocalId="41">
-                      <position x="260" y="440"/>
-                      <position x="235" y="440"/>
-                      <position x="235" y="435"/>
-                      <position x="225" y="435"/>
+                      <position x="215" y="125"/>
+                      <position x="190" y="125"/>
+                      <position x="190" y="120"/>
+                      <position x="180" y="120"/>
                     </connection>
                   </connectionPointIn>
                 </variable>
@@ -186,8 +191,8 @@
                   <connectionPointIn>
                     <relPosition x="0" y="65"/>
                     <connection refLocalId="11">
-                      <position x="260" y="470"/>
-                      <position x="225" y="470"/>
+                      <position x="215" y="155"/>
+                      <position x="180" y="155"/>
                     </connection>
                   </connectionPointIn>
                 </variable>
@@ -206,21 +211,21 @@
                 </variable>
               </outputVariables>
             </block>
-            <comment localId="16" height="90" width="680">
-              <position x="50" y="25"/>
+            <comment localId="16" height="40" width="1005">
+              <position x="15" y="25"/>
               <content>
-<![CDATA[This example test that, despite of 2T period clock stimulating TRIG pin of pyth_eval blocks, blocks keep executing one after the other, in respect of execution order.]]>
+<![CDATA[A simple test that reads Nunchuk stick position and put it in spinctrls, when A button is pressed.]]>
               </content>
             </comment>
             <block localId="24" width="155" height="80" typeName="STRING_TO_UINT">
-              <position x="505" y="405"/>
+              <position x="460" y="90"/>
               <inputVariables>
                 <variable formalParameter="EN">
                   <connectionPointIn>
                     <relPosition x="0" y="35"/>
                     <connection refLocalId="12" formalParameter="ACK">
-                      <position x="505" y="440"/>
-                      <position x="385" y="440"/>
+                      <position x="460" y="125"/>
+                      <position x="340" y="125"/>
                     </connection>
                   </connectionPointIn>
                 </variable>
@@ -228,8 +233,8 @@
                   <connectionPointIn>
                     <relPosition x="0" y="65"/>
                     <connection refLocalId="12" formalParameter="RESULT">
-                      <position x="505" y="470"/>
-                      <position x="385" y="470"/>
+                      <position x="460" y="155"/>
+                      <position x="340" y="155"/>
                     </connection>
                   </connectionPointIn>
                 </variable>
@@ -249,14 +254,14 @@
               </outputVariables>
             </block>
             <block localId="25" width="135" height="45" typeName="UINT_TO_BOOL">
-              <position x="735" y="440"/>
+              <position x="690" y="125"/>
               <inputVariables>
                 <variable formalParameter="IN">
                   <connectionPointIn>
                     <relPosition x="0" y="30"/>
                     <connection refLocalId="24" formalParameter="OUT">
-                      <position x="735" y="470"/>
-                      <position x="660" y="470"/>
+                      <position x="690" y="155"/>
+                      <position x="615" y="155"/>
                     </connection>
                   </connectionPointIn>
                 </variable>
@@ -271,30 +276,320 @@
               </outputVariables>
             </block>
             <inVariable localId="31" height="30" width="160">
-              <position x="570" y="740"/>
+              <position x="565" y="385"/>
               <connectionPointOut>
                 <relPosition x="160" y="15"/>
               </connectionPointOut>
-              <expression>'\n")'</expression>
-            </inVariable>
-            <block localId="32" width="125" height="85" typeName="python_eval" instanceName="Block1">
-              <position x="960" y="550"/>
+              <expression>')'</expression>
+            </inVariable>
+            <inVariable localId="35" height="30" width="340">
+              <position x="385" y="345"/>
+              <connectionPointOut>
+                <relPosition x="340" y="15"/>
+              </connectionPointOut>
+              <expression>'HMIFrame.spin_ctrl_X.SetValue('</expression>
+            </inVariable>
+            <inVariable localId="41" height="30" width="100">
+              <position x="80" y="105"/>
+              <connectionPointOut>
+                <relPosition x="100" y="15"/>
+              </connectionPointOut>
+              <expression>BOOL#TRUE</expression>
+            </inVariable>
+            <block localId="42" width="80" height="100" typeName="CONCAT">
+              <position x="750" y="310"/>
+              <inputVariables>
+                <variable formalParameter="EN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="30"/>
+                    <connection refLocalId="44" formalParameter="ENO">
+                      <position x="750" y="340"/>
+                      <position x="740" y="340"/>
+                      <position x="740" y="270"/>
+                      <position x="715" y="270"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="50"/>
+                    <connection refLocalId="35">
+                      <position x="750" y="360"/>
+                      <position x="725" y="360"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="70"/>
+                    <connection refLocalId="44" formalParameter="OUT">
+                      <position x="750" y="380"/>
+                      <position x="735" y="380"/>
+                      <position x="735" y="300"/>
+                      <position x="715" y="300"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN3">
+                  <connectionPointIn>
+                    <relPosition x="0" y="90"/>
+                    <connection refLocalId="31">
+                      <position x="750" y="400"/>
+                      <position x="725" y="400"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="ENO">
+                  <connectionPointOut>
+                    <relPosition x="80" y="30"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="80" y="50"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <block localId="43" width="145" height="80" typeName="STRING_TO_INT">
+              <position x="380" y="235"/>
+              <inputVariables>
+                <variable formalParameter="EN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="35"/>
+                    <connection refLocalId="5" formalParameter="ACK">
+                      <position x="380" y="270"/>
+                      <position x="340" y="270"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="65"/>
+                    <connection refLocalId="5" formalParameter="RESULT">
+                      <position x="380" y="300"/>
+                      <position x="340" y="300"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="ENO">
+                  <connectionPointOut>
+                    <relPosition x="145" y="35"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="145" y="65"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <block localId="44" width="145" height="80" typeName="INT_TO_STRING">
+              <position x="570" y="235"/>
+              <inputVariables>
+                <variable formalParameter="EN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="35"/>
+                    <connection refLocalId="43" formalParameter="ENO">
+                      <position x="570" y="270"/>
+                      <position x="525" y="270"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="65"/>
+                    <connection refLocalId="43" formalParameter="OUT">
+                      <position x="570" y="300"/>
+                      <position x="525" y="300"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="ENO">
+                  <connectionPointOut>
+                    <relPosition x="145" y="35"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="145" y="65"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="47" height="30" width="160">
+              <position x="565" y="630"/>
+              <connectionPointOut>
+                <relPosition x="160" y="15"/>
+              </connectionPointOut>
+              <expression>')'</expression>
+            </inVariable>
+            <block localId="48" width="80" height="100" typeName="CONCAT">
+              <position x="750" y="555"/>
+              <inputVariables>
+                <variable formalParameter="EN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="30"/>
+                    <connection refLocalId="49" formalParameter="ENO">
+                      <position x="750" y="585"/>
+                      <position x="740" y="585"/>
+                      <position x="740" y="515"/>
+                      <position x="715" y="515"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN1">
+                  <connectionPointIn>
+                    <relPosition x="0" y="50"/>
+                    <connection refLocalId="51">
+                      <position x="750" y="605"/>
+                      <position x="725" y="605"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN2">
+                  <connectionPointIn>
+                    <relPosition x="0" y="70"/>
+                    <connection refLocalId="49" formalParameter="OUT">
+                      <position x="750" y="625"/>
+                      <position x="735" y="625"/>
+                      <position x="735" y="545"/>
+                      <position x="715" y="545"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN3">
+                  <connectionPointIn>
+                    <relPosition x="0" y="90"/>
+                    <connection refLocalId="47">
+                      <position x="750" y="645"/>
+                      <position x="725" y="645"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="ENO">
+                  <connectionPointOut>
+                    <relPosition x="80" y="30"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="80" y="50"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <block localId="49" width="145" height="80" typeName="INT_TO_STRING">
+              <position x="570" y="480"/>
+              <inputVariables>
+                <variable formalParameter="EN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="35"/>
+                    <connection refLocalId="50" formalParameter="ENO">
+                      <position x="570" y="515"/>
+                      <position x="525" y="515"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="65"/>
+                    <connection refLocalId="50" formalParameter="OUT">
+                      <position x="570" y="545"/>
+                      <position x="525" y="545"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="ENO">
+                  <connectionPointOut>
+                    <relPosition x="145" y="35"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="145" y="65"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <block localId="50" width="145" height="80" typeName="STRING_TO_INT">
+              <position x="380" y="480"/>
+              <inputVariables>
+                <variable formalParameter="EN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="35"/>
+                    <connection refLocalId="8" formalParameter="ACK">
+                      <position x="380" y="515"/>
+                      <position x="340" y="515"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="IN">
+                  <connectionPointIn>
+                    <relPosition x="0" y="65"/>
+                    <connection refLocalId="8" formalParameter="RESULT">
+                      <position x="380" y="545"/>
+                      <position x="340" y="545"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="ENO">
+                  <connectionPointOut>
+                    <relPosition x="145" y="35"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="OUT">
+                  <connectionPointOut>
+                    <relPosition x="145" y="65"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <inVariable localId="51" height="30" width="340">
+              <position x="385" y="590"/>
+              <connectionPointOut>
+                <relPosition x="340" y="15"/>
+              </connectionPointOut>
+              <expression>'HMIFrame.spin_ctrl_Y.SetValue('</expression>
+            </inVariable>
+            <block localId="52" width="125" height="65" typeName="python_poll" instanceName="pollX">
+              <position x="875" y="310"/>
               <inputVariables>
                 <variable formalParameter="TRIG">
                   <connectionPointIn>
-                    <relPosition x="0" y="35"/>
-                    <connection refLocalId="34" formalParameter="ENO">
-                      <position x="960" y="585"/>
-                      <position x="920" y="585"/>
+                    <relPosition x="0" y="30"/>
+                    <connection refLocalId="42" formalParameter="ENO">
+                      <position x="875" y="340"/>
+                      <position x="830" y="340"/>
                     </connection>
                   </connectionPointIn>
                 </variable>
                 <variable formalParameter="CODE">
                   <connectionPointIn>
-                    <relPosition x="0" y="70"/>
-                    <connection refLocalId="34" formalParameter="OUT">
-                      <position x="960" y="620"/>
-                      <position x="920" y="620"/>
+                    <relPosition x="0" y="55"/>
+                    <connection refLocalId="42" formalParameter="OUT">
+                      <position x="875" y="365"/>
+                      <position x="855" y="365"/>
+                      <position x="855" y="360"/>
+                      <position x="830" y="360"/>
                     </connection>
                   </connectionPointIn>
                 </variable>
@@ -303,144 +598,54 @@
               <outputVariables>
                 <variable formalParameter="ACK">
                   <connectionPointOut>
-                    <relPosition x="125" y="35"/>
+                    <relPosition x="125" y="30"/>
                   </connectionPointOut>
                 </variable>
                 <variable formalParameter="RESULT">
                   <connectionPointOut>
-                    <relPosition x="125" y="70"/>
-                  </connectionPointOut>
-                </variable>
-              </outputVariables>
-            </block>
-            <block localId="33" width="80" height="65" typeName="AND">
-              <position x="455" y="555"/>
-              <inputVariables>
-                <variable formalParameter="IN1">
+                    <relPosition x="125" y="55"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
+            <block localId="53" width="125" height="65" typeName="python_poll" instanceName="pollY">
+              <position x="875" y="555"/>
+              <inputVariables>
+                <variable formalParameter="TRIG">
                   <connectionPointIn>
                     <relPosition x="0" y="30"/>
-                    <connection refLocalId="5" formalParameter="ACK">
-                      <position x="455" y="585"/>
-                      <position x="385" y="585"/>
-                    </connection>
-                  </connectionPointIn>
-                </variable>
-                <variable formalParameter="IN2">
+                    <connection refLocalId="48" formalParameter="ENO">
+                      <position x="875" y="585"/>
+                      <position x="830" y="585"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+                <variable formalParameter="CODE">
                   <connectionPointIn>
                     <relPosition x="0" y="55"/>
-                    <connection refLocalId="8" formalParameter="ACK">
-                      <position x="455" y="610"/>
-                      <position x="435" y="610"/>
-                      <position x="435" y="695"/>
-                      <position x="385" y="695"/>
-                    </connection>
-                  </connectionPointIn>
-                </variable>
-              </inputVariables>
-              <inOutVariables/>
-              <outputVariables>
-                <variable formalParameter="OUT">
-                  <connectionPointOut>
-                    <relPosition x="80" y="30"/>
-                  </connectionPointOut>
-                </variable>
-              </outputVariables>
-            </block>
-            <block localId="34" width="80" height="225" typeName="CONCAT">
-              <position x="840" y="550"/>
-              <inputVariables>
-                <variable formalParameter="EN">
-                  <connectionPointIn>
-                    <relPosition x="0" y="35"/>
-                    <connection refLocalId="33" formalParameter="OUT">
-                      <position x="840" y="585"/>
-                      <position x="535" y="585"/>
-                    </connection>
-                  </connectionPointIn>
-                </variable>
-                <variable formalParameter="IN1">
-                  <connectionPointIn>
-                    <relPosition x="0" y="70"/>
-                    <connection refLocalId="35">
-                      <position x="840" y="620"/>
-                      <position x="800" y="620"/>
-                    </connection>
-                  </connectionPointIn>
-                </variable>
-                <variable formalParameter="IN2">
-                  <connectionPointIn>
-                    <relPosition x="0" y="105"/>
-                    <connection refLocalId="5" formalParameter="RESULT">
-                      <position x="840" y="655"/>
-                      <position x="415" y="655"/>
-                      <position x="415" y="615"/>
-                      <position x="385" y="615"/>
-                    </connection>
-                  </connectionPointIn>
-                </variable>
-                <variable formalParameter="IN3">
-                  <connectionPointIn>
-                    <relPosition x="0" y="140"/>
-                    <connection refLocalId="36">
-                      <position x="840" y="690"/>
-                      <position x="640" y="690"/>
-                    </connection>
-                  </connectionPointIn>
-                </variable>
-                <variable formalParameter="IN4">
-                  <connectionPointIn>
-                    <relPosition x="0" y="175"/>
-                    <connection refLocalId="8" formalParameter="RESULT">
-                      <position x="840" y="725"/>
-                      <position x="385" y="725"/>
-                    </connection>
-                  </connectionPointIn>
-                </variable>
-                <variable formalParameter="IN5">
-                  <connectionPointIn>
-                    <relPosition x="0" y="205"/>
-                    <connection refLocalId="31">
-                      <position x="840" y="755"/>
-                      <position x="730" y="755"/>
-                    </connection>
-                  </connectionPointIn>
-                </variable>
-              </inputVariables>
-              <inOutVariables/>
-              <outputVariables>
-                <variable formalParameter="ENO">
-                  <connectionPointOut>
-                    <relPosition x="80" y="35"/>
-                  </connectionPointOut>
-                </variable>
-                <variable formalParameter="OUT">
-                  <connectionPointOut>
-                    <relPosition x="80" y="70"/>
-                  </connectionPointOut>
-                </variable>
-              </outputVariables>
-            </block>
-            <inVariable localId="35" height="30" width="230">
-              <position x="570" y="605"/>
-              <connectionPointOut>
-                <relPosition x="230" y="15"/>
-              </connectionPointOut>
-              <expression>'sys.stdout.write("x:'</expression>
-            </inVariable>
-            <inVariable localId="36" height="30" width="70">
-              <position x="570" y="675"/>
-              <connectionPointOut>
-                <relPosition x="70" y="15"/>
-              </connectionPointOut>
-              <expression>', y:'</expression>
-            </inVariable>
-            <inVariable localId="41" height="30" width="100">
-              <position x="125" y="420"/>
-              <connectionPointOut>
-                <relPosition x="100" y="15"/>
-              </connectionPointOut>
-              <expression>BOOL#TRUE</expression>
-            </inVariable>
+                    <connection refLocalId="48" formalParameter="OUT">
+                      <position x="875" y="610"/>
+                      <position x="857" y="610"/>
+                      <position x="857" y="605"/>
+                      <position x="830" y="605"/>
+                    </connection>
+                  </connectionPointIn>
+                </variable>
+              </inputVariables>
+              <inOutVariables/>
+              <outputVariables>
+                <variable formalParameter="ACK">
+                  <connectionPointOut>
+                    <relPosition x="125" y="30"/>
+                  </connectionPointOut>
+                </variable>
+                <variable formalParameter="RESULT">
+                  <connectionPointOut>
+                    <relPosition x="125" y="55"/>
+                  </connectionPointOut>
+                </variable>
+              </outputVariables>
+            </block>
           </FBD>
         </body>
       </pou>