Removing old svgui support using wxsvg
--- a/plugins/svgui/.cvsignore Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
--- a/plugins/svgui/README Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
\ No newline at end of file
--- a/plugins/svgui/__init__.py Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
\ No newline at end of file
--- a/plugins/svgui/svgui.py Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,798 +0,0 @@
-base_folder = os.path.split(sys.path[0])[0]
-sys.path.append(os.path.join(base_folder, "wxsvg", "SVGUIEditor"))
-sys.path.append(os.path.join(base_folder, "plcopeneditor", "graphics"))
-from SVGUIGenerator import *
-from SVGUIControler import *
-from SVGUIEditor import *
-from FBD_Objects import *
-from PLCGenerator import PLCGenException
-from wxPopen import ProcessLogger
-from wx.wxsvg import SVGDocument
-[ID_SVGUIEDITORFBDPANEL,
-] = [wx.NewId() for _init_ctrls in range(1)]
-SVGUIFB_Types = {ITEM_CONTAINER : "Container",
- ITEM_BUTTON : "Button",
- ITEM_TEXT : "TextCtrl",
- ITEM_SCROLLBAR : "ScrollBar",
- ITEM_ROTATING : "RotatingCtrl",
- ITEM_NOTEBOOK : "NoteBook",
- ITEM_TRANSFORM : "Transform"}
-class _SVGUIEditor(SVGUIEditor):
- This Class add IEC specific features to the SVGUIEditor :
- def _init_coll_EditorGridSizer_Items(self, parent):
- SVGUIEditor._init_coll_EditorGridSizer_Items(self, parent)
- parent.AddWindow(self.FBDPanel, 0, border=0, flag=wx.GROW)
- def _init_ctrls(self, prnt):
- SVGUIEditor._init_ctrls(self, prnt, False)
- self.FBDPanel = wx.Panel(id=ID_SVGUIEDITORFBDPANEL,
- name='FBDPanel', parent=self.EditorPanel, pos=wx.Point(0, 0),
- size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
- self.FBDPanel.SetBackgroundColour(wx.WHITE)
- self.FBDPanel.Bind(wx.EVT_LEFT_DOWN, self.OnFBDPanelClick)
- self.FBDPanel.Bind(wx.EVT_PAINT, self.OnPaintFBDPanel)
- setattr(self.FBDPanel, "GetScaling", lambda: None)
- setattr(self.FBDPanel, "IsOfType", self.IsOfType)
- setattr(self.FBDPanel, "GetBlockType", self.GetBlockType)
- def __init__(self, parent, controler = None, fileOpen = None):
- SVGUIEditor.__init__(self, parent, controler, fileOpen)
- def IsOfType(self, type, reference):
- return self.Controler.GetPlugRoot().IsOfType(type, reference)
- def GetBlockType(self, type, inputs = None):
- return self.Controler.GetPlugRoot().GetBlockType(type, inputs)
- def RefreshView(self, select_id = None):
- SVGUIEditor.RefreshView(self, select_id)
- self.FBDPanel.Refresh()
- def OnPaintFBDPanel(self,event):
- dc = wx.ClientDC(self.FBDPanel)
- selected = self.GetSelected()
- if selected is not None:
- selected_type = self.Controler.GetElementType(selected)
- if selected_type is not None:
- self.FBDBlock = FBD_Block(parent=self.FBDPanel,type=SVGUIFB_Types[selected_type],name=self.Controler.GetElementName(selected))
- width, height = self.FBDBlock.GetMinSize()
- self.FBDBlock.SetSize(width,height)
- clientsize = self.FBDPanel.GetClientSize()
- x = (clientsize.width - width) / 2
- y = (clientsize.height - height) / 2
- self.FBDBlock.SetPosition(x, y)
- def OnFBDPanelClick(self, event):
- data = wx.TextDataObject(str((self.FBDBlock.GetType(), "functionBlock", self.FBDBlock.GetName())))
- DropSrc = wx.DropSource(self.FBDPanel)
- def OnInterfaceTreeItemSelected(self, event):
- self.FBDPanel.Refresh()
- SVGUIEditor.OnInterfaceTreeItemSelected(self, event)
- def OnGenerate(self,event):
- self.Controler.PlugGenerate_C(sys.path[0],(0,0,4,5),None)
-TYPECONVERSION = {"BOOL" : "X", "SINT" : "B", "INT" : "W", "DINT" : "D", "LINT" : "L",
- "USINT" : "B", "UINT" : "W", "UDINT" : "D", "ULINT" : "L", "REAL" : "D", "LREAL" : "L",
- "STRING" : "B", "BYTE" : "B", "WORD" : "W", "DWORD" : "D", "LWORD" : "L", "WSTRING" : "W"}
-CTYPECONVERSION = {"BOOL" : "IEC_BOOL", "UINT" : "IEC_UINT", "STRING" : "IEC_STRING", "REAL" : "IEC_REAL"}
-CPRINTTYPECONVERSION = {"BOOL" : "d", "UINT" : "d", "STRING" : "s", "REAL" : "f"}
-class RootClass(SVGUIControler):
- SVGUIControler.__init__(self)
- filepath = os.path.join(self.PlugPath(), "gui.xml")
- if os.path.isfile(filepath):
- svgfile = os.path.join(self.PlugPath(), "gui.svg")
- if os.path.isfile(svgfile):
- self.SvgFilepath = svgfile
- self.OpenXMLFile(filepath)
- self.CreateNewInterface()
- self.SetFilePath(filepath)
- def GetElementIdFromName(self, name):
- element = self.GetElementByName(name)
- if element is not None:
- self.GetPlugRoot().SaveProject()
- self._View = _SVGUIEditor(self.GetPlugRoot().AppFrame, self)
- self._View._onclose = _onclose
- self._View._onsave = _onsave
- dialog = wx.FileDialog(self.GetPlugRoot().AppFrame, "Choose a SVG file", os.getcwd(), "", "SVG files (*.svg)|*.svg|All files|*.*", wx.OPEN)
- if dialog.ShowModal() == wx.ID_OK:
- svgpath = dialog.GetPath()
- if os.path.isfile(svgpath):
- shutil.copy(svgpath, os.path.join(self.PlugPath(), "gui.svg"))
- self.logger.write_error("No such SVG file: %s\n"%svgpath)
- dialog = wx.FileDialog(self.GetPlugRoot().AppFrame, "Choose a XML file", os.getcwd(), "", "XML files (*.xml)|*.xml|All files|*.*", wx.OPEN)
- if dialog.ShowModal() == wx.ID_OK:
- xmlpath = dialog.GetPath()
- if os.path.isfile(xmlpath):
- shutil.copy(xmlpath, os.path.join(self.PlugPath(), "gui.xml"))
- self.logger.write_error("No such XML file: %s\n"%xmlpath)
- def _StartInkscape(self):
- svgfile = os.path.join(self.PlugPath(), "gui.svg")
- if not os.path.isfile(svgfile):
- {"bitmap" : os.path.join("images","HMIEditor"),
- "tooltip" : "HMI Editor",
- "method" : "_OpenView"},
- {"bitmap" : os.path.join("images","ImportSVG"),
- "tooltip" : "Import SVG",
- "method" : "_ImportSVG"},
- {"bitmap" : os.path.join("images","ImportDEF"),
- "tooltip" : "Import XML",
- "method" : "_ImportXML"},
- {"bitmap" : os.path.join("images","ImportSVG"),
- "tooltip" : "Create HMI",
- "method" : "_StartInkscape"},
- self.SaveXMLFile(os.path.join(self.PlugPath(), "gui.xml"))
- def PlugGenerate_C(self, buildpath, locations):
- progname = "SVGUI_%s"%"_".join(map(str, self.GetCurrentLocation()))
- doc = SVGDocument(self.GetSVGFilePath())
- root_element = doc.GetRootElement()
- window_size = (int(float(root_element.GetAttribute("width"))),
- int(float(root_element.GetAttribute("height"))))
-# svgfilepath = self.GetSVGFilePath()
-# xmlfilepath = self.GetFilePath()
-# shutil.copy(svgfilepath, buildpath)
-# shutil.copy(xmlfilepath, buildpath)
- SVGFilePath = self.GetSVGFilePath()
- SVGFileBaseName = os.path.split(SVGFilePath)[1]
- FilePath = self.GetFilePath()
- FileBaseName = os.path.split(FilePath)[1]
- generator = _SVGUICGenerator(self, self.GetElementsByType(),
- os.path.split(self.GetSVGFilePath())[1],
- os.path.split(self.GetFilePath())[1],
- self.GetCurrentLocation())
- generator.GenerateProgram(window_size, buildpath, progname)
- Gen_C_file = os.path.join(buildpath, progname+".cpp" )
- if wx.Platform == '__WXMSW__':
- cxx_flags = "-I..\\lib\\wx\\include\\msw-unicode-release-2.8 -I..\\include\\wx-2.8 -I..\\..\\matiec\\lib -DWXUSINGDLL -D__WXMSW__ -mthreads"
- libs = "\"..\\lib\\libwxsvg.a\" \"..\\lib\\libwxsvg_agg.a\" \"..\\lib\\libagg.a\" \"..\\lib\\libaggplatformwin32.a\" \"..\\lib\\libaggfontwin32tt.a\" -L..\\lib -mwindows -mthreads -Wl,--subsystem,windows -mwindows -lwx_mswu_richtext-2.8 -lwx_mswu_aui-2.8 -lwx_mswu_xrc-2.8 -lwx_mswu_qa-2.8 -lwx_mswu_html-2.8 -lwx_mswu_adv-2.8 -lwx_mswu_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8"
- status, result, err_result = ProcessLogger(self.logger, "wx-config --cxxflags", no_stdout=True).spin()
- self.logger.write_error("Unable to get wx cxxflags\n")
- cxx_flags = result.strip() + " -I../matiec/lib"
- status, result, err_result = ProcessLogger(self.logger, "wx-config --libs", no_stdout=True).spin()
- self.logger.write_error("Unable to get wx libs\n")
- libs = result.strip() + " -lwxsvg"
- return [(Gen_C_file, cxx_flags)],libs,True,(SVGFileBaseName, file(SVGFilePath, "rb")), (FileBaseName, file(FilePath, "rb"))
- def BlockTypesFactory(self):
- def GetSVGUIBlockType(type):
- for category in SVGUIBlock_Types:
- for blocktype in category["list"]:
- if blocktype["name"] == type:
- setattr(self, "GetSVGUIBlockType", GetSVGUIBlockType)
- def generate_svgui_block(generator, block, body, link, order=False):
- name = block.getinstanceName()
- block_id = self.GetElementIdFromName(name)
- raise PLCGenException, "Undefined SVGUI Block \"%s\""%name
- type = block.gettypeName()
- block_infos = GetSVGUIBlockType(type)
- current_location = ".".join(map(str, self.GetCurrentLocation()))
- if not generator.ComputedBlocks.get(block, False) and not order:
- generator.ComputedBlocks[block] = True
- for num, variable in enumerate(block.inputVariables.getvariable()):
- connections = variable.connectionPointIn.getconnections()
- if connections is not None:
- input_info = (generator.TagName, "block", block.getlocalId(), "input", num)
- parameter = "%sQ%s%s.%d.%d"%("%", TYPECONVERSION[block_infos["inputs"][num][1]], current_location, block_id, num+1)
- value = generator.ComputeExpression(body, connections)
- generator.Program += [(generator.CurrentIndent, ()),
- (parameter, input_info),
- generator.Program += generator.ExtractModifier(variable, value, input_info)
- generator.Program += [(";\n", ())]
- connectionPoint = link.getposition()[-1]
- for num, variable in enumerate(block.outputVariables.getvariable()):
- blockPointx, blockPointy = variable.connectionPointOut.getrelPositionXY()
- output_info = (generator.TagName, "block", block.getlocalId(), "output", num)
- parameter = "%sI%s%s.%d.%d"%("%", TYPECONVERSION[block_infos["outputs"][num][1]], current_location, block_id, num+1)
- if block.getx() + blockPointx == connectionPoint.getx() and block.gety() + blockPointy == connectionPoint.gety():
- return generator.ExtractModifier(variable, [(parameter, output_info)], output_info)
- raise PLCGenException, "No corresponding output variable found on SVGUI Block \"%s\""%name
- def initialise_block(type, name, block = None):
- block_id = self.GetElementIdFromName(name)
- raise PLCGenException, "Undefined SVGUI Block \"%s\""%name
- block_infos = GetSVGUIBlockType(type)
- current_location = ".".join(map(str, self.GetCurrentLocation()))
- input_variables = block.inputVariables.getvariable()
- output_variables = block.outputVariables.getvariable()
- output_variables = None
- for num, (input_name, input_type, input_modifier) in enumerate(block_infos["inputs"]):
- if input_variables is not None and num < len(input_variables):
- connections = input_variables[num].connectionPointIn.getconnections()
- if input_variables is None or connections and len(connections) == 1:
- variables.append((input_type, None, "%sQ%s%s.%d.%d"%("%", TYPECONVERSION[input_type], current_location, block_id, num+1), None))
- for num, (output_name, output_type, output_modifier) in enumerate(block_infos["outputs"]):
- variables.append((output_type, None, "%sI%s%s.%d.%d"%("%", TYPECONVERSION[input_type], current_location, block_id, num+1), None))
- SVGUIBlock_Types.extend([{"name" : "SVGUI function blocks", "list" :
- [{"name" : "Container", "type" : "functionBlock", "extensible" : False,
- "inputs" : [("Show","BOOL","none"),("Enable","BOOL","none")],
- "comment" : "SVGUI Container",
- "generate" : generate_svgui_block, "initialise" : initialise_block},
- {"name" : "Button", "type" : "functionBlock", "extensible" : False,
- "inputs" : [("Show","BOOL","none"),("Enable","BOOL","none"),("Value","BOOL","none")],
- "outputs" : [("State","BOOL","none")],
- "comment" : "SVGUI Button",
- "generate" : generate_svgui_block, "initialise" : initialise_block},
- {"name" : "TextCtrl", "type" : "functionBlock", "extensible" : False,
- "inputs" : [("Show","BOOL","none"),("Enable","BOOL","none"),("SetText","STRING","none")],
- "outputs" : [("Text","STRING","none")],
- "comment" : "SVGUI Text Control",
- "generate" : generate_svgui_block, "initialise" : initialise_block},
- {"name" : "ScrollBar", "type" : "functionBlock", "extensible" : False,
- "inputs" : [("Show","BOOL","none"),("Enable","BOOL","none"),("SetThumb","UINT","none"),("SetRange","UINT","none"),("SetPosition","UINT","none")],
- "outputs" : [("Position","UINT","none")],
- "comment" : "SVGUI ScrollBar",
- "generate" : generate_svgui_block, "initialise" : initialise_block},
- {"name" : "NoteBook", "type" : "functionBlock", "extensible" : False,
- "inputs" : [("Show","BOOL","none"),("Enable","BOOL","none"),("SetSelected","BOOL","none")],
- "outputs" : [("Selected","UINT","none")],
- "comment" : "SVGUI Notebook",
- "generate" : generate_svgui_block, "initialise" : initialise_block},
- {"name" : "RotatingCtrl", "type" : "functionBlock", "extensible" : False,
- "inputs" : [("Show","BOOL","none"),("Enable","BOOL","none"),("SetAngle","REAL","none")],
- "outputs" : [("Angle","REAL","none")],
- "comment" : "SVGUI Rotating Control",
- "generate" : generate_svgui_block, "initialise" : initialise_block},
- {"name" : "Transform", "type" : "functionBlock", "extensible" : False,
- "inputs" : [("Show","BOOL","none"),("Enable","BOOL","none"),("SetX","REAL","none"),("SetY","REAL","none"),("SetXScale","REAL","none"),("SetYScale","REAL","none"),("SetAngle","REAL","none")],
- "outputs" : [("X","REAL","none"),("Y","REAL","none")],
- "comment" : "SVGUI Transform",
- "generate" : generate_svgui_block, "initialise" : initialise_block},
- return SVGUIBlock_Types
-class _SVGUICGenerator(SVGUICGenerator):
- def __init__(self, controler, elements, svgfile, xmlfile, current_location):
- SVGUICGenerator.__init__(self, elements, svgfile, xmlfile)
- self.CurrentLocation = current_location
- self.Controler = controler
- def GenerateProgramHeadersPublicVars(self):
- void OnPlcOutEvent(wxEvent& event);
-# text += " void Print();\n"
- def GenerateIECVars(self):
- for element in self.Elements:
- text += "STATE_TYPE out_state_%d;\n"%element.getid()
- text += "STATE_TYPE in_state_%d;\n"%element.getid()
- current_location = "_".join(map(str, self.CurrentLocation))
- #Declaration des variables
- for element in self.Elements:
- block_infos = self.Controler.GetSVGUIBlockType(SVGUIFB_Types[GetElementType(element)])
- block_id = element.getid()
- for i, input in enumerate(block_infos["inputs"]):
- element_c_type = CTYPECONVERSION[input[1]]
- variable = "__Q%s%s_%d_%d"%(TYPECONVERSION[input[1]], current_location, block_id, i + 1)
- text += "%s beremiz%s;\n"%(element_c_type, variable)
- text += "%s* %s = &beremiz%s;\n"%(element_c_type, variable, variable)
- text += "%s _copy%s;\n"%(element_c_type, variable)
- for i, output in enumerate(block_infos["outputs"]):
- element_c_type = CTYPECONVERSION[output[1]]
- variable = "__I%s%s_%d_%d"%(TYPECONVERSION[output[1]], current_location, block_id, i + 1)
- text += "%s beremiz%s;\n"%(element_c_type, variable)
- text += "%s* %s = &beremiz%s;\n"%(element_c_type, variable, variable)
- text += "%s _copy%s;\n"%(element_c_type, variable)
- def GenerateGlobalVarsAndFuncs(self, size):
- text = """#include "iec_types.h"
-#define COMPARE_AND_SWAP_VAL(Destination, comparand, exchange) InterlockedCompareExchange(Destination, exchange, comparand)
-#define THREAD_RETURN_TYPE DWORD WINAPI
-#define STATE_TYPE long int
-#define COMPARE_AND_SWAP_VAL(Destination, comparand, exchange) __sync_val_compare_and_swap(Destination, comparand, exchange)
-#define THREAD_RETURN_TYPE void*
-#define STATE_TYPE volatile int
- text += self.GenerateIECVars()
- text += """IMPLEMENT_APP_NO_MAIN(SVGViewApp);
-SVGViewApp *myapp = NULL;
- text += """int myargc = 0;
-bool refreshing = false;
-THREAD_RETURN_TYPE InitWxEntry(void* args)
- wxEntry(myargc,myargv);
-bool SVGViewApp::OnInit()
- setlocale(LC_NUMERIC, "C");
- text += """ frame = new MainFrame(NULL, wxT("Program"),wxDefaultPosition, wxSize(%d, %d));
- text += """ return true;
-int __init_%(location)s(int argc, char** argv)
- wxMainLoop = CreateThread(NULL, 0, InitWxEntry, 0, 0, &wxMainLoopId);
- pthread_create(&wxMainLoop, NULL, InitWxEntry, NULL);
-void __cleanup_%(location)s()
- wxCloseEvent event(wxEVT_CLOSE_WINDOW);
- myapp->frame->AddPendingEvent(event);
-void __retrieve_%(location)s()
- myapp->frame->m_svgCtrl->Retrieve();
-void __publish_%(location)s()
- myapp->frame->m_svgCtrl->Publish();
-IEC_STRING wxStringToIEC_STRING(wxString s)
- IEC_STRING res = {0,""};
- for(i = 0; i<s.Length() && i<STR_MAX_LEN; i++)
- res.body[i] = s.GetChar(i);
-"""%{"location" : "_".join(map(str, self.CurrentLocation))}
- def GenerateProgramEventTable(self):
- text = """BEGIN_DECLARE_EVENT_TYPES()
-DECLARE_LOCAL_EVENT_TYPE( EVT_PLC, wxNewEventType() )
-END_DECLARE_EVENT_TYPES()
-DEFINE_LOCAL_EVENT_TYPE( EVT_PLC )
- #Event Table Declaration
- text += "BEGIN_EVENT_TABLE(Program, SVGUIWindow)\n"
- for element in self.Elements:
- element_type = GetElementType(element)
- element_name = element.getname()
- if element_type == ITEM_BUTTON:
- text += " EVT_BUTTON (SVGUIID(\"%s\"), Program::On%sClick)\n"%(element_name, element_name)
- elif element_type in [ITEM_SCROLLBAR, ITEM_ROTATING, ITEM_TRANSFORM]:
- text += " EVT_COMMAND_SCROLL_THUMBTRACK (SVGUIID(\"%s\"), Program::On%sChanging)\n"%(element_name, element_name)
- elif element_type == ITEM_NOTEBOOK:
- text += " EVT_NOTEBOOK_PAGE_CHANGED (SVGUIID(\"%s\"), Program::On%sTabChanged)\n"%(element_name, element_name)
- text += " EVT_CUSTOM(EVT_PLC, wxID_ANY, Program::OnPlcOutEvent)\n"
- text += "END_EVENT_TABLE()\n\n"
- def GenerateProgramInitFrame(self):
- text = """MainFrame::MainFrame(wxWindow *parent, const wxString& title, const wxPoint& pos,const wxSize& size, long style): wxFrame(parent, wxID_ANY, title, pos, size, style)
- wxFileName svgfilepath(wxTheApp->argv[1], wxT("%s"));
- wxFileName xmlfilepath(wxTheApp->argv[1], wxT("%s"));
- m_svgCtrl = new Program(this);
- if (m_svgCtrl->LoadFiles(svgfilepath.GetFullPath(), xmlfilepath.GetFullPath()))
- m_svgCtrl->SetFitToFrame(true);
- m_svgCtrl->InitScrollBars();
- m_svgCtrl->Initialize();
- printf("Error while opening SVGUI files\\n");
-"""%(self.SVGFilePath, self.XMLFilePath)
- def GenerateProgramInitProgram(self):
- text = "Program::Program(wxWindow* parent):SVGUIWindow(parent)\n{\n"
- for element in self.Elements:
- text += " out_state_%d = UNCHANGED;\n"%element.getid()
- text += " in_state_%d = UNCHANGED;\n"%element.getid()
- def GenerateProgramEventFunctions(self):
- current_location = "_".join(map(str, self.CurrentLocation))
- for element in self.Elements:
- element_type = GetElementType(element)
- if (COMPARE_AND_SWAP_VAL(&in_state_%d, CHANGED, GUI_BUSY) == CHANGED ||
- COMPARE_AND_SWAP_VAL(&in_state_%d, UNCHANGED, GUI_BUSY) == UNCHANGED) {
-"""%(element.getid(), element.getid())
- COMPARE_AND_SWAP_VAL(&in_state_%d, GUI_BUSY, CHANGED);
- /* re post event for idle */
- AddPendingEvent(event);
- element_name = element.getname()
- if element_type == ITEM_BUTTON:
- text += """void Program::On%sClick(wxCommandEvent& event)
- SVGUIButton* button = (SVGUIButton*)GetElementByName(wxT("%s"));\n"""%(element_name, element_name)
- text += " _copy__IX%s_%d_1 = button->GetToggle();\n"%(current_location, element.getid())
- elif element_type == ITEM_ROTATING:
- text += """void Program::On%sChanging(wxScrollEvent& event)
- SVGUIRotatingCtrl* rotating = (SVGUIRotatingCtrl*)GetElementByName(wxT("%s"));
-"""%(element_name, element_name)
- text += " _copy__ID%s_%d_1 = rotating->GetAngle();\n"%(current_location, element.getid())
- elif element_type == ITEM_NOTEBOOK:
- text += """void Program::On%sTabChanged(wxNotebookEvent& event)
- SVGUINoteBook* notebook = (SVGUINoteBook*)GetElementByName(wxT("%s"));
-"""%(element_name, element_name)
- text += " _copy__IB%s_%d_1 = notebook->GetCurrentPage();\n"%(current_location, element.getid())
- elif element_type == ITEM_TRANSFORM:
- text += """void Program::On%sChanging(wxScrollEvent& event)
- SVGUITransform* transform = (SVGUITransform*)GetElementByName(wxT("%s"));
-"""%(element_name, element_name)
- text += " _copy__ID%s_%d_1 = transform->GetX();\n"%(current_location, element.getid())
- text += " _copy__ID%s_%d_2 = transform->GetY();\n"%(current_location, element.getid())
- text += "/* OnPlcOutEvent update GUI with provided IEC __Q* PLC output variables */\n"
- text += """void Program::OnPlcOutEvent(wxEvent& event)
- for element in self.Elements:
- element_type = GetElementType(element)
- texts = {"location" : current_location, "id" : element.getid()}
- text += """ if (COMPARE_AND_SWAP_VAL(&out_state_%(id)d, CHANGED, GUI_BUSY) == CHANGED)
- element = (SVGUIElement*)GetElementById(wxT("%(id)d"));
- if (_copy__QX%(location)s_%(id)d_1 != element->IsVisible()) {
- if (_copy__QX%(location)s_%(id)d_1)
- if (_copy__QX%(location)s_%(id)d_2 != element->IsEnabled()) {
- if (_copy__QX%(location)s_%(id)d_2)
- if element_type == ITEM_BUTTON:
- text += """ if (_copy__QX%(location)s_%(id)d_3 != ((SVGUIButton*)element)->GetToggle())
- ((SVGUIButton*)element)->SetToggle(_copy__QX%(location)s_%(id)d_3);
- elif element_type == ITEM_TEXT:
- text += """ if (((SVGUITextCtrl*)element)->GetValue().compare(_copy__QX%(location)s_%(id)d_3))
- wxString str = wxString::FromAscii(_copy__QB%(location)s_%(id)d_3);
- ((SVGUITextCtrl*)element)->SetText(str);
- elif element_type == ITEM_SCROLLBAR:
- text += """ if (_copy__QW%(location)s_%(id)d_3 != ((SVGUIScrollBar*)element)->GetThumbPosition() ||
- _copy__QW%(location)s_%(id)d_4 != ((SVGUIScrollBar*)element)->GetThumbSize() ||
- _copy__QW%(location)s_%(id)d_5 != ((SVGUIScrollBar*)element)->GetRange())
- ((SVGUIScrollBar*)element)->Init_ScrollBar(_copy__QW%(location)s_%(id)d_3, _copy__QW%(location)s_%(id)d_4, _copy__QW%(location)s_%(id)d_5);
- elif element_type == ITEM_ROTATING:
- text += """ if (_copy__QD%(location)s_%(id)d_3 != ((SVGUIRotatingCtrl*)element)->GetAngle())
- ((SVGUIRotatingCtrl*)element)->SetAngle(_copy__QD%(location)s_%(id)d_3);
- elif element_type == ITEM_NOTEBOOK:
- text += """ if (_copy__QB%(location)s_%(id)d_3 != ((SVGUINoteBook*)element)->GetCurrentPage())
- ((SVGUINoteBook*)element)->SetCurrentPage(_copy__QB%(location)s_%(id)d_3);
- elif element_type == ITEM_TRANSFORM:
- text += """ if (_copy__QD%(location)s_%(id)d_3 != ((SVGUITransform*)element)->GetX() ||
- _copy__QD%(location)s_%(id)d_4 != ((SVGUITransform*)element)->GetY())
- ((SVGUITransform*)element)->Move(_copy__QD%(location)s_%(id)d_3, _copy__QD%(location)s_%(id)d_4);
- if (_copy__QD%(location)s_%(id)d_5 != ((SVGUITransform*)element)->GetXScale() ||
- _copy__QD%(location)s_%(id)d_6 != ((SVGUITransform*)element)->GetYScale())
- ((SVGUITransform*)element)->Scale(_copy__QD%(location)s_%(id)d_5, _copy__QD%(location)s_%(id)d_6);
- if (_copy__QD%(location)s_%(id)d_7 != ((SVGUITransform*)element)->GetAngle())
- ((SVGUITransform*)element)->Rotate(_copy__QD%(location)s_%(id)d_7);
- text += " COMPARE_AND_SWAP_VAL(&out_state_%(id)d, GUI_BUSY, UNCHANGED);\n }\n"%texts
- def GenerateProgramPrivateFunctions(self):
- current_location = "_".join(map(str, self.CurrentLocation))
- text = "void Program::Retrieve()\n{\n"
- for element in self.Elements:
- element_type = GetElementType(element)
- texts = {"location" : current_location, "id" : element.getid()}
- block_infos = self.Controler.GetSVGUIBlockType(SVGUIFB_Types[GetElementType(element)])
- if len(block_infos["outputs"]) > 0:
- text += """ if (COMPARE_AND_SWAP_VAL(&in_state_%(id)d, CHANGED, PLC_BUSY) == CHANGED) {
- for i, output in enumerate(block_infos["outputs"]):
- texts["type"] = TYPECONVERSION[output[1]]
- variable = "__I%(type)s%(location)s_%(id)d_%(pin)d"%texts
- text +=" beremiz%s = _copy%s;\n"%(variable, variable)
- text += """ COMPARE_AND_SWAP_VAL(&in_state_%(id)d, PLC_BUSY, UNCHANGED);
- text += "void Program::Publish()\n{\n STATE_TYPE new_state;\n\n"
- for element in self.Elements:
- element_type = GetElementType(element)
- texts = {"location" : current_location, "id" : element.getid()}
- block_infos = self.Controler.GetSVGUIBlockType(SVGUIFB_Types[GetElementType(element)])
- text += """ if ((new_state = COMPARE_AND_SWAP_VAL(&out_state_%(id)d, UNCHANGED, PLC_BUSY)) == UNCHANGED ||
- (new_state = COMPARE_AND_SWAP_VAL(&out_state_%(id)d, CHANGED, PLC_BUSY)) == CHANGED) {
- for i, input in enumerate(block_infos["inputs"]):
- texts["type"] = TYPECONVERSION[input[1]]
- variable = "__Q%(type)s%(location)s_%(id)d_%(pin)d"%texts
- text += " if (_copy%s != beremiz%s) {\n"%(variable, variable)
- text += " _copy%s = beremiz%s;\n"%(variable, variable)
- text += " new_state = CHANGED;\n }\n"%texts
- text += """ COMPARE_AND_SWAP_VAL(&out_state_%(id)d, PLC_BUSY, new_state);
- refresh |= new_state == CHANGED;
- text += """ /* Replace this with determinist signal if called from RT */
- if (refresh && !refreshing) {
- wxCommandEvent event( EVT_PLC );
- AddPendingEvent(event);
- text += """void Program::Initialize()
- for element in self.Elements:
- element_type = GetElementType(element)
- texts = {"location" : current_location, "id" : element.getid()}
- element = (SVGUIElement*)GetElementById(wxT("%(id)d"));
- beremiz__QX%(location)s_%(id)d_1 = _copy__QX%(location)s_%(id)d_1 = element->IsVisible();
- beremiz__QX%(location)s_%(id)d_2 = _copy__QX%(location)s_%(id)d_2 = element->IsEnabled();
- if element_type == ITEM_BUTTON:
- text += " beremiz__QX%(location)s_%(id)d_3 = _copy__QX%(location)s_%(id)d_3 = ((SVGUIButton*)element)->GetToggle();\n"%texts
- text += " beremiz__IX%(location)s_%(id)d_1 = _copy__IX%(location)s_%(id)d_1 = ((SVGUIButton*)element)->GetToggle();\n"%texts
- elif element_type == ITEM_TEXT:
- text += " beremiz__QB%(location)s_%(id)d_3 = _copy__QB%(location)s_%(id)d_3 = ((SVGUITextCtrl*)element)->GetValue();\n"%texts
- text += " beremiz__IB%(location)s_%(id)d_1 = _copy__IB%(location)s_%(id)d_1 = ((SVGUITextCtrl*)element)->GetValue();\n"%texts
- elif element_type == ITEM_SCROLLBAR:
- text += " beremiz__QW%(location)s_%(id)d_3 = _copy__QW%(location)s_%(id)d_3 = ((SVGUIScrollBar*)element)->GetThumbSize();\n"%texts
- text += " beremiz__QW%(location)s_%(id)d_4 = _copy__QW%(location)s_%(id)d_4 = ((SVGUIScrollBar*)element)->GetRange();\n"%texts
- text += " beremiz__QW%(location)s_%(id)d_5 = _copy__QW%(location)s_%(id)d_5 = ((SVGUIScrollBar*)element)->GetThumbPosition();\n"%texts
- text += " beremiz__IW%(location)s_%(id)d_1 = _copy__IW%(location)s_%(id)d_1 = ((SVGUIScrollBar*)element)->GetThumbPosition();\n"%texts
- elif element_type == ITEM_ROTATING:
- text += " beremiz__QD%(location)s_%(id)d_3 = _copy__QD%(location)s_%(id)d_3 = ((SVGUIRotatingCtrl*)element)->GetAngle();\n"%texts
- text += " beremiz__ID%(location)s_%(id)d_1 = _copy__ID%(location)s_%(id)d_1 = ((SVGUIRotatingCtrl*)element)->GetAngle();\n"%texts
- elif element_type == ITEM_NOTEBOOK:
- text += " beremiz__QB%(location)s_%(id)d_3 = _copy__QB%(location)s_%(id)d_3 = ((SVGUINoteBook*)element)->GetCurrentPage();\n"%texts
- text += " beremiz__IB%(location)s_%(id)d_1 = _copy__IB%(location)s_%(id)d_1 = ((SVGUINoteBook*)element)->GetCurrentPage();\n"%texts
- elif element_type == ITEM_TRANSFORM:
- text += " beremiz__QD%(location)s_%(id)d_3 = _copy__QD%(location)s_%(id)d_3 = ((SVGUITransform*)element)->GetX();\n"%texts
- text += " beremiz__QD%(location)s_%(id)d_4 = _copy__QD%(location)s_%(id)d_4 = ((SVGUITransform*)element)->GetY();\n"%texts
- text += " beremiz__QD%(location)s_%(id)d_5 = _copy__QD%(location)s_%(id)d_5 = ((SVGUITransform*)element)->GetXScale();\n"%texts
- text += " beremiz__QD%(location)s_%(id)d_6 = _copy__QD%(location)s_%(id)d_6 = ((SVGUITransform*)element)->GetYScale();\n"%texts
- text += " beremiz__QD%(location)s_%(id)d_7 = _copy__QD%(location)s_%(id)d_7 = ((SVGUITransform*)element)->GetAngle();\n"%texts
- text += " beremiz__ID%(location)s_%(id)d_1 = _copy__ID%(location)s_%(id)d_1 = ((SVGUITransform*)element)->GetX();\n"%texts
- text += " beremiz__ID%(location)s_%(id)d_2 = _copy__ID%(location)s_%(id)d_2 = ((SVGUITransform*)element)->GetY();\n"%texts
- text += "\n MyInitSem.Post();\n}\n\n"
--- a/tests/linux/test_svgui/.cvsignore Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
--- a/tests/linux/test_svgui/CANopen@canfestival/Master@CanOpenNode/baseplugin.xml Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<BaseParams Name="Master" IEC_Channel="0"/>
--- a/tests/linux/test_svgui/CANopen@canfestival/Master@CanOpenNode/eds/DS401_Slave_Gui.eds Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1142 +0,0 @@
-FileName=DS401_Slave_Gui.eds
-ModificationTime=05:58PM
-ModificationDate=10-02-2007
-ProductNumber=0x00100000
-RevisionNumber=0x00010001
-DynamicChannelsSupported=0
-ParameterName=Device Type
-ParameterName=Error Register
-ParameterName=Number of Entries
-ParameterName=Product Code
-ParameterName=Revision Number
-ParameterName=Manufacturer Status Register
-ParameterName=SYNC COB ID
-ParameterName=Manufacturer Device Name
-ParameterName=Manufacturer Hardware Version
-ParameterName=Manufacturer Software Version
-ParameterName=Guard Time
-ParameterName=Life Time Factor
-ParameterName=Store parameters
-ParameterName=Number of Entries
-ParameterName=Save All Parameters
-ParameterName=Restore Default Parameters
-ParameterName=Number of Entries
-ParameterName=Restore All Default Parameters
-ParameterName=Consumer Heartbeat Time
-ParameterName=Number of Entries
-ParameterName=Consumer Heartbeat Time
-ParameterName=Consumer Heartbeat Time
-ParameterName=Consumer Heartbeat Time
-ParameterName=Producer Heartbeat Time
-ParameterName=Verify Configuration
-ParameterName=Number of Entries
-ParameterName=Configuration Date
-ParameterName=Configuration Time
-ParameterName=Server SDO Parameter
-ParameterName=Number of Entries
-ParameterName=COB ID Client to Server (Receive SDO)
-DefaultValue=$NODEID+0x600
-ParameterName=COB ID Server to Client (Transmit SDO)
-DefaultValue=$NODEID+0x580
-ParameterName=Receive PDO 1 Parameter
-ParameterName=Highest SubIndex Supported
-ParameterName=COB ID used by PDO
-DefaultValue=$NODEID+0x200
-ParameterName=Transmission Type
-ParameterName=Receive PDO 2 Parameter
-ParameterName=Highest SubIndex Supported
-ParameterName=COB ID used by PDO
-DefaultValue=$NODEID+0x300
-ParameterName=Transmission Type
-ParameterName=Receive PDO 1 Mapping
-ParameterName=Number of Entries
-ParameterName=PDO 1 Mapping for an application object 1
-ParameterName=Receive PDO 2 Mapping
-ParameterName=Number of Entries
-ParameterName=PDO 2 Mapping for an application object 1
-ParameterName=PDO 2 Mapping for an application object 2
-ParameterName=PDO 2 Mapping for an application object 3
-ParameterName=PDO 2 Mapping for an application object 4
-ParameterName=Transmit PDO 1 Parameter
-ParameterName=Highest SubIndex Supported
-ParameterName=COB ID used by PDO
-DefaultValue=$NODEID+0x180
-ParameterName=Transmission Type
-ParameterName=Inhibit Time
-ParameterName=Event Timer
-ParameterName=Transmit PDO 2 Parameter
-ParameterName=Highest SubIndex Supported
-ParameterName=COB ID used by PDO
-DefaultValue=$NODEID+0x280
-ParameterName=Transmission Type
-ParameterName=Inhibit Time
-ParameterName=Event Timer
-ParameterName=Transmit PDO 3 Parameter
-ParameterName=Highest SubIndex Supported
-ParameterName=COB ID used by PDO
-DefaultValue=$NODEID+0x380
-ParameterName=Transmission Type
-ParameterName=Inhibit Time
-ParameterName=Event Timer
-ParameterName=Transmit PDO 1 Mapping
-ParameterName=Number of Entries
-ParameterName=PDO 1 Mapping for a process data variable 1
-ParameterName=Transmit PDO 2 Mapping
-ParameterName=Number of Entries
-ParameterName=PDO 2 Mapping for a process data variable 1
-ParameterName=PDO 2 Mapping for a process data variable 2
-ParameterName=PDO 2 Mapping for a process data variable 3
-ParameterName=PDO 2 Mapping for a process data variable 4
-ParameterName=Transmit PDO 3 Mapping
-ParameterName=Number of Entries
-ParameterName=PDO 3 Mapping for a process data variable 1
-ParameterName=PDO 3 Mapping for a process data variable 2
-ParameterName=PDO 3 Mapping for a process data variable 3
-ParameterName=PDO 3 Mapping for a process data variable 4
-ParameterName=Read Inputs 8 Bit
-ParameterName=Number of Input 8 bit
-ParameterName=Read Inputs 0x1 to 0x8
-ParameterName=Polarity Input 8 Bit
-ParameterName=Number of Input 8 bit
-ParameterName=Polarity Input 0x1 to 0x8
-ParameterName=Write Outputs 8 Bit
-ParameterName=Number of Output 8 Bit
-ParameterName=Write Outputs 0x1 to 0x8
-ParameterName=Change Polarity Outputs 8 Bit
-ParameterName=Number of Output 8 Bit
-ParameterName=Change Polarity Outputs 0x1 to 0x8
-ParameterName=Error Mode Outputs 8 Bit
-ParameterName=Number of Output 8 Bit
-ParameterName=Error Mode Outputs 0x1 to 0x8
-ParameterName=Error Value Outputs 8 Bit
-ParameterName=Number of Output 8 Bit
-ParameterName=Error Value Outputs 0x1 to 0x8
-ParameterName=Read Analogue Input 16 Bit
-ParameterName=Number of Analogue Input 16 Bit
-ParameterName=Analogue Input 1
-ParameterName=Analogue Input 2
-ParameterName=Analogue Input 3
-ParameterName=Analogue Input 4
-ParameterName=Analogue Input 5
-ParameterName=Analogue Input 6
-ParameterName=Analogue Input 7
-ParameterName=Analogue Input 8
-ParameterName=Write Analogue Output 16 Bit
-ParameterName=Number of Analogue Input 16 Bit
-ParameterName=Analogue Output 1
-ParameterName=Analogue Output 2
-ParameterName=Analogue Output 3
-ParameterName=Analogue Output 4
-ParameterName=Analogue Input Global Interrupt Enable
-ParameterName=Analogue Input Interrupt Delta Unsigned
-ParameterName=Number of Analogue Inputs
-ParameterName=Analogue Input 1
-ParameterName=Analogue Input 2
-ParameterName=Analogue Input 3
-ParameterName=Analogue Input 4
-ParameterName=Analogue Input 5
-ParameterName=Analogue Input 6
-ParameterName=Analogue Input 7
-ParameterName=Analogue Input 8
-ParameterName=Analogue Output Error Mode
-ParameterName=Number of Analogue Outputs
-ParameterName=Error Mode Analogue Output 1
-ParameterName=Error Mode Analogue Output 2
-ParameterName=Error Mode Analogue Output 3
-ParameterName=Error Mode Analogue Output 4
-ParameterName=Analogue Output Error Value Integer
-ParameterName=Number of Analogue Outputs
-ParameterName=Analogue Output 1
-ParameterName=Analogue Output 2
-ParameterName=Analogue Output 3
-ParameterName=Analogue Output 4
--- a/tests/linux/test_svgui/CANopen@canfestival/Master@CanOpenNode/eds/PEAK MicroMod.eds Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1289 +0,0 @@
-Description=PEAK MicroMod CANopenIA Generic
-ModificationTime=05:05PM
-ModificationDate=03-23-2005
-FileName=C:\CANopenCT\Tests\PEAK MicroMod.eds
-VendorName=PEAK System Technik
-ProductName=PEAK MicroMod CANopenIA Generic
-ProductNumber=0x00100000
-RevisionNumber=0x00010001
-DynamicChannelsSupported=0
-ParameterName=Device Type
-ParameterName=Error Register
-ParameterName=Identity Object
-ParameterName=number of entries
-ParameterName=Product Code
-ParameterName=Revision number
-ParameterName=PEAK Status Register
-ParameterName=COB-ID SYNC
-ParameterName=Manufacturer Device Name
-ParameterName=Manufacturer Hardware Version
-ParameterName=Manufacturer Software Version
-ParameterName=Guard Time
-ParameterName=Life Time Factor
-ParameterName=Store Parameter Field
-ParameterName=Number of Entries
-ParameterName=Save all Parameters
-ParameterName=Restore Default Parameters
-ParameterName=Number of Entries
-ParameterName=Restore all Default Parameters
-ParameterName=Consumer Heartbeat Time
-ParameterName=Number of Entries
-ParameterName=Consumer Heartbeat Time
-ParameterName=Consumer Heartbeat Time
-ParameterName=Consumer Heartbeat Time
-ParameterName=Producer Heartbeat Time
-ParameterName=Verify Configuration
-ParameterName=Number of entries
-ParameterName=Configuration date
-ParameterName=Configuration time
-ParameterName=Receive PDO Communication Parameter
-ParameterName=Number of Entries
-DefaultValue=$NODEID+0x200
-ParameterName=Transmission Type
-ParameterName=Receive PDO Communication Parameter
-ParameterName=Number of Entries
-DefaultValue=$NODEID+0x300
-ParameterName=Transmission Type
-ParameterName=Receive PDO Communication Parameter
-ParameterName=Number of Entries
-DefaultValue=$NODEID+0x80000400
-ParameterName=Transmission Type
-ParameterName=Receive PDO Communication Parameter
-ParameterName=Number of Entries
-DefaultValue=$NODEID+0x80000500
-ParameterName=Transmission Type
-ParameterName=Receive PDO Mapping Parameter
-ParameterName=Number of Entries
-ParameterName=PDO Mapping Entry
-ParameterName=Receive PDO Mapping Parameter
-ParameterName=Number of Entries
-ParameterName=PDO Mapping Entry
-ParameterName=PDO Mapping Entry
-ParameterName=PDO Mapping Entry
-ParameterName=PDO Mapping Entry
-ParameterName=Receive PDO Mapping Parameter
-ParameterName=Number of Entries
-ParameterName=Receive PDO Mapping Parameter
-ParameterName=Number of Entries
-ParameterName=Transmit PDO Communication Parameter
-ParameterName=Number of Entries
-DefaultValue=$NODEID+0x180
-ParameterName=Transmission Type
-ParameterName=Inhibit Time
-ParameterName=Event Timer
-ParameterName=Transmit PDO Communication Parameter
-ParameterName=Number of Entries
-DefaultValue=$NODEID+0x280
-ParameterName=Transmission Type
-ParameterName=Inhibit Time
-ParameterName=Event Timer
-ParameterName=Transmit PDO Communication Parameter
-ParameterName=Number of Entries
-DefaultValue=$NODEID+0x380
-ParameterName=Transmission Type
-ParameterName=Inhibit Time
-ParameterName=Event Timer
-ParameterName=Transmit PDO Communication Parameter
-ParameterName=Number of Entries
-DefaultValue=$NODEID+0x80000480
-ParameterName=Transmission Type
-ParameterName=Inhibit Time
-ParameterName=Event Timer
-ParameterName=Transmit PDO Mapping Parameter
-ParameterName=Number of Entries
-ParameterName=PDO Mapping Entry
-ParameterName=Transmit PDO Mapping Parameter
-ParameterName=Number of Entries
-ParameterName=PDO Mapping Entry
-ParameterName=PDO Mapping Entry
-ParameterName=PDO Mapping Entry
-ParameterName=PDO Mapping Entry
-ParameterName=Transmit PDO Mapping Parameter
-ParameterName=Number of Entries
-ParameterName=PDO Mapping Entry
-ParameterName=PDO Mapping Entry
-ParameterName=PDO Mapping Entry
-ParameterName=PDO Mapping Entry
-ParameterName=Transmit PDO Mapping Parameter
-ParameterName=Number of Entries
-ParameterName=Download Program Data
-ParameterName=Number of elements
-ParameterName=Download Program Data - HW Settings
-ParameterName=Read Digital Input 8-bit
-ParameterName=Number of Elements
-ParameterName=DigInput8_1
-ParameterName=Polarity Digital Input
-ParameterName=Number of Elements
-ParameterName=Polarity8_1
-ParameterName=Write Digital Output 8-bit
-ParameterName=Number of elements
-ParameterName=DigOutput8_1
-ParameterName=Polarity Digital Output
-ParameterName=Number of Elements
-ParameterName=Polarity8_1
-ParameterName=Error Mode Digital Output
-ParameterName=Number of elements
-ParameterName=Error Mode 1
-ParameterName=Error Value Digital Output
-ParameterName=Number of elements
-ParameterName=Error Value 1
-ParameterName=Read Analog Input 16-bit
-ParameterName=Number of elements
-ParameterName=AnalogInput16_1
-ParameterName=AnalogInput16_2
-ParameterName=AnalogInput16_3
-ParameterName=AnalogInput16_4
-ParameterName=AnalogInput16_5
-ParameterName=AnalogInput16_6
-ParameterName=AnalogInput16_7
-ParameterName=AnalogInput16_8
-ParameterName=Write Analog Output 16-bit
-ParameterName=Number of elements
-ParameterName=AnalogOutput16_1
-ParameterName=AnalogOutput16_2
-ParameterName=AnalogOutput16_3
-ParameterName=AnalogOutput16_4
-ParameterName=Analog Input Global Interrupt
-ParameterName=Analog Input Interrupt Delta
-ParameterName=NrOfObjects
-ParameterName=Analog Input Delta 1
-ParameterName=Analog Input Delta 2
-ParameterName=Analog Input Delta 3
-ParameterName=Analog Input Delta 4
-ParameterName=Analog Input Delta 5
-ParameterName=Analog Input Delta 6
-ParameterName=Analog Input Delta 7
-ParameterName=Analog Input Delta 8
-ParameterName=Error Mode Analog Output
-ParameterName=Number of elements
-ParameterName=Error Mode 1
-ParameterName=Error Mode 2
-ParameterName=Error Mode 3
-ParameterName=Error Mode 4
-ParameterName=Error Value Analog Output
-ParameterName=Number of elements
-ParameterName=Error Value 1
-ParameterName=Error Value 2
-ParameterName=Error Value 3
-ParameterName=Error Value 4
--- a/tests/linux/test_svgui/CANopen@canfestival/Master@CanOpenNode/master.od Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,224 +0,0 @@
-<!DOCTYPE PyObject SYSTEM "PyObjects.dtd">
-<PyObject module="node" class="Node" id="162426796">
-<attr name="Profile" type="dict" id="162446980" >
-<attr name="Description" type="string" value="" />
-<attr name="Dictionary" type="dict" id="162446708" >
- <key type="numeric" value="4096" />
- <val type="numeric" value="0" />
- <key type="numeric" value="4097" />
- <val type="numeric" value="0" />
- <key type="numeric" value="4120" />
- <val type="list" id="162447532" >
- <item type="numeric" value="0" />
- <item type="numeric" value="0" />
- <item type="numeric" value="0" />
- <item type="numeric" value="0" />
-<attr name="SpecificMenu" type="list" id="162426764" >
-<attr name="ParamsDictionary" type="dict" id="162446300" >
-<attr name="UserMapping" type="dict" id="162446028" >
-<attr name="DS302" type="dict" id="161287404" >
- <key type="numeric" value="7968" />
- <val type="dict" id="160043732" >
- <key type="string" value="need" />
- <val type="False" value="" />
- <key type="string" value="values" />
- <val type="list" id="162447628" >
- <item type="dict" id="162451772" >
- <key type="string" value="access" />
- <val type="string" value="ro" />
- <key type="string" value="pdo" />
- <val type="False" value="" />
- <key type="string" value="type" />
- <val type="numeric" value="5" />
- <key type="string" value="name" />
- <val type="string" value="Number of Entries" />
- <item type="dict" id="162446164" >
- <key type="string" value="access" />
- <val type="string" value="rw" />
- <key type="string" value="pdo" />
- <val type="False" value="" />
- <key type="string" value="type" />
- <val type="numeric" value="15" />
- <key type="string" value="name" />
- <val type="string" value="Store DCF for node %d[(sub)]" />
- <key type="string" value="nbmax" />
- <val type="numeric" value="127" />
- <key type="string" value="name" />
- <val type="string" value="Store DCF" />
- <key type="string" value="struct" />
- <val type="numeric" value="7" />
- <key type="numeric" value="7969" />
- <val type="dict" id="162446572" >
- <key type="string" value="need" />
- <val type="False" value="" />
- <key type="string" value="values" />
- <val type="list" id="162447788" >
- <item type="dict" id="162452044" >
- <key type="string" value="access" />
- <val type="string" value="ro" />
- <key type="string" value="pdo" />
- <val type="False" value="" />
- <key type="string" value="type" />
- <val type="numeric" value="5" />
- <key type="string" value="name" />
- <val type="string" value="Number of Entries" />
- <item type="dict" id="162452316" >
- <key type="string" value="access" />
- <val type="string" value="rw" />
- <key type="string" value="pdo" />
- <val type="False" value="" />
- <key type="string" value="type" />
- <val type="numeric" value="2" />
- <key type="string" value="name" />
- <val type="string" value="Storage Format for Node %d[(sub)]" />
- <key type="string" value="nbmax" />
- <val type="numeric" value="127" />
- <key type="string" value="name" />
- <val type="string" value="Storage Format" />
- <key type="string" value="struct" />
- <val type="numeric" value="7" />
- <key type="numeric" value="7970" />
- <val type="dict" id="162452452" >
- <key type="string" value="need" />
- <val type="False" value="" />
- <key type="string" value="values" />
- <val type="list" id="162447820" >
- <item type="dict" id="162447116" >
- <key type="string" value="access" />
- <val type="string" value="ro" />
- <key type="string" value="pdo" />
- <val type="False" value="" />
- <key type="string" value="type" />
- <val type="numeric" value="5" />
- <key type="string" value="name" />
- <val type="string" value="Number of Entries" />
- <item type="dict" id="162452724" >
- <key type="string" value="access" />
- <val type="string" value="rw" />
- <key type="string" value="pdo" />
- <val type="False" value="" />
- <key type="string" value="type" />
- <val type="numeric" value="15" />
- <key type="string" value="name" />
- <val type="string" value="Concise DCF for Node %d[(sub)]" />
- <key type="string" value="nbmax" />
- <val type="numeric" value="127" />
- <key type="string" value="name" />
- <val type="string" value="Concise DCF" />
- <key type="string" value="struct" />
- <val type="numeric" value="7" />
-<attr name="ProfileName" type="string" value="None" />
-<attr name="Type" type="string" value="master" />
-<attr name="ID" type="numeric" value="0" />
-<attr name="Name" type="string" value="MasterNode" />
--- a/tests/linux/test_svgui/CANopen@canfestival/Master@CanOpenNode/nodelist.cpj Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-Node16Name=DS401_Slave_GUI
-Node16DCFName=DS401_Slave_Gui.eds
-Node32DCFName=DS401_Slave_Gui.eds
--- a/tests/linux/test_svgui/CANopen@canfestival/Master@CanOpenNode/plugin.xml Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<CanFestivalNode CAN_Device="vcan0" CAN_Baudrate="125K" NodeId="1"/>
--- a/tests/linux/test_svgui/CANopen@canfestival/baseplugin.xml Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<BaseParams Name="CANopen" IEC_Channel="0"/>
--- a/tests/linux/test_svgui/CANopen@canfestival/plugin.xml Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<CanFestivalInstance CAN_Driver="../CanFestival-3/drivers/can_socket/libcanfestival_can_socket.so"/>
--- a/tests/linux/test_svgui/beremiz.xml Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<BeremizRoot URI_location="LOCAL://">
- <Linux CFLAGS="-g" LDFLAGS=""/>
--- a/tests/linux/test_svgui/methods.py Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-self.logger.write_error("Welcome to the Beremiz Demo\n\n")
-self.logger.write("This demo provides a PLC working with the CANopen plugin\n")
-self.logger.write("""Some external programs are also provided:\n
-- a CAN TCP server to simulate the CANopen network
-- a virtual slave node to simulate input block
-- a virtual slave node to simulate output block
-self.logger.write("\nInfo: For this demo, %s plugin has some special methods to run external programs.\nThese methods are defined in methods.py\n" % (PlugName or "Root"))
-#open_pdf(os.path.join(os.path.split(__file__)[0], "doc", "manual_beremiz.pdf"), pagenum=21)
-if wx.Platform == '__WXMSW__':
- self.listLaunchProg = [
- {'name' : 'Can Tcp Server',
- 'command' : 'can_tcp_win32_server.exe',
- {'name' : 'DS401 Slave Gui NodeId 32',
- 'command' : 'DS401_Slave_Gui.exe -sI -l can_tcp_win32.dll -b 127.0.0.1 -i 20 -B 125K',
- {'name' : 'DS401 Slave Gui NodeId 16',
- 'command' : 'DS401_Slave_Gui.exe -sO -l can_tcp_win32.dll -b 127.0.0.1 -i 10 -B 125K',
- self.listLaunchProg = [
- {'name' : 'DS401 Slave Gui NodeId 32',
- 'command' : '../CanFestival-3/examples/DS401_Slave_Gui/DS401_Slave_Gui -sI -l ../CanFestival-3/drivers/can_socket/libcanfestival_can_socket.so -b vcan0 -i 20 -B 125K',
- {'name' : 'DS401 Slave Gui NodeId 16',
- 'command' : '../CanFestival-3/examples/DS401_Slave_Gui/DS401_Slave_Gui -sO -l ../CanFestival-3/drivers/can_socket/libcanfestival_can_socket.so -b vcan0 -i 10 -B 125K',
- # External programs list
- # Launch them and get their pid
- for prog in self.listLaunchProg:
- self.logger.write("Starting %s\n" % prog['name'])
- prog['pid'] = ProcessLogger(self.logger, prog['command'], no_gui=prog['no_gui'])
- keyword = prog['keyword'],
- PluginsRoot._Stop(self)
- for prog in self.listLaunchProg:
- self.logger.write("Stopping %s\n" % prog['name'])
-self._Run, self._Stop = my_methods(self)
\ No newline at end of file
--- a/tests/linux/test_svgui/plc.xml Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2702 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="http://www.plcopen.org/xml/tc6.xsd"
- xmlns:xhtml="http://www.w3.org/1999/xhtml"
- xsi:schemaLocation="http://www.plcopen.org/xml/tc6.xsd http://www.plcopen.org/xml/tc6.xsd">
- <fileHeader companyName="LOLITECH"
- companyURL="www.lolitech.com"
- creationDateTime="2007-07-07 11:58:26"
- contentDescription="This tests as most as possible IEC standard library"/>
- <contentHeader name="STD_TEST"
- modificationDateTime="2008-06-26 18:38:30">
- <dataType name="MYTYPE">
- <range lower="0" upper="1000"/>
- <dataType name="MYTYPE2">
- <simpleValue value="CLOSED"/>
- <dataType name="MYTYPE3">
- <dimension lower="0" upper="7"/>
- <dimension lower="1" upper="8"/>
- <derived name="MYTYPE5"/>
- <value repetitionValue="32">
- <simpleValue value="0"/>
- <value repetitionValue="30">
- <simpleValue value="1"/>
- <dataType name="MYTYPE4">
- <range lower="1" upper="100"/>
- <dataType name="MYTYPE5">
- <derived name="MYTYPE4"/>
- <simpleValue value="10"/>
- <pou name="MAIN_TEST" pouType="program">
- <variable name="DigitalOut" address="%QB0.0.16.25088.1">
- <variable name="DigitalIn" address="%IB0.0.32.24576.1">
- <variable name="AnalogOut1" address="%QW0.0.16.25617.1">
- <derived name="MYTYPE"/>
- <variable name="AnalogOut2" address="%QW0.0.16.25617.2">
- <derived name="MYTYPE"/>
- <variable name="AnalogOut3" address="%QW0.0.16.25617.3">
- <variable name="AnalogIn1" address="%IW0.0.32.25601.1">
- <variable name="AnalogIn2" address="%IW0.0.32.25601.2">
- <derived name="Bitwise_Block"/>
- <variable name="Test2">
- <derived name="Test_SFC"/>
- <variable name="latch">
- <variable name="test1">
- <derived name="Button"/>
- <variable name="test2">
- <derived name="Button"/>
- <derived name="Button"/>
- <derived name="Button"/>
- <derived name="Button"/>
- <derived name="Button"/>
- <variable name="counter1">
- <derived name="RotatingCtrl"/>
- <variable name="counter2">
- <derived name="RotatingCtrl"/>
- <comment localId="26" height="80" width="475">
- <position x="25" y="5"/>
-<![CDATA[Main program]]>
- <inVariable localId="40" height="30" width="100">
- <position x="25" y="155"/>
- <relPosition x="100" y="15"/>
- <expression>DigitalOut</expression>
- <block localId="52" width="127" height="141" typeName="Bitwise_Block" instanceName="Test">
- <position x="410" y="535"/>
- <variable formalParameter="IN1">
- <relPosition x="0" y="35"/>
- <connection refLocalId="105" formalParameter="State">
- <position x="410" y="570"/>
- <position x="240" y="570"/>
- <variable formalParameter="IN2">
- <relPosition x="0" y="65"/>
- <connection refLocalId="106" formalParameter="State">
- <position x="410" y="600"/>
- <position x="350" y="600"/>
- <position x="350" y="710"/>
- <position x="240" y="710"/>
- <variable formalParameter="OUT_AND">
- <relPosition x="127" y="35"/>
- <variable formalParameter="OUT_OR">
- <relPosition x="127" y="65"/>
- <variable formalParameter="OUT_XOR">
- <relPosition x="127" y="95"/>
- <variable formalParameter="OUT_SR">
- <relPosition x="127" y="125"/>
- <inVariable localId="59" height="30" width="100">
- <position x="45" y="910"/>
- <relPosition x="100" y="15"/>
- <expression>AnalogOut1</expression>
- <outVariable localId="60" height="30" width="100">
- <position x="910" y="840"/>
- <relPosition x="0" y="15"/>
- <connection refLocalId="69" formalParameter="OUT1">
- <position x="910" y="855"/>
- <position x="610" y="855"/>
- <expression>AnalogOut1</expression>
- <inVariable localId="64" height="30" width="95">
- <position x="45" y="980"/>
- <relPosition x="95" y="15"/>
- <expression>AnalogIn1</expression>
- <block localId="69" width="160" height="230" typeName="Test_SFC" instanceName="Test2">
- <position x="450" y="820"/>
- <variable formalParameter="CNT1">
- <relPosition x="0" y="35"/>
- <connection refLocalId="105" formalParameter="State">
- <position x="450" y="855"/>
- <position x="380" y="855"/>
- <position x="380" y="570"/>
- <position x="240" y="570"/>
- <variable formalParameter="CNT2">
- <relPosition x="0" y="70"/>
- <connection refLocalId="106" formalParameter="State">
- <position x="450" y="890"/>
- <position x="350" y="890"/>
- <position x="350" y="710"/>
- <position x="240" y="710"/>
- <variable formalParameter="IN1">
- <relPosition x="0" y="105"/>
- <connection refLocalId="59">
- <position x="450" y="925"/>
- <position x="145" y="925"/>
- <variable formalParameter="IN2">
- <relPosition x="0" y="140"/>
- <connection refLocalId="71">
- <position x="450" y="960"/>
- <position x="145" y="960"/>
- <variable formalParameter="UPPER1">
- <relPosition x="0" y="175"/>
- <connection refLocalId="64">
- <position x="450" y="995"/>
- <position x="140" y="995"/>
- <variable formalParameter="UPPER2">
- <relPosition x="0" y="210"/>
- <connection refLocalId="72">
- <position x="450" y="1030"/>
- <position x="140" y="1030"/>
- <variable formalParameter="OUT1">
- <relPosition x="160" y="35"/>
- <variable formalParameter="OUT2">
- <relPosition x="160" y="70"/>
- <outVariable localId="70" height="30" width="100">
- <position x="910" y="875"/>
- <relPosition x="0" y="15"/>
- <connection refLocalId="69" formalParameter="OUT2">
- <position x="910" y="890"/>
- <position x="610" y="890"/>
- <expression>AnalogOut2</expression>
- <inVariable localId="71" height="30" width="100">
- <position x="45" y="945"/>
- <relPosition x="100" y="15"/>
- <expression>AnalogOut2</expression>
- <inVariable localId="72" height="35" width="95">
- <position x="45" y="1015"/>
- <relPosition x="95" y="15"/>
- <expression>AnalogIn2</expression>
- <block localId="73" width="120" height="80" typeName="SETBIT">
- <position x="745" y="140"/>
- <variable formalParameter="INPUT_BYTE">
- <relPosition x="0" y="30"/>
- <connection refLocalId="40">
- <position x="745" y="170"/>
- <position x="125" y="170"/>
- <variable formalParameter="INPUT_BIT">
- <relPosition x="0" y="50"/>
- <connection refLocalId="77" formalParameter="Q">
- <position x="745" y="190"/>
- <position x="526" y="190"/>
- <position x="526" y="220"/>
- <position x="507" y="220"/>
- <variable formalParameter="NUM_BIT">
- <relPosition x="0" y="70"/>
- <connection refLocalId="74">
- <position x="745" y="210"/>
- <position x="540" y="210"/>
- <position x="540" y="295"/>
- <position x="95" y="295"/>
- <variable formalParameter="">
- <relPosition x="120" y="30"/>
- <inVariable localId="74" height="30" width="65">
- <position x="30" y="280"/>
- <relPosition x="65" y="15"/>
- <expression>UINT#7</expression>
- <block localId="75" width="120" height="60" typeName="GETBIT">
- <position x="170" y="190"/>
- <variable formalParameter="INPUT_BYTE">
- <relPosition x="0" y="30"/>
- <connection refLocalId="40">
- <position x="170" y="220"/>
- <position x="150" y="220"/>
- <position x="150" y="170"/>
- <position x="125" y="170"/>
- <variable formalParameter="NUM_BIT">
- <relPosition x="0" y="50"/>
- <connection refLocalId="74">
- <position x="170" y="240"/>
- <position x="151" y="240"/>
- <position x="151" y="295"/>
- <position x="95" y="295"/>
- <variable formalParameter="">
- <relPosition x="120" y="30"/>
- <outVariable localId="76" height="30" width="100">
- <position x="910" y="155"/>
- <relPosition x="0" y="15"/>
- <connection refLocalId="73">
- <position x="910" y="170"/>
- <position x="865" y="170"/>
- <expression>DigitalOut</expression>
- <block localId="77" width="57" height="60" typeName="TP" instanceName="t1">
- <position x="450" y="190"/>
- <variable formalParameter="IN" negated="true">
- <relPosition x="0" y="30"/>
- <connection refLocalId="85" formalParameter="Q">
- <position x="450" y="220"/>
- <position x="400" y="220"/>
- <variable formalParameter="PT">
- <relPosition x="0" y="50"/>
- <connection refLocalId="80">
- <position x="450" y="240"/>
- <position x="420" y="240"/>
- <position x="420" y="270"/>
- <position x="220" y="270"/>
- <variable formalParameter="Q">
- <relPosition x="57" y="30"/>
- <variable formalParameter="ET">
- <relPosition x="57" y="50"/>
- <inVariable localId="80" height="27" width="50">
- <position x="170" y="255"/>
- <relPosition x="50" y="15"/>
- <expression>T#1s</expression>
- <block localId="85" width="60" height="60" typeName="TOF" instanceName="t2">
- <position x="340" y="190"/>
- <variable formalParameter="IN">
- <relPosition x="0" y="30"/>
- <connection refLocalId="75">
- <position x="340" y="220"/>
- <position x="290" y="220"/>
- <variable formalParameter="PT">
- <relPosition x="0" y="50"/>
- <connection refLocalId="80">
- <position x="340" y="240"/>
- <position x="296" y="240"/>
- <position x="296" y="270"/>
- <position x="220" y="270"/>
- <variable formalParameter="Q">
- <relPosition x="60" y="30"/>
- <variable formalParameter="ET">
- <relPosition x="60" y="50"/>
- <outVariable localId="86" height="30" width="100">
- <position x="910" y="330"/>
- <relPosition x="0" y="15"/>
- <connection refLocalId="90" formalParameter="OUT">
- <position x="910" y="345"/>
- <position x="865" y="345"/>
- <expression>AnalogOut3</expression>
- <block localId="87" width="120" height="40" typeName="TIME_TO_REAL">
- <position x="455" y="315"/>
- <variable formalParameter="IN">
- <relPosition x="0" y="30"/>
- <connection refLocalId="77" formalParameter="ET">
- <position x="455" y="345"/>
- <position x="445" y="345"/>
- <position x="445" y="275"/>
- <position x="517" y="275"/>
- <position x="517" y="240"/>
- <position x="507" y="240"/>
- <variable formalParameter="OUT">
- <relPosition x="120" y="30"/>
- <block localId="88" width="80" height="60" typeName="MUL">
- <position x="630" y="315"/>
- <variable formalParameter="IN1">
- <relPosition x="0" y="30"/>
- <connection refLocalId="87" formalParameter="OUT">
- <position x="630" y="345"/>
- <position x="575" y="345"/>
- <variable formalParameter="IN2">
- <relPosition x="0" y="50"/>
- <connection refLocalId="89">
- <position x="630" y="365"/>
- <position x="607" y="365"/>
- <position x="607" y="400"/>
- <position x="585" y="400"/>
- <variable formalParameter="OUT">
- <relPosition x="80" y="30"/>
- <inVariable localId="89" height="35" width="120">
- <position x="465" y="385"/>
- <relPosition x="120" y="15"/>
- <expression>REAL#10000.0</expression>
- <block localId="90" width="120" height="40" typeName="REAL_TO_INT">
- <position x="745" y="315"/>
- <variable formalParameter="IN">
- <relPosition x="0" y="30"/>
- <connection refLocalId="88" formalParameter="OUT">
- <position x="745" y="345"/>
- <position x="710" y="345"/>
- <variable formalParameter="OUT">
- <relPosition x="120" y="30"/>
- <comment localId="100" height="40" width="400">
- <position x="25" y="100"/>
-<![CDATA[A simple blinking output (2s period)]]>
- <comment localId="102" height="40" width="430">
- <position x="580" y="255"/>
-<![CDATA[Output value of TP block as analog output #3]]>
- <comment localId="103" height="65" width="420">
- <position x="25" y="425"/>
-<![CDATA[Map input and output of bitwise_block test to bits of DigitalIn and Digital out]]>
- <comment localId="104" height="85" width="285">
- <position x="40" y="805"/>
-<![CDATA[Map AnalogIN #1 #2 and AnalogOUT #1 #2 to SFC test interface]]>
- <block localId="105" width="150" height="100" typeName="Button" instanceName="test1">
- <position x="90" y="535"/>
- <variable formalParameter="Show">
- <relPosition x="0" y="35"/>
- <variable formalParameter="Enable">
- <relPosition x="0" y="60"/>
- <variable formalParameter="Toggle">
- <relPosition x="0" y="85"/>
- <variable formalParameter="State">
- <relPosition x="150" y="35"/>
- <block localId="106" width="150" height="100" typeName="Button" instanceName="test2">
- <position x="90" y="675"/>
- <variable formalParameter="Show">
- <relPosition x="0" y="35"/>
- <variable formalParameter="Enable">
- <relPosition x="0" y="60"/>
- <variable formalParameter="Toggle">
- <relPosition x="0" y="85"/>
- <variable formalParameter="State">
- <relPosition x="150" y="35"/>
- <block localId="107" width="150" height="90" typeName="Button" instanceName="LED1">
- <position x="675" y="405"/>
- <variable formalParameter="Show">
- <relPosition x="0" y="30"/>
- <variable formalParameter="Enable">
- <relPosition x="0" y="55"/>
- <variable formalParameter="Toggle">
- <relPosition x="0" y="75"/>
- <connection refLocalId="52" formalParameter="OUT_AND">
- <position x="675" y="480"/>
- <position x="650" y="480"/>
- <position x="650" y="570"/>
- <position x="537" y="570"/>
- <variable formalParameter="State">
- <relPosition x="150" y="30"/>
- <block localId="108" width="150" height="90" typeName="Button" instanceName="LED2">
- <position x="675" y="525"/>
- <variable formalParameter="Show">
- <relPosition x="0" y="30"/>
- <variable formalParameter="Enable">
- <relPosition x="0" y="55"/>
- <variable formalParameter="Toggle">
- <relPosition x="0" y="75"/>
- <connection refLocalId="52" formalParameter="OUT_OR">
- <position x="675" y="600"/>
- <position x="537" y="600"/>
- <variable formalParameter="State">
- <relPosition x="150" y="30"/>
- <block localId="109" width="150" height="85" typeName="Button" instanceName="LED3">
- <position x="675" y="640"/>
- <variable formalParameter="Show">
- <relPosition x="0" y="30"/>
- <variable formalParameter="Enable">
- <relPosition x="0" y="50"/>
- <variable formalParameter="Toggle">
- <relPosition x="0" y="70"/>
- <connection refLocalId="52" formalParameter="OUT_XOR">
- <position x="675" y="710"/>
- <position x="650" y="710"/>
- <position x="650" y="630"/>
- <position x="537" y="630"/>
- <variable formalParameter="State">
- <relPosition x="150" y="30"/>
- <block localId="110" width="150" height="85" typeName="Button" instanceName="LED4">
- <position x="675" y="750"/>
- <variable formalParameter="Show">
- <relPosition x="0" y="30"/>
- <variable formalParameter="Enable">
- <relPosition x="0" y="50"/>
- <variable formalParameter="Toggle">
- <relPosition x="0" y="70"/>
- <connection refLocalId="52" formalParameter="OUT_SR">
- <position x="675" y="820"/>
- <position x="630" y="820"/>
- <position x="630" y="660"/>
- <position x="537" y="660"/>
- <variable formalParameter="State">
- <relPosition x="150" y="30"/>
- <block localId="111" width="150" height="105" typeName="RotatingCtrl" instanceName="counter1">
- <position x="1195" y="880"/>
- <variable formalParameter="Show">
- <relPosition x="0" y="35"/>
- <variable formalParameter="Enable">
- <relPosition x="0" y="60"/>
- <variable formalParameter="SetAngle">
- <relPosition x="0" y="90"/>
- <connection refLocalId="113" formalParameter="OUT">
- <position x="1195" y="970"/>
- <position x="1130" y="970"/>
- <variable formalParameter="Angle">
- <relPosition x="150" y="35"/>
- <block localId="112" width="120" height="45" typeName="INT_TO_REAL">
- <position x="680" y="940"/>
- <variable formalParameter="IN">
- <relPosition x="0" y="30"/>
- <connection refLocalId="69" formalParameter="OUT1">
- <position x="680" y="970"/>
- <position x="645" y="970"/>
- <position x="645" y="855"/>
- <position x="610" y="855"/>
- <variable formalParameter="OUT">
- <relPosition x="120" y="30"/>
- <block localId="113" width="100" height="85" typeName="MUL">
- <position x="1030" y="935"/>
- <variable formalParameter="IN1">
- <relPosition x="0" y="35"/>
- <connection refLocalId="114" formalParameter="OUT">
- <position x="1030" y="970"/>
- <position x="960" y="970"/>
- <variable formalParameter="IN2">
- <relPosition x="0" y="70"/>
- <connection refLocalId="116">
- <position x="1030" y="1005"/>
- <position x="1002" y="1005"/>
- <position x="1002" y="1045"/>
- <position x="975" y="1045"/>
- <variable formalParameter="OUT">
- <relPosition x="100" y="35"/>
- <block localId="114" width="95" height="80" typeName="DIV">
- <position x="865" y="935"/>
- <variable formalParameter="IN1">
- <relPosition x="0" y="35"/>
- <connection refLocalId="112" formalParameter="OUT">
- <position x="865" y="970"/>
- <position x="800" y="970"/>
- <variable formalParameter="IN2">
- <relPosition x="0" y="65"/>
- <connection refLocalId="115">
- <position x="865" y="1000"/>
- <position x="830" y="1000"/>
- <position x="830" y="1025"/>
- <position x="795" y="1025"/>
- <variable formalParameter="OUT">
- <relPosition x="95" y="35"/>
- <inVariable localId="115" height="25" width="110">
- <position x="685" y="1015"/>
- <relPosition x="110" y="10"/>
- <expression>REAL#400.0</expression>
- <inVariable localId="116" height="25" width="120">
- <position x="855" y="1035"/>
- <relPosition x="120" y="10"/>
- <expression>REAL#-180.0</expression>
- <block localId="117" width="100" height="85" typeName="MUL">
- <position x="1035" y="1080"/>
- <variable formalParameter="IN1">
- <relPosition x="0" y="35"/>
- <connection refLocalId="118" formalParameter="OUT">
- <position x="1035" y="1115"/>
- <position x="965" y="1115"/>
- <variable formalParameter="IN2">
- <relPosition x="0" y="70"/>
- <connection refLocalId="119">
- <position x="1035" y="1150"/>
- <position x="1007" y="1150"/>
- <position x="1007" y="1190"/>
- <position x="980" y="1190"/>
- <variable formalParameter="OUT">
- <relPosition x="100" y="35"/>
- <block localId="118" width="95" height="80" typeName="DIV">
- <position x="870" y="1080"/>
- <variable formalParameter="IN1">
- <relPosition x="0" y="35"/>
- <connection refLocalId="121" formalParameter="OUT">
- <position x="870" y="1115"/>
- <position x="805" y="1115"/>
- <variable formalParameter="IN2">
- <relPosition x="0" y="65"/>
- <connection refLocalId="120">
- <position x="870" y="1145"/>
- <position x="835" y="1145"/>
- <position x="835" y="1170"/>
- <position x="800" y="1170"/>
- <variable formalParameter="OUT">
- <relPosition x="95" y="35"/>
- <inVariable localId="119" height="25" width="120">
- <position x="860" y="1180"/>
- <relPosition x="120" y="10"/>
- <expression>REAL#-180.0</expression>
- <inVariable localId="120" height="25" width="110">
- <position x="690" y="1160"/>
- <relPosition x="110" y="10"/>
- <expression>REAL#400.0</expression>
- <block localId="121" width="120" height="45" typeName="INT_TO_REAL">
- <position x="685" y="1085"/>
- <variable formalParameter="IN">
- <relPosition x="0" y="30"/>
- <connection refLocalId="69" formalParameter="OUT2">
- <position x="685" y="1115"/>
- <position x="630" y="1115"/>
- <position x="630" y="890"/>
- <position x="610" y="890"/>
- <variable formalParameter="OUT">
- <relPosition x="120" y="30"/>
- <block localId="122" width="150" height="105" typeName="RotatingCtrl" instanceName="counter2">
- <position x="1195" y="1025"/>
- <variable formalParameter="Show">
- <relPosition x="0" y="35"/>
- <variable formalParameter="Enable">
- <relPosition x="0" y="60"/>
- <variable formalParameter="SetAngle">
- <relPosition x="0" y="90"/>
- <connection refLocalId="117" formalParameter="OUT">
- <position x="1195" y="1115"/>
- <position x="1135" y="1115"/>
- <variable formalParameter="Angle">
- <relPosition x="150" y="35"/>
- <pou name="GETBIT" pouType="function">
- <variable name="INPUT_BYTE">
- <variable name="NUM_BIT">
- <block localId="1" width="70" height="60" typeName="SHR">
- <position x="175" y="110"/>
- <variable formalParameter="IN">
- <relPosition x="0" y="30"/>
- <connection refLocalId="2">
- <position x="175" y="140"/>
- <position x="135" y="140"/>
- <variable formalParameter="N">
- <relPosition x="0" y="50"/>
- <connection refLocalId="3">
- <position x="175" y="160"/>
- <position x="140" y="160"/>
- <position x="140" y="180"/>
- <position x="105" y="180"/>
- <variable formalParameter="OUT">
- <relPosition x="70" y="30"/>
- <inVariable localId="2" height="30" width="105">
- <position x="30" y="125"/>
- <relPosition x="105" y="15"/>
- <expression>INPUT_BYTE</expression>
- <inVariable localId="3" height="30" width="75">
- <position x="30" y="165"/>
- <relPosition x="75" y="15"/>
- <expression>NUM_BIT</expression>
- <outVariable localId="4" height="30" width="65">
- <position x="555" y="125"/>
- <relPosition x="0" y="15"/>
- <connection refLocalId="7" formalParameter="OUT">
- <position x="555" y="140"/>
- <position x="525" y="140"/>
- <expression>GETBIT</expression>
- <block localId="5" width="85" height="60" typeName="AND">
- <position x="275" y="110"/>
- <variable formalParameter="IN1">
- <relPosition x="0" y="30"/>
- <connection refLocalId="1" formalParameter="OUT">
- <position x="275" y="140"/>
- <position x="245" y="140"/>
- <variable formalParameter="IN2">
- <relPosition x="0" y="50"/>
- <connection refLocalId="6">
- <position x="275" y="160"/>
- <position x="255" y="160"/>
- <position x="255" y="195"/>
- <position x="240" y="195"/>
- <variable formalParameter="OUT">
- <relPosition x="85" y="30"/>
- <inVariable localId="6" height="30" width="65">
- <position x="175" y="180"/>
- <relPosition x="65" y="15"/>
- <expression>BYTE#1</expression>
- <block localId="7" width="120" height="40" typeName="BYTE_TO_BOOL">
- <position x="405" y="110"/>
- <variable formalParameter="IN">
- <relPosition x="0" y="30"/>
- <connection refLocalId="5" formalParameter="OUT">
- <position x="405" y="140"/>
- <position x="360" y="140"/>
- <variable formalParameter="OUT">
- <relPosition x="120" y="30"/>
- <comment localId="8" height="70" width="545">
- <position x="30" y="20"/>
-<![CDATA[Function that return NUM_BIT'th bit value of INPUT_BYTE]]>
- <pou name="SETBIT" pouType="function">
- <variable name="INPUT_BYTE">
- <variable name="INPUT_BIT">
- <variable name="NUM_BIT">
- <inVariable localId="1" height="30" width="100">
- <position x="40" y="255"/>
- <relPosition x="100" y="15"/>
- <expression>INPUT_BYTE</expression>
- <inVariable localId="2" height="30" width="95">
- <position x="40" y="125"/>
- <relPosition x="95" y="15"/>
- <expression>INPUT_BIT</expression>
- <block localId="3" width="120" height="45" typeName="BOOL_TO_BYTE">
- <position x="165" y="110"/>
- <variable formalParameter="IN">
- <relPosition x="0" y="30"/>
- <connection refLocalId="2">
- <position x="165" y="140"/>
- <position x="135" y="140"/>
- <variable formalParameter="OUT">
- <relPosition x="120" y="30"/>
- <block localId="4" width="70" height="60" typeName="SHL">
- <position x="335" y="110"/>
- <variable formalParameter="IN">
- <relPosition x="0" y="30"/>
- <connection refLocalId="3" formalParameter="OUT">
- <position x="335" y="140"/>
- <position x="285" y="140"/>
- <variable formalParameter="N">
- <relPosition x="0" y="50"/>
- <connection refLocalId="5">
- <position x="335" y="160"/>
- <position x="130" y="160"/>
- <position x="130" y="230"/>
- <position x="115" y="230"/>
- <variable formalParameter="OUT">
- <relPosition x="70" y="30"/>
- <inVariable localId="5" height="30" width="75">
- <position x="40" y="215"/>
- <relPosition x="75" y="15"/>
- <expression>NUM_BIT</expression>
- <block localId="7" width="70" height="60" typeName="SHL">
- <position x="235" y="180"/>
- <variable formalParameter="IN">
- <relPosition x="0" y="30"/>
- <connection refLocalId="8">
- <position x="235" y="210"/>
- <position x="215" y="210"/>
- <position x="220" y="210"/>
- <position x="220" y="210"/>
- <position x="220" y="210"/>
- <position x="210" y="210"/>
- <variable formalParameter="N">
- <relPosition x="0" y="50"/>
- <connection refLocalId="5">
- <position x="235" y="230"/>
- <position x="115" y="230"/>
- <variable formalParameter="OUT">
- <relPosition x="70" y="30"/>
- <inVariable localId="8" height="30" width="65">
- <position x="145" y="195"/>
- <relPosition x="65" y="15"/>
- <expression>BYTE#1</expression>
- <block localId="9" width="70" height="40" typeName="NOT">
- <position x="335" y="180"/>
- <variable formalParameter="IN">
- <relPosition x="0" y="30"/>
- <connection refLocalId="7" formalParameter="OUT">
- <position x="335" y="210"/>
- <position x="305" y="210"/>
- <variable formalParameter="OUT">
- <relPosition x="70" y="30"/>
- <block localId="10" width="80" height="60" typeName="AND">
- <position x="440" y="180"/>
- <variable formalParameter="IN1">
- <relPosition x="0" y="30"/>
- <connection refLocalId="9" formalParameter="OUT">
- <position x="440" y="210"/>
- <position x="405" y="210"/>
- <variable formalParameter="IN2">
- <relPosition x="0" y="50"/>
- <connection refLocalId="1">
- <position x="440" y="230"/>
- <position x="320" y="230"/>
- <position x="320" y="270"/>
- <position x="140" y="270"/>
- <variable formalParameter="OUT">
- <relPosition x="80" y="30"/>
- <block localId="11" width="80" height="60" typeName="OR">
- <position x="565" y="110"/>
- <variable formalParameter="IN1">
- <relPosition x="0" y="30"/>
- <connection refLocalId="4" formalParameter="OUT">
- <position x="565" y="140"/>
- <position x="405" y="140"/>
- <variable formalParameter="IN2">
- <relPosition x="0" y="50"/>
- <connection refLocalId="10" formalParameter="OUT">
- <position x="565" y="160"/>
- <position x="545" y="160"/>
- <position x="545" y="210"/>
- <position x="520" y="210"/>
- <variable formalParameter="OUT">
- <relPosition x="80" y="30"/>
- <outVariable localId="12" height="30" width="70">
- <position x="695" y="125"/>
- <relPosition x="0" y="15"/>
- <connection refLocalId="11" formalParameter="OUT">
- <position x="695" y="140"/>
- <position x="645" y="140"/>
- <expression>SETBIT</expression>
- <comment localId="13" height="75" width="435">
- <position x="35" y="15"/>
-<![CDATA[Function that return INPUT_BYTE with NUM_BIT'th bit set to INPUT_BIT value]]>
- <pou name="Bitwise_Block" pouType="functionBlock">
- <variable name="OUT_AND">
- <variable name="OUT_OR">
- <variable name="OUT_XOR">
- <variable name="OUT_SR">
- <leftPowerRail localId="1" height="80" width="3">
- <position x="40" y="180"/>
- <connectionPointOut formalParameter="">
- <relPosition x="3" y="20"/>
- <connectionPointOut formalParameter="">
- <relPosition x="3" y="55"/>
- <contact localId="2" height="15" width="25">
- <position x="90" y="190"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="1">
- <position x="90" y="200"/>
- <position x="43" y="200"/>
- <relPosition x="25" y="10"/>
- <variable>IN1</variable>
- <contact localId="3" height="20" width="25">
- <position x="90" y="225"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="1">
- <position x="90" y="235"/>
- <position x="43" y="235"/>
- <relPosition x="25" y="10"/>
- <variable>IN2</variable>
- <coil localId="4" height="20" width="25">
- <position x="225" y="190"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="2">
- <position x="225" y="200"/>
- <position x="115" y="200"/>
- <connection refLocalId="3">
- <position x="225" y="200"/>
- <position x="189" y="200"/>
- <position x="189" y="235"/>
- <position x="115" y="235"/>
- <relPosition x="25" y="10"/>
- <variable>OUT_OR</variable>
- <rightPowerRail localId="5" height="40" width="3">
- <position x="350" y="180"/>
- <relPosition x="0" y="20"/>
- <connection refLocalId="4">
- <position x="350" y="200"/>
- <position x="250" y="200"/>
- <leftPowerRail localId="6" height="40" width="3">
- <position x="40" y="315"/>
- <connectionPointOut formalParameter="">
- <relPosition x="3" y="20"/>
- <contact localId="7" height="20" width="25">
- <position x="100" y="325"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="6">
- <position x="100" y="335"/>
- <position x="43" y="335"/>
- <relPosition x="25" y="10"/>
- <variable>IN1</variable>
- <contact localId="8" height="20" width="25">
- <position x="185" y="325"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="7">
- <position x="185" y="335"/>
- <position x="125" y="335"/>
- <relPosition x="25" y="10"/>
- <variable>IN2</variable>
- <coil localId="9" height="20" width="25">
- <position x="275" y="325"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="8">
- <position x="275" y="335"/>
- <position x="210" y="335"/>
- <relPosition x="25" y="10"/>
- <variable>OUT_AND</variable>
- <rightPowerRail localId="10" height="40" width="3">
- <position x="350" y="315"/>
- <relPosition x="0" y="20"/>
- <connection refLocalId="9">
- <position x="350" y="335"/>
- <position x="300" y="335"/>
- <leftPowerRail localId="11" height="80" width="3">
- <position x="40" y="415"/>
- <connectionPointOut formalParameter="">
- <relPosition x="3" y="20"/>
- <connectionPointOut formalParameter="">
- <relPosition x="3" y="60"/>
- <contact localId="12" height="20" width="25">
- <position x="100" y="425"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="11">
- <position x="100" y="435"/>
- <position x="43" y="435"/>
- <relPosition x="25" y="10"/>
- <variable>IN1</variable>
- <contact localId="13" height="20" width="25" negated="true">
- <position x="100" y="465"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="11">
- <position x="100" y="475"/>
- <position x="43" y="475"/>
- <relPosition x="25" y="10"/>
- <variable>IN1</variable>
- <contact localId="14" height="20" width="25" negated="true">
- <position x="190" y="425"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="12">
- <position x="190" y="435"/>
- <position x="125" y="435"/>
- <relPosition x="25" y="10"/>
- <variable>IN2</variable>
- <contact localId="15" height="20" width="25">
- <position x="190" y="465"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="13">
- <position x="190" y="475"/>
- <position x="125" y="475"/>
- <relPosition x="25" y="10"/>
- <variable>IN2</variable>
- <coil localId="16" height="20" width="30">
- <position x="295" y="425"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="14">
- <position x="295" y="435"/>
- <position x="215" y="435"/>
- <connection refLocalId="15">
- <position x="295" y="435"/>
- <position x="270" y="435"/>
- <position x="270" y="475"/>
- <position x="215" y="475"/>
- <relPosition x="30" y="10"/>
- <variable>OUT_XOR</variable>
- <rightPowerRail localId="17" height="40" width="3">
- <position x="350" y="415"/>
- <relPosition x="0" y="20"/>
- <connection refLocalId="16">
- <position x="350" y="435"/>
- <position x="325" y="435"/>
- <leftPowerRail localId="18" height="80" width="3">
- <position x="40" y="550"/>
- <connectionPointOut formalParameter="">
- <relPosition x="3" y="20"/>
- <connectionPointOut formalParameter="">
- <relPosition x="3" y="60"/>
- <contact localId="19" height="20" width="25">
- <position x="100" y="560"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="18">
- <position x="100" y="570"/>
- <position x="43" y="570"/>
- <relPosition x="25" y="10"/>
- <variable>IN1</variable>
- <contact localId="21" height="20" width="25">
- <position x="100" y="600"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="18">
- <position x="100" y="610"/>
- <position x="43" y="610"/>
- <relPosition x="25" y="10"/>
- <variable>IN2</variable>
- <block localId="22" width="60" height="100" typeName="SR" instanceName="SR1">
- <position x="170" y="530"/>
- <variable formalParameter="S1">
- <relPosition x="0" y="40"/>
- <connection refLocalId="19">
- <position x="170" y="570"/>
- <position x="125" y="570"/>
- <variable formalParameter="R">
- <relPosition x="0" y="80"/>
- <connection refLocalId="21">
- <position x="170" y="610"/>
- <position x="125" y="610"/>
- <variable formalParameter="Q1">
- <relPosition x="60" y="40"/>
- <coil localId="24" height="20" width="25">
- <position x="295" y="560"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="22" formalParameter="Q1">
- <position x="295" y="570"/>
- <position x="230" y="570"/>
- <relPosition x="25" y="10"/>
- <variable>OUT_SR</variable>
- <rightPowerRail localId="25" height="40" width="3">
- <position x="350" y="550"/>
- <relPosition x="0" y="20"/>
- <connection refLocalId="24">
- <position x="350" y="570"/>
- <position x="320" y="570"/>
- <comment localId="26" height="85" width="385">
- <position x="25" y="35"/>
-<![CDATA[A LD function block that embeds some FB and check basic LD]]>
- <pou name="Test_SFC" pouType="functionBlock">
- <derived name="MYTYPE"/>
- <derived name="MYTYPE"/>
- <variable name="UPPER1">
- <variable name="UPPER2">
- <derived name="MYTYPE"/>
- <derived name="MYTYPE"/>
- <variable name="TEST_ENUM">
- <derived name="MYTYPE2"/>
- <variable name="TEST_ARRAY">
- <derived name="MYTYPE3"/>
-<![CDATA[OUT1 := IN1 + 1;
-<![CDATA[OUT2 := IN2 + 1;
-TEST_ARRAY[0,1] := TEST_ARRAY[0,2] + 50;
- <transition name="REACH_UPPER1">
-<![CDATA[:= OUT1 >= UPPER1;]]>
- <transition name="REACH_UPPER2">
-<![CDATA[:= OUT2 >= UPPER2;]]>
- <step localId="1" height="31" width="55" name="Start" initialStep="true">
- <position x="125" y="170"/>
- <connectionPointOut formalParameter="">
- <relPosition x="25" y="31"/>
- <connectionPointOutAction formalParameter="">
- <relPosition x="55" y="15"/>
- </connectionPointOutAction>
- <step localId="4" height="30" width="55" name="Step3">
- <position x="440" y="370"/>
- <relPosition x="25" y="0"/>
- <connection refLocalId="22">
- <position x="465" y="370"/>
- <position x="465" y="348"/>
- <connectionPointOut formalParameter="">
- <relPosition x="25" y="30"/>
- <connectionPointOutAction formalParameter="">
- <relPosition x="55" y="15"/>
- </connectionPointOutAction>
- <jumpStep localId="5" height="13" width="20" targetName="Start">
- <position x="205" y="755"/>
- <relPosition x="10" y="0"/>
- <connection refLocalId="56">
- <position x="215" y="755"/>
- <position x="215" y="715"/>
- <transition localId="8" height="2" width="20">
- <position x="560" y="565"/>
- <relPosition x="10" y="0"/>
- <connection refLocalId="25">
- <position x="570" y="565"/>
- <position x="570" y="523"/>
- <relPosition x="10" y="2"/>
- <actionBlock localId="9" height="30" width="90">
- <position x="325" y="375"/>
- <relPosition x="0" y="15"/>
- <connection refLocalId="13">
- <position x="325" y="390"/>
- <position x="300" y="390"/>
- <reference name="COUNT1"/>
- <actionBlock localId="10" height="30" width="90">
- <position x="520" y="370"/>
- <relPosition x="0" y="15"/>
- <connection refLocalId="4">
- <position x="520" y="385"/>
- <position x="495" y="385"/>
- <reference name="COUNT1"/>
- <selectionDivergence localId="11" height="1" width="530">
- <position x="45" y="230"/>
- <relPosition x="105" y="0"/>
- <connection refLocalId="1">
- <position x="150" y="230"/>
- <position x="150" y="201"/>
- <connectionPointOut formalParameter="">
- <relPosition x="0" y="1"/>
- <connectionPointOut formalParameter="">
- <relPosition x="225" y="1"/>
- <connectionPointOut formalParameter="">
- <relPosition x="530" y="1"/>
- <selectionConvergence localId="12" height="1" width="525">
- <position x="45" y="600"/>
- <relPosition x="0" y="0"/>
- <connection refLocalId="38">
- <position x="45" y="600"/>
- <position x="45" y="472"/>
- <relPosition x="225" y="0"/>
- <connection refLocalId="15">
- <position x="270" y="600"/>
- <position x="270" y="472"/>
- <relPosition x="525" y="0"/>
- <connection refLocalId="8">
- <position x="570" y="600"/>
- <position x="570" y="567"/>
- <relPosition x="170" y="1"/>
- </selectionConvergence>
- <step localId="13" height="30" width="55" name="Step1">
- <position x="245" y="375"/>
- <relPosition x="25" y="0"/>
- <connection refLocalId="44">
- <position x="270" y="375"/>
- <position x="270" y="280"/>
- <connectionPointOut formalParameter="">
- <relPosition x="25" y="30"/>
- <connectionPointOutAction formalParameter="">
- <relPosition x="55" y="15"/>
- </connectionPointOutAction>
- <transition localId="15" height="2" width="20">
- <position x="260" y="470"/>
- <relPosition x="10" y="0"/>
- <connection refLocalId="13">
- <position x="270" y="470"/>
- <position x="270" y="405"/>
- <relPosition x="10" y="2"/>
- <reference name="REACH_UPPER1"/>
- <simultaneousDivergence localId="22" height="3" width="210">
- <position x="465" y="345"/>
- <relPosition x="110" y="0"/>
- <connection refLocalId="45">
- <position x="575" y="345"/>
- <position x="575" y="280"/>
- <connectionPointOut formalParameter="">
- <relPosition x="0" y="3"/>
- <connectionPointOut formalParameter="">
- <relPosition x="210" y="3"/>
- </simultaneousDivergence>
- <transition localId="23" height="2" width="20">
- <position x="455" y="430"/>
- <relPosition x="10" y="0"/>
- <connection refLocalId="4">
- <position x="465" y="430"/>
- <position x="465" y="400"/>
- <relPosition x="10" y="2"/>
- <reference name="REACH_UPPER1"/>
- <step localId="24" height="27" width="55" name="WAIT1">
- <position x="440" y="465"/>
- <relPosition x="25" y="0"/>
- <connection refLocalId="23">
- <position x="465" y="465"/>
- <position x="465" y="432"/>
- <connectionPointOut formalParameter="">
- <relPosition x="25" y="27"/>
- <simultaneousConvergence localId="25" height="3" width="210">
- <position x="465" y="520"/>
- <relPosition x="0" y="0"/>
- <connection refLocalId="24">
- <position x="465" y="520"/>
- <position x="465" y="492"/>
- <relPosition x="210" y="0"/>
- <connection refLocalId="29">
- <position x="675" y="520"/>
- <position x="675" y="492"/>
- <relPosition x="105" y="3"/>
- </simultaneousConvergence>
- <step localId="26" height="30" width="55" name="Step4">
- <position x="650" y="370"/>
- <relPosition x="25" y="0"/>
- <connection refLocalId="22">
- <position x="675" y="370"/>
- <position x="675" y="348"/>
- <connectionPointOut formalParameter="">
- <relPosition x="25" y="30"/>
- <connectionPointOutAction formalParameter="">
- <relPosition x="55" y="15"/>
- </connectionPointOutAction>
- <transition localId="28" height="2" width="20">
- <position x="665" y="430"/>
- <relPosition x="10" y="0"/>
- <connection refLocalId="26">
- <position x="675" y="430"/>
- <position x="675" y="400"/>
- <relPosition x="10" y="2"/>
- <reference name="REACH_UPPER2"/>
- <step localId="29" height="27" width="55" name="WAIT2">
- <position x="650" y="465"/>
- <relPosition x="25" y="0"/>
- <connection refLocalId="28">
- <position x="675" y="465"/>
- <position x="675" y="432"/>
- <connectionPointOut formalParameter="">
- <relPosition x="25" y="27"/>
- <actionBlock localId="31" height="30" width="90">
- <position x="730" y="370"/>
- <relPosition x="0" y="15"/>
- <connection refLocalId="26">
- <position x="730" y="385"/>
- <position x="705" y="385"/>
- <reference name="COUNT2"/>
- <actionBlock localId="32" height="30" width="350">
- <position x="200" y="170"/>
- <relPosition x="0" y="15"/>
- <connection refLocalId="1">
- <position x="200" y="185"/>
- <position x="180" y="185"/>
-<![CDATA[OUT1 := 0;OUT2 := 0;GO := FALSE;]]>
- <transition localId="33" height="2" width="20">
- <position x="35" y="325"/>
- <relPosition x="10" y="0"/>
- <connection refLocalId="11">
- <position x="45" y="325"/>
- <position x="45" y="231"/>
- <relPosition x="10" y="2"/>
-<![CDATA[CNT2 AND NOT CNT1]]>
- <block localId="34" width="80" height="90" typeName="AND">
- <position x="435" y="240"/>
- <variable formalParameter="IN1">
- <relPosition x="0" y="35"/>
- <connection refLocalId="35">
- <position x="435" y="275"/>
- <position x="410" y="275"/>
- <variable formalParameter="IN2">
- <relPosition x="0" y="70"/>
- <connection refLocalId="39">
- <position x="435" y="310"/>
- <position x="410" y="310"/>
- <variable formalParameter="OUT">
- <relPosition x="80" y="35"/>
- <inVariable localId="35" height="30" width="50">
- <position x="360" y="260"/>
- <relPosition x="50" y="15"/>
- <expression>CNT1</expression>
- <step localId="36" height="27" width="60" name="Step2">
- <position x="15" y="375"/>
- <relPosition x="30" y="0"/>
- <connection refLocalId="33">
- <position x="45" y="375"/>
- <position x="45" y="327"/>
- <connectionPointOut formalParameter="">
- <relPosition x="30" y="27"/>
- <connectionPointOutAction formalParameter="">
- <relPosition x="60" y="15"/>
- </connectionPointOutAction>
- <actionBlock localId="37" height="30" width="90">
- <position x="100" y="375"/>
- <relPosition x="0" y="15"/>
- <connection refLocalId="36">
- <position x="100" y="390"/>
- <position x="75" y="390"/>
- <reference name="COUNT2"/>
- <transition localId="38" height="2" width="20">
- <position x="35" y="470"/>
- <relPosition x="10" y="0"/>
- <connection refLocalId="36">
- <position x="45" y="470"/>
- <position x="45" y="402"/>
- <relPosition x="10" y="2"/>
- <reference name="REACH_UPPER2"/>
- <inVariable localId="39" height="30" width="50">
- <position x="360" y="295"/>
- <relPosition x="50" y="15"/>
- <expression>CNT2</expression>
- <leftPowerRail localId="40" height="40" width="3">
- <position x="70" y="255"/>
- <connectionPointOut formalParameter="">
- <relPosition x="3" y="20"/>
- <contact localId="41" height="20" width="25">
- <position x="110" y="265"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="40">
- <position x="110" y="275"/>
- <position x="73" y="275"/>
- <relPosition x="25" y="10"/>
- <variable>CNT1</variable>
- <contact localId="42" height="20" width="25" negated="true">
- <position x="190" y="265"/>
- <relPosition x="0" y="10"/>
- <connection refLocalId="41">
- <position x="190" y="275"/>
- <position x="135" y="275"/>
- <relPosition x="25" y="10"/>
- <variable>CNT2</variable>
- <transition localId="44" height="10" width="20">
- <position x="260" y="270"/>
- <relPosition x="10" y="0"/>
- <connection refLocalId="11">
- <position x="270" y="270"/>
- <position x="270" y="231"/>
- <relPosition x="10" y="10"/>
- <connection refLocalId="42">
- <position x="260" y="275"/>
- <position x="215" y="275"/>
- <transition localId="45" height="10" width="20">
- <position x="565" y="270"/>
- <relPosition x="10" y="0"/>
- <connection refLocalId="11">
- <position x="575" y="270"/>
- <position x="575" y="231"/>
- <relPosition x="10" y="10"/>
- <connection refLocalId="34" formalParameter="OUT">
- <position x="565" y="275"/>
- <position x="515" y="275"/>
- <comment localId="46" height="120" width="785">
- <position x="15" y="25"/>
-<![CDATA[A SFC that make use of different kinds of divergences, and mix LD and FBD and inline transitions.
-It is supposed to increment OUT1 and OUT2 according CNT1 and CNT2, and untill UPPER1 and UPPER2 limits are reached.]]>
- <step localId="47" height="45" width="75" name="Start2" initialStep="true">
- <position x="1010" y="215"/>
- <connectionPointOut formalParameter="">
- <relPosition x="35" y="45"/>
- <transition localId="48" height="10" width="20">
- <position x="1035" y="285"/>
- <relPosition x="10" y="0"/>
- <connection refLocalId="47">
- <position x="1045" y="285"/>
- <position x="1045" y="260"/>
- <relPosition x="10" y="10"/>
- <connection refLocalId="54" formalParameter="OUT">
- <position x="1035" y="290"/>
- <position x="1000" y="290"/>
- <transition localId="49" height="5" width="20">
- <position x="1035" y="380"/>
- <relPosition x="10" y="0"/>
- <connection refLocalId="50">
- <position x="1045" y="380"/>
- <position x="1045" y="355"/>
- <relPosition x="10" y="5"/>
- <step localId="50" height="35" width="60" name="WAIT3">
- <position x="1015" y="320"/>
- <relPosition x="30" y="0"/>
- <connection refLocalId="48">
- <position x="1045" y="320"/>
- <position x="1045" y="310"/>
- <position x="1045" y="310"/>
- <position x="1045" y="295"/>
- <connectionPointOut formalParameter="">
- <relPosition x="30" y="35"/>
- <jumpStep localId="51" height="15" width="20" targetName="Start2">
- <position x="1035" y="415"/>
- <relPosition x="10" y="0"/>
- <connection refLocalId="49">
- <position x="1045" y="415"/>
- <position x="1045" y="385"/>
- <inVariable localId="52" height="30" width="170">
- <position x="700" y="245"/>
- <relPosition x="170" y="15"/>
- <expression>TEST_ARRAY[0, 1]</expression>
- <inVariable localId="53" height="30" width="70">
- <position x="800" y="320"/>
- <relPosition x="70" y="15"/>
- <expression>UINT#0</expression>
- <block localId="54" width="75" height="70" typeName="GT">
- <position x="925" y="260"/>
- <variable formalParameter="IN1">
- <relPosition x="0" y="30"/>
- <connection refLocalId="52">
- <position x="925" y="290"/>
- <position x="900" y="290"/>
- <position x="900" y="260"/>
- <position x="870" y="260"/>
- <variable formalParameter="IN2">
- <relPosition x="0" y="55"/>
- <connection refLocalId="53">
- <position x="925" y="315"/>
- <position x="900" y="315"/>
- <position x="900" y="335"/>
- <position x="870" y="335"/>
- <variable formalParameter="OUT">
- <relPosition x="75" y="30"/>
- <step localId="55" height="40" width="120" name="TIMED_WAIT">
- <position x="155" y="635"/>
- <relPosition x="60" y="0"/>
- <connection refLocalId="12">
- <position x="215" y="635"/>
- <position x="215" y="601"/>
- <connectionPointOut formalParameter="">
- <relPosition x="60" y="40"/>
- <connectionPointOutAction formalParameter="">
- <relPosition x="120" y="20"/>
- </connectionPointOutAction>
- <transition localId="56" height="5" width="20">
- <position x="205" y="710"/>
- <relPosition x="10" y="0"/>
- <connection refLocalId="55">
- <position x="215" y="710"/>
- <position x="215" y="675"/>
- <relPosition x="10" y="5"/>
- <actionBlock localId="57" height="35" width="170">
- <position x="320" y="640"/>
- <relPosition x="0" y="15"/>
- <connection refLocalId="55">
- <position x="320" y="655"/>
- <position x="275" y="655"/>
- <action qualifier="D" duration="T#2s">
- <configuration name="STD_CONF">
- <resource name="STD_RESSOURCE">
- <task name="STD_TASK" interval="00:00:00.100000" priority="0">
- <pouInstance name="MAIN_INSTANCE" type="MAIN_TEST"/>
--- a/tests/linux/test_svgui/supervisor@svgui/baseplugin.xml Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<BaseParams Name="supervisor" IEC_Channel="1"/>
--- a/tests/linux/test_svgui/supervisor@svgui/gui.svg Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,834 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/taf/Pim/workspace_laurent/Beremiz/test/supervisor@svgui"
- sodipodi:docname="gui.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- id="linearGradient9073">
- style="stop-color:#929292;stop-opacity:1;"
- style="stop-color:#ffffff;stop-opacity:1;"
- id="linearGradient8094">
- style="stop-color:#464637;stop-opacity:1"
- style="stop-color:#467d37;stop-opacity:1;"
- id="linearGradient5177">
- style="stop-color:#ffffff;stop-opacity:1;"
- style="stop-color:#ffffff;stop-opacity:0;"
- id="linearGradient6435">
- style="stop-color:#ffffff;stop-opacity:1;" />
- style="stop-color:#000000;stop-opacity:1;" />
- inkscape:collect="always"
- xlink:href="#linearGradient6435"
- id="linearGradient6406"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-397.14282,-761.42857)"
- maskUnits="userSpaceOnUse"
- transform="translate(397.14282,761.42857)"
- id="linearGradient8142">
- style="stop-color:#ffffff;stop-opacity:1;"
- style="stop-color:#dcdcdc;stop-opacity:1;"
- inkscape:collect="always"
- xlink:href="#linearGradient8142"
- id="linearGradient8148"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.7352941,0,0,1.4285714,1228.5128,-4080.0482)" />
- inkscape:collect="always"
- xlink:href="#linearGradient8094"
- id="radialGradient8100"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.2670353,1.6569583e-2,-1.6571845e-2,1.2672083,-6.3869815,-6.6630278)" />
- inkscape:collect="always"
- xlink:href="#linearGradient9073"
- id="radialGradient9081"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.6730924,6.1221359e-3,-6.9425482e-3,1.8972995,-23.992621,-6.8292465)" />
- inkscape:collect="always"
- xlink:href="#linearGradient5177"
- id="radialGradient10056"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4617839,-2.8861501e-2,3.1134805e-2,1.5769227,-19.270392,2.2543889)"
- inkscape:collect="always"
- xlink:href="#linearGradient9073"
- id="radialGradient10074"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.6730924,6.1221359e-3,-6.9425482e-3,1.8972995,-23.992621,-6.8292465)"
- inkscape:collect="always"
- xlink:href="#linearGradient8094"
- id="radialGradient10076"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.2670353,1.6569583e-2,-1.6571845e-2,1.2672083,-6.3869815,-6.6630278)"
- inkscape:collect="always"
- xlink:href="#linearGradient5177"
- id="radialGradient10084"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4617839,-2.8861501e-2,3.1134805e-2,1.5769227,-19.270392,2.2543889)"
- inkscape:collect="always"
- xlink:href="#linearGradient5177"
- id="radialGradient10092"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4617839,-2.8861501e-2,3.1134805e-2,1.5769227,-19.270392,2.2543889)"
- inkscape:collect="always"
- xlink:href="#linearGradient5177"
- id="radialGradient10100"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4617839,-2.8861501e-2,3.1134805e-2,1.5769227,-19.270392,2.2543889)"
- inkscape:collect="always"
- xlink:href="#linearGradient9073"
- id="radialGradient10108"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.6730924,6.1221359e-3,-6.9425482e-3,1.8972995,-23.992621,-6.8292465)"
- inkscape:collect="always"
- xlink:href="#linearGradient8094"
- id="radialGradient10110"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.2670353,1.6569583e-2,-1.6571845e-2,1.2672083,-6.3869815,-6.6630278)"
- inkscape:collect="always"
- xlink:href="#linearGradient9073"
- id="radialGradient10118"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.6730924,6.1221359e-3,-6.9425482e-3,1.8972995,-23.992621,-6.8292465)"
- inkscape:collect="always"
- xlink:href="#linearGradient8094"
- id="radialGradient10120"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.2670353,1.6569583e-2,-1.6571845e-2,1.2672083,-6.3869815,-6.6630278)"
- inkscape:collect="always"
- xlink:href="#linearGradient9073"
- id="radialGradient10128"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.6730924,6.1221359e-3,-6.9425482e-3,1.8972995,-23.992621,-6.8292465)"
- inkscape:collect="always"
- xlink:href="#linearGradient8094"
- id="radialGradient10130"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.2670353,1.6569583e-2,-1.6571845e-2,1.2672083,-6.3869815,-6.6630278)"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:cx="70.388142"
- inkscape:cy="143.56774"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:window-width="1272"
- inkscape:window-height="937"
- inkscape:window-y="0" />
- <dc:format>image/svg+xml</dc:format>
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- style="display:inline">
- style="fill:url(#linearGradient8148);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.43299961;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="M 0,3.1974423e-14 L 350,3.1974423e-14 L 350,300 L 0,300 L 0,3.1974423e-14 z "
- sodipodi:nodetypes="ccccc"
- inkscape:export-filename="Y:\LoLiTech\Solutions_Techniques\beremiz\splash.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- style="font-size:11.23303699px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial Black"
- sodipodi:linespacing="125%"><tspan
- y="282.53265">Pre-Alpha Release. Copyright © LOLITECH 2008</tspan></text>
- transform="translate(21.642857,18.214286)">
- transform="matrix(1.5916608,0,0,1.5916608,-4.534839,45.738269)"
- d="M 51.012705 1.7575644 A 12.374369 12.374369 0 1 1 26.263968,1.7575644 A 12.374369 12.374369 0 1 1 51.012705 1.7575644 z"
- sodipodi:ry="12.374369"
- sodipodi:rx="12.374369"
- sodipodi:cy="1.7575644"
- sodipodi:cx="38.638336"
- style="opacity:1;color:#000000;fill:url(#radialGradient10074);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.25654912;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- transform="translate(18.32595,46.778151)"
- d="M 51.012705 1.7575644 A 12.374369 12.374369 0 1 1 26.263968,1.7575644 A 12.374369 12.374369 0 1 1 51.012705 1.7575644 z"
- sodipodi:ry="12.374369"
- sodipodi:rx="12.374369"
- sodipodi:cy="1.7575644"
- sodipodi:cx="38.638336"
- style="opacity:1;color:#000000;fill:url(#radialGradient10076);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- transform="translate(-18.357143,16.214286)">
- transform="translate(58.32595,48.778151)"
- d="M 51.012705 1.7575644 A 12.374369 12.374369 0 1 1 26.263968,1.7575644 A 12.374369 12.374369 0 1 1 51.012705 1.7575644 z"
- sodipodi:ry="12.374369"
- sodipodi:rx="12.374369"
- sodipodi:cy="1.7575644"
- sodipodi:cx="38.638336"
- style="opacity:1;color:#000000;fill:#46e837;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- transform="matrix(0.9170232,0,0,0.9170232,61.532035,48.923988)"
- d="M 51.012705 1.7575644 A 12.374369 12.374369 0 1 1 26.263968,1.7575644 A 12.374369 12.374369 0 1 1 51.012705 1.7575644 z"
- sodipodi:ry="12.374369"
- sodipodi:rx="12.374369"
- sodipodi:cy="1.7575644"
- sodipodi:cx="38.638336"
- style="opacity:1;color:#000000;fill:url(#radialGradient10056);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- transform="translate(81.642857,18.214286)"
- style="opacity:1;color:#000000;fill:url(#radialGradient10108);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.25654912;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:cx="38.638336"
- sodipodi:cy="1.7575644"
- sodipodi:rx="12.374369"
- sodipodi:ry="12.374369"
- d="M 51.012705 1.7575644 A 12.374369 12.374369 0 1 1 26.263968,1.7575644 A 12.374369 12.374369 0 1 1 51.012705 1.7575644 z"
- transform="matrix(1.5916608,0,0,1.5916608,-4.534839,45.738269)" />
- style="opacity:1;color:#000000;fill:url(#radialGradient10110);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:cx="38.638336"
- sodipodi:cy="1.7575644"
- sodipodi:rx="12.374369"
- sodipodi:ry="12.374369"
- d="M 51.012705 1.7575644 A 12.374369 12.374369 0 1 1 26.263968,1.7575644 A 12.374369 12.374369 0 1 1 51.012705 1.7575644 z"
- transform="translate(18.32595,46.778151)" />
- transform="translate(41.642857,16.214286)">
- transform="translate(58.32595,48.778151)"
- d="M 51.012705 1.7575644 A 12.374369 12.374369 0 1 1 26.263968,1.7575644 A 12.374369 12.374369 0 1 1 51.012705 1.7575644 z"
- sodipodi:ry="12.374369"
- sodipodi:rx="12.374369"
- sodipodi:cy="1.7575644"
- sodipodi:cx="38.638336"
- style="opacity:1;color:#000000;fill:#46e837;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- transform="matrix(0.9170232,0,0,0.9170232,61.532035,48.923988)"
- d="M 51.012705 1.7575644 A 12.374369 12.374369 0 1 1 26.263968,1.7575644 A 12.374369 12.374369 0 1 1 51.012705 1.7575644 z"
- sodipodi:ry="12.374369"
- sodipodi:rx="12.374369"
- sodipodi:cy="1.7575644"
- sodipodi:cx="38.638336"
- style="opacity:1;color:#000000;fill:url(#radialGradient10084);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- transform="translate(141.64286,18.214286)"
- style="opacity:1;color:#000000;fill:url(#radialGradient10118);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.25654912;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:cx="38.638336"
- sodipodi:cy="1.7575644"
- sodipodi:rx="12.374369"
- sodipodi:ry="12.374369"
- d="M 51.012705 1.7575644 A 12.374369 12.374369 0 1 1 26.263968,1.7575644 A 12.374369 12.374369 0 1 1 51.012705 1.7575644 z"
- transform="matrix(1.5916608,0,0,1.5916608,-4.534839,45.738269)" />
- style="opacity:1;color:#000000;fill:url(#radialGradient10120);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:cx="38.638336"
- sodipodi:cy="1.7575644"
- sodipodi:rx="12.374369"
- sodipodi:ry="12.374369"
- d="M 51.012705 1.7575644 A 12.374369 12.374369 0 1 1 26.263968,1.7575644 A 12.374369 12.374369 0 1 1 51.012705 1.7575644 z"
- transform="translate(18.32595,46.778151)" />
- transform="translate(101.64286,16.214286)">
- transform="translate(58.32595,48.778151)"
- d="M 51.012705 1.7575644 A 12.374369 12.374369 0 1 1 26.263968,1.7575644 A 12.374369 12.374369 0 1 1 51.012705 1.7575644 z"
- sodipodi:ry="12.374369"
- sodipodi:rx="12.374369"
- sodipodi:cy="1.7575644"
- sodipodi:cx="38.638336"
- style="opacity:1;color:#000000;fill:#46e837;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- transform="matrix(0.9170232,0,0,0.9170232,61.532035,48.923988)"
- d="M 51.012705 1.7575644 A 12.374369 12.374369 0 1 1 26.263968,1.7575644 A 12.374369 12.374369 0 1 1 51.012705 1.7575644 z"
- sodipodi:ry="12.374369"
- sodipodi:rx="12.374369"
- sodipodi:cy="1.7575644"
- sodipodi:cx="38.638336"
- style="opacity:1;color:#000000;fill:url(#radialGradient10092);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- transform="translate(201.64286,18.214286)"
- style="opacity:1;color:#000000;fill:url(#radialGradient10128);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.25654912;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:cx="38.638336"
- sodipodi:cy="1.7575644"
- sodipodi:rx="12.374369"
- sodipodi:ry="12.374369"
- d="M 51.012705 1.7575644 A 12.374369 12.374369 0 1 1 26.263968,1.7575644 A 12.374369 12.374369 0 1 1 51.012705 1.7575644 z"
- transform="matrix(1.5916608,0,0,1.5916608,-4.534839,45.738269)" />
- style="opacity:1;color:#000000;fill:url(#radialGradient10130);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:cx="38.638336"
- sodipodi:cy="1.7575644"
- sodipodi:rx="12.374369"
- sodipodi:ry="12.374369"
- d="M 51.012705 1.7575644 A 12.374369 12.374369 0 1 1 26.263968,1.7575644 A 12.374369 12.374369 0 1 1 51.012705 1.7575644 z"
- transform="translate(18.32595,46.778151)" />
- transform="translate(161.64286,16.214286)">
- transform="translate(58.32595,48.778151)"
- d="M 51.012705 1.7575644 A 12.374369 12.374369 0 1 1 26.263968,1.7575644 A 12.374369 12.374369 0 1 1 51.012705 1.7575644 z"
- sodipodi:ry="12.374369"
- sodipodi:rx="12.374369"
- sodipodi:cy="1.7575644"
- sodipodi:cx="38.638336"
- style="opacity:1;color:#000000;fill:#46e837;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- transform="matrix(0.9170232,0,0,0.9170232,61.532035,48.923988)"
- d="M 51.012705 1.7575644 A 12.374369 12.374369 0 1 1 26.263968,1.7575644 A 12.374369 12.374369 0 1 1 51.012705 1.7575644 z"
- sodipodi:ry="12.374369"
- sodipodi:rx="12.374369"
- sodipodi:cy="1.7575644"
- sodipodi:cx="38.638336"
- style="opacity:1;color:#000000;fill:url(#radialGradient10100);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- transform="translate(51.753807,188.92012)">
- style="opacity:1;color:#000000;fill:#d19f34;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- style="font-size:19.83609772px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- sodipodi:role="line">Test 1</tspan></text>
- transform="translate(125.52799,188.72465)">
- style="opacity:1;color:#000000;fill:#469837;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- style="font-size:19.83609772px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
- y="59.792866">Test 1</tspan></text>
- transform="translate(183.75381,188.92012)">
- style="opacity:1;color:#000000;fill:#d19f34;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- style="font-size:19.83609772px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
- xml:space="preserve"><tspan
- id="tspan22908">Test 2</tspan></text>
- transform="translate(177.52798,188.72465)">
- style="opacity:1;color:#000000;fill:#469837;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- style="font-size:19.83609772px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
- y="59.923622">Test 2</tspan></text>
- style="font-size:16.68435478px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
- y="41.062721">AND</tspan></text>
- style="font-size:16.68435478px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;font-family:Bitstream Vera Sans"
- y="41.054573">OR</tspan></text>
- style="font-size:16.68435478px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;font-family:Bitstream Vera Sans"
- y="41.054573">XOR</tspan></text>
- style="font-size:16.68435478px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;font-family:Bitstream Vera Sans"
- y="41.054573">SR</tspan></text>
- transform="matrix(0.7823622,0,0,-0.7804636,-14.93274,367.15766)"
- sodipodi:end="3.1415927"
- d="M 209.99999,218.57143 A 76.785713,76.785713 0 1 1 56.428566,218.57142 L 133.21428,218.57143 z"
- sodipodi:ry="76.785713"
- sodipodi:rx="76.785713"
- sodipodi:cy="218.57143"
- sodipodi:cx="133.21428"
- style="opacity:1;color:#000000;fill:#d19f34;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.55946827;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 47.131352,154.48975 L 52.879275,160.22814"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- d="M 89.21358,137.37676 L 89.21358,145.49207"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
- d="M 131.42332,154.60011 L 125.6754,160.3385"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
- style="font-size:10.49618816px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
- transform="scale(1.0008304,0.9991703)"><tspan
- y="152.96327">100</tspan></text>
- style="font-size:10.49618816px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;font-family:Bitstream Vera Sans"
- transform="scale(1.0008304,0.9991703)"><tspan
- y="131.48071">200</tspan></text>
- style="font-size:10.49618816px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;font-family:Bitstream Vera Sans"
- transform="scale(1.0008304,0.9991703)"><tspan
- y="152.66052">300</tspan></text>
- style="font-size:10.49618816px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;font-family:Bitstream Vera Sans"
- transform="scale(1.0008304,0.9991703)"><tspan
- y="199.39355">400</tspan></text>
- style="font-size:10.49618816px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;font-family:Bitstream Vera Sans"
- transform="scale(1.0008304,0.9991703)"><tspan
- y="199.64346">0</tspan></text>
- transform="matrix(0.7823622,0,0,-0.7804636,146.35389,367.13373)"
- sodipodi:end="3.1415927"
- d="M 209.99999,218.57143 A 76.785713,76.785713 0 1 1 56.428566,218.57142 L 133.21428,218.57143 z"
- sodipodi:ry="76.785713"
- sodipodi:rx="76.785713"
- sodipodi:cy="218.57143"
- sodipodi:cx="133.21428"
- style="opacity:1;color:#000000;fill:#d19f34;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.55946827;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 208.41798,154.46582 L 214.1659,160.20421"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
- d="M 250.50021,137.35283 L 250.50021,145.46814"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
- d="M 292.70994,154.57618 L 286.96202,160.31457"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
- style="font-size:10.49618816px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;font-family:Bitstream Vera Sans"
- transform="scale(1.0008304,0.9991703)"><tspan
- y="152.93927">100</tspan></text>
- style="font-size:10.49618816px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;font-family:Bitstream Vera Sans"
- transform="scale(1.0008304,0.9991703)"><tspan
- y="131.45671">200</tspan></text>
- style="font-size:10.49618816px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;font-family:Bitstream Vera Sans"
- transform="scale(1.0008304,0.9991703)"><tspan
- y="152.63652">300</tspan></text>
- style="font-size:10.49618816px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;font-family:Bitstream Vera Sans"
- transform="scale(1.0008304,0.9991703)"><tspan
- y="199.36955">400</tspan></text>
- style="font-size:10.49618816px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;font-family:Bitstream Vera Sans"
- transform="scale(1.0008304,0.9991703)"><tspan
- y="199.61946">0</tspan></text>
- style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.99999988;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 39.875,192.09375 L 36.09375,194.34375 L 32.46875,196.5 L 36.25,198.78125 L 39.84375,200.9375 L 39.84375,197.53125 L 88.15625,197.53125 L 89.15625,197.53125 L 89.15625,195.53125 L 88.15625,195.53125 L 39.84375,195.53125 L 39.875,192.09375 z "
- id="counter1_rotating" />
- style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.99999988;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- d="M 201.1377,192.09375 L 197.35645,194.34375 L 193.73145,196.5 L 197.5127,198.78125 L 201.10645,200.9375 L 201.10645,197.53125 L 249.41895,197.53125 L 250.41895,197.53125 L 250.41895,195.53125 L 249.41895,195.53125 L 201.10645,195.53125 L 201.1377,192.09375 z "
- id="counter2_rotating" />
- style="opacity:1;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:cx="91.923882"
- sodipodi:cy="199.42668"
- sodipodi:rx="4.9244938"
- sodipodi:ry="4.8613591"
- d="M 96.848375 199.42668 A 4.9244938 4.8613591 0 1 1 86.999388,199.42668 A 4.9244938 4.8613591 0 1 1 96.848375 199.42668 z"
- transform="matrix(0.5324675,0,0,0.5324675,40.296231,90.33426)" />
- style="opacity:1;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:cx="91.923882"
- sodipodi:cy="199.42668"
- sodipodi:rx="4.9244938"
- sodipodi:ry="4.8613591"
- d="M 96.848375 199.42668 A 4.9244938 4.8613591 0 1 1 86.999388,199.42668 A 4.9244938 4.8613591 0 1 1 96.848375 199.42668 z"
- transform="matrix(0.5324675,0,0,0.5324675,201.57135,90.271137)" />
--- a/tests/linux/test_svgui/supervisor@svgui/gui.xml Wed Aug 12 11:40:26 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<Interface xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="def_xsd.xsd" id="1" name="Interface" background_id="fond">
- <Button toggle="true" selected_id="test1_on" id="2" name="test1" background_id="test1_off"/>
- <Button toggle="true" selected_id="test2_on" id="3" name="test2" background_id="test2_off"/>
- <Button toggle="true" selected_id="LED1_on" id="4" name="LED1" enable="false" background_id="LED1_off"/>
- <Button toggle="true" selected_id="LED2_on" id="5" name="LED2" enable="false" background_id="LED2_off"/>
- <Button toggle="true" selected_id="LED3_on" id="6" name="LED3" enable="false" background_id="LED3_off"/>
- <Button toggle="true" selected_id="LED4_on" id="7" name="LED4" enable="false" background_id="LED4_off"/>
- <RotatingCtrl rotating_id="counter1_rotating" center_id="counter1_center" min_angle="-180" show_center="true" max_angle="0" id="8" name="counter1" enable="false" background_id="counter1_back"/>
- <RotatingCtrl rotating_id="counter2_rotating" center_id="counter2_center" min_angle="-180" show_center="true" max_angle="0" id="9" name="counter2" enable="false" background_id="counter2_back"/>