Beremiz_service.py
changeset 1439 a68cd4253259
parent 1438 19ebe96b41c0
child 1446 4963e3816641
equal deleted inserted replaced
1438:19ebe96b41c0 1439:a68cd4253259
    34            -p        - port number default:3000
    34            -p        - port number default:3000
    35            -h        - print this help text and quit
    35            -h        - print this help text and quit
    36            -a        - autostart PLC (0:disable 1:enable) (default:0)
    36            -a        - autostart PLC (0:disable 1:enable) (default:0)
    37            -x        - enable/disable wxTaskbarIcon (0:disable 1:enable) (default:1)
    37            -x        - enable/disable wxTaskbarIcon (0:disable 1:enable) (default:1)
    38            -t        - enable/disable Twisted web interface (0:disable 1:enable) (default:1)
    38            -t        - enable/disable Twisted web interface (0:disable 1:enable) (default:1)
       
    39            -w        - web server port or "off" (default:8009)
       
    40            -c        - WAMP client config file or "off" (default:wampconf.json)
    39            -e        - python extension (absolute path .py)
    41            -e        - python extension (absolute path .py)
    40 
    42 
    41            working_dir - directory where are stored PLC files
    43            working_dir - directory where are stored PLC files
    42 """%sys.argv[0]
    44 """%sys.argv[0]
    43 
    45 
    44 try:
    46 try:
    45     opts, argv = getopt.getopt(sys.argv[1:], "i:p:n:x:t:a:e:h")
    47     opts, argv = getopt.getopt(sys.argv[1:], "i:p:n:x:t:a:w:c:e:h")
    46 except getopt.GetoptError, err:
    48 except getopt.GetoptError, err:
    47     # print help information and exit:
    49     # print help information and exit:
    48     print str(err) # will print something like "option -a not recognized"
    50     print str(err) # will print something like "option -a not recognized"
    49     usage()
    51     usage()
    50     sys.exit(2)
    52     sys.exit(2)
    51 
    53 
    52 # default values
    54 # default values
    53 given_ip = None
    55 given_ip = None
    54 port = 3000
    56 port = 3000
       
    57 webport = 8009
       
    58 wampconf = "wampconf.json"
    55 servicename = None
    59 servicename = None
    56 autostart = False
    60 autostart = False
    57 enablewx = True
    61 enablewx = True
    58 havewx = False
    62 havewx = False
    59 enabletwisted = True
    63 enabletwisted = True
    80         enablewx = int(a)
    84         enablewx = int(a)
    81     elif o == "-t":
    85     elif o == "-t":
    82         enabletwisted = int(a)
    86         enabletwisted = int(a)
    83     elif o == "-a":
    87     elif o == "-a":
    84         autostart = int(a)
    88         autostart = int(a)
       
    89     elif o == "-w":
       
    90         webport = None if a == "off" else int(a)
       
    91     elif o == "-c":
       
    92         wampconf = None if a == "off" else a
    85     elif o == "-e":
    93     elif o == "-e":
    86         extensions.append(a)
    94         extensions.append(a)
    87     else:
    95     else:
    88         usage()
    96         usage()
    89         sys.exit()
    97         sys.exit()
   431 if havetwisted:
   439 if havetwisted:
   432 
   440 
   433     if havewx:
   441     if havewx:
   434         reactor.registerWxApp(app)
   442         reactor.registerWxApp(app)
   435 
   443 
   436     # TODO add command line switch
   444     if webport is not None :
   437     try:
   445         try:
   438         import runtime.NevowServer as NS
   446             import runtime.NevowServer as NS
   439         website = NS.RegisterWebsite(reactor)
   447             website = NS.RegisterWebsite(webport)
   440         pyruntimevars["website"] = website
   448             pyruntimevars["website"] = website
   441         statuschange.append(NS.website_statuslistener_factory(website))
   449             statuschange.append(NS.website_statuslistener_factory(website))
   442     except:
   450         except Exception, e:
   443         print "Nevow Web service failed."
   451             print "Nevow Web service failed.", e
   444 
   452 
       
   453     if wampconf is not None :
       
   454         try:
       
   455             import runtime.WampClient as WC
       
   456             WC.RegisterWampClient(wampconf)
       
   457             pyruntimevars["wampsession"] = WC.GetSession
       
   458             registerserverto.append(WC.SetServer)
       
   459         except Exception, e:
       
   460             print "WAMP client startup failed.", e
   445 
   461 
   446 if havewx:
   462 if havewx:
   447     from threading import Semaphore
   463     from threading import Semaphore
   448     wx_eval_lock = Semaphore(0)
   464     wx_eval_lock = Semaphore(0)
   449     main_thread = currentThread()
   465     main_thread = currentThread()