ProjectController.py
changeset 2245 fe3394697b02
parent 2244 42566291b9bc
parent 2224 ebd83ec387f9
child 2248 d9353e440887
equal deleted inserted replaced
2244:42566291b9bc 2245:fe3394697b02
  1352     def UpdatePLCLog(self, log_count):
  1352     def UpdatePLCLog(self, log_count):
  1353         if log_count:
  1353         if log_count:
  1354             if self.AppFrame is not None:
  1354             if self.AppFrame is not None:
  1355                 self.AppFrame.LogViewer.SetLogCounters(log_count)
  1355                 self.AppFrame.LogViewer.SetLogCounters(log_count)
  1356 
  1356 
       
  1357     DefaultMethods = {
       
  1358         "_Run": False,
       
  1359         "_Stop": False,
       
  1360         "_Transfer": False,
       
  1361         "_Connect": True,
       
  1362         "_Disconnect": False
       
  1363     }
       
  1364 
       
  1365     MethodsFromStatus = {
       
  1366         "Started":      {"_Stop": True,
       
  1367                          "_Transfer": True,
       
  1368                          "_Connect": False,
       
  1369                          "_Disconnect": True},
       
  1370         "Stopped":      {"_Run": True,
       
  1371                          "_Transfer": True,
       
  1372                          "_Connect": False,
       
  1373                          "_Disconnect": True},
       
  1374         "Empty":        {"_Transfer": True,
       
  1375                          "_Connect": False,
       
  1376                          "_Disconnect": True},
       
  1377         "Broken":       {"_Connect": False,
       
  1378                          "_Disconnect": True},
       
  1379         "Disconnected": {},
       
  1380     }
       
  1381 
  1357     def UpdateMethodsFromPLCStatus(self):
  1382     def UpdateMethodsFromPLCStatus(self):
  1358         updated = False
  1383         updated = False
  1359         status = None
  1384         status = None
  1360         if self._connector is not None:
  1385         if self._connector is not None:
  1361             PLCstatus = self._connector.GetPLCstatus()
  1386             PLCstatus = self._connector.GetPLCstatus()
  1364                 self.UpdatePLCLog(log_count)
  1389                 self.UpdatePLCLog(log_count)
  1365         if status is None:
  1390         if status is None:
  1366             self._SetConnector(None, False)
  1391             self._SetConnector(None, False)
  1367             status = "Disconnected"
  1392             status = "Disconnected"
  1368         if self.previous_plcstate != status:
  1393         if self.previous_plcstate != status:
  1369             for args in {
  1394             allmethods = self.DefaultMethods.copy()
  1370                     "Started":      [("_Run", False),
  1395             allmethods.update(
  1371                                      ("_Stop", True)],
  1396                 self.MethodsFromStatus.get(status, {}))
  1372                     "Stopped":      [("_Run", True),
  1397             for method, active in allmethods.items():
  1373                                      ("_Stop", False)],
  1398                 self.ShowMethod(method,active)
  1374                     "Empty":        [("_Run", False),
       
  1375                                      ("_Stop", False)],
       
  1376                     "Broken":       [],
       
  1377                     "Disconnected": [("_Run", False),
       
  1378                                      ("_Stop", False),
       
  1379                                      ("_Transfer", False),
       
  1380                                      ("_Connect", True),
       
  1381                                      ("_Disconnect", False)],
       
  1382             }.get(status, []):
       
  1383                 self.ShowMethod(*args)
       
  1384             self.previous_plcstate = status
  1399             self.previous_plcstate = status
  1385             if self.AppFrame is not None:
  1400             if self.AppFrame is not None:
  1386                 updated = True
  1401                 updated = True
  1387                 self.AppFrame.RefreshStatusToolBar()
  1402                 self.AppFrame.RefreshStatusToolBar()
  1388                 if status == "Disconnected":
  1403                 if status == "Disconnected":
  1713         # Did connection success ?
  1728         # Did connection success ?
  1714         if self._connector is None:
  1729         if self._connector is None:
  1715             # Oups.
  1730             # Oups.
  1716             self.logger.write_error(_("Connection failed to %s!\n") % uri)
  1731             self.logger.write_error(_("Connection failed to %s!\n") % uri)
  1717         else:
  1732         else:
  1718             self.ShowMethod("_Connect", False)
       
  1719             self.ShowMethod("_Disconnect", True)
       
  1720             self.ShowMethod("_Transfer", True)
       
  1721 
       
  1722             self.CompareLocalAndRemotePLC()
  1733             self.CompareLocalAndRemotePLC()
  1723 
  1734 
  1724             # Init with actual PLC status and print it
  1735             # Init with actual PLC status and print it
  1725             self.UpdateMethodsFromPLCStatus()
  1736             self.UpdateMethodsFromPLCStatus()
  1726             if self.previous_plcstate in ["Started", "Stopped"]:
  1737             if self.previous_plcstate in ["Started", "Stopped"]: