tests/svghmi/py_ext_0@py_ext/pyfile.xml
branchsvghmi
changeset 3036 4930455428df
parent 3034 793ce2117258
child 3038 92101729f7b7
equal deleted inserted replaced
3035:d1fc8c55c1d3 3036:4930455428df
     1 <?xml version='1.0' encoding='utf-8'?>
     1 <?xml version='1.0' encoding='utf-8'?>
     2 <PyFile xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     2 <PyFile xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     3   <variables>
     3   <variables>
     4     <variable name="SomePLCglobal" type="HMI_STRING" onchange="MyOnChangeFunc"/>
       
     5     <variable name="AlarmNotify" type="HMI_INT"/>
     4     <variable name="AlarmNotify" type="HMI_INT"/>
       
     5     <variable name="SendAlarm" type="HMI_BOOL" onchange="TriggerAlarm"/>
       
     6     <variable name="AlarmText" type="HMI_STRING" initial="'POS'"/>
       
     7     <variable name="AlarmStatus" type="HMI_STRING" initial="'alarm'"/>
     6   </variables>
     8   </variables>
     7   <globals>
     9   <globals>
     8     <xhtml:p><![CDATA[
    10     <xhtml:p><![CDATA[
     9 from twisted.web.resource import Resource
    11 from twisted.web.resource import Resource
    10 import json
    12 import json, time, random
       
    13 
       
    14 Alarms = []
       
    15 
       
    16 def TriggerAlarm(changed_var_name):
       
    17     global Alarms
       
    18     if(getattr(PLCGlobals, changed_var_name)):
       
    19         Alarms.append((time.time(), PLCGlobals.AlarmText, PLCGlobals.AlarmStatus))
       
    20         PLCGlobals.AlarmNotify = random.randint(0, 4294967296)
    11 
    21 
    12 class AlarmJsonResource(Resource):
    22 class AlarmJsonResource(Resource):
    13     def render_GET(self, request):
    23     def render_GET(self, request):
    14         return ''
    24         return ''
    15 
    25 
    16     def render_POST(self, request):
    26     def render_POST(self, request):
    17         newdata = request.content.getvalue()
    27         newstr = request.content.getvalue()
       
    28         newdata = json.loads(newstr)
    18         print newdata
    29         print newdata
    19         print json.loads(newdata)
    30         vars = newdata[u'vars']
    20         selected_alarms = [
    31         args = newdata[u'args']
    21             {"name":"three", "sides":3, "textstyle":"alarm"},
    32         visible = newdata[u'visible']
    22             {"name":"four", "sides":4, "textstyle":"ack"},
    33         svars = (vars + [0,0])[:3]
    23             {"name":"five", "sides":5, "textstyle":"active"},
    34         range_feedback = svars[1]
    24             {"name":"six", "sides":6, "textstyle":"disabled"},
    35         slider_position = svars[2]
    25         ]
    36         answer = self.renderTable(range_feedback, slider_position, visible, *(args+svars[3:]))
    26         return json.dumps(selected_alarms)
    37         janswer = json.dumps(answer)
       
    38         print janswer
       
    39         return janswer
    27 
    40 
       
    41     def renderTable(self, old_range, old_position, visible, *options):
       
    42         new_range = len(Alarms)
       
    43         delta = new_range - visible
       
    44         new_position = 0 if delta <= 0 else delta if old_position > delta else old_position
       
    45         new_visible = new_range if delta <= 0 else visible
       
    46         
       
    47         visible_alarms = []
       
    48         for ts, text, status in Alarms[new_position:new_position + new_visible]:
       
    49             visible_alarms.append({
       
    50                 "time": time.ctime(ts),
       
    51                 "text": text, # TODO translate text
       
    52                 "status": status
       
    53             })
    28 
    54 
    29 def MyOnChangeFunc(changed_var_name):
    55         return new_range, new_position, visible_alarms
    30     print changed_var_name + ": " + getattr(PLCGlobals, changed_var_name)
    56 
    31 
    57 
    32 ]]></xhtml:p>
    58 ]]></xhtml:p>
    33   </globals>
    59   </globals>
    34   <init>
    60   <init>
    35     <xhtml:p><![CDATA[
    61     <xhtml:p><![CDATA[