Beremiz.py
changeset 9 bc29b3bf2a5a
parent 8 56bae4ff53c4
child 11 75ae893d5eed
equal deleted inserted replaced
8:56bae4ff53c4 9:bc29b3bf2a5a
    34 
    34 
    35 iec2cc_path = os.path.join(base_folder, "matiec", "iec2cc")
    35 iec2cc_path = os.path.join(base_folder, "matiec", "iec2cc")
    36 ieclib_path = os.path.join(base_folder, "matiec", "lib")
    36 ieclib_path = os.path.join(base_folder, "matiec", "lib")
    37 
    37 
    38 from PLCOpenEditor import PLCOpenEditor, ProjectDialog
    38 from PLCOpenEditor import PLCOpenEditor, ProjectDialog
       
    39 from TextViewer import *
       
    40 from plcopen.structures import IEC_KEYWORDS
    39 from PLCControler import PLCControler
    41 from PLCControler import PLCControler
    40 
    42 
    41 from networkedit import networkedit
    43 from networkedit import networkedit
    42 from nodelist import NodeList
    44 from nodelist import NodeList
    43 from nodemanager import NodeManager
    45 from nodemanager import NodeManager
   679             if not os.path.exists(self.TargetDir):
   681             if not os.path.exists(self.TargetDir):
   680                 os.mkdir(self.TargetDir)
   682                 os.mkdir(self.TargetDir)
   681             self.Log.flush()
   683             self.Log.flush()
   682             #sys.stdout = self.Log
   684             #sys.stdout = self.Log
   683             try:
   685             try:
   684                 self.Log.write("Building ST Program...\n")
   686                 self.Log.write("Generating IEC-61131 code...\n")
   685                 plc_file = os.path.join(self.TargetDir, "plc.st")
   687                 plc_file = os.path.join(self.TargetDir, "plc.st")
   686                 result = self.PLCManager.GenerateProgram(plc_file)
   688                 result = self.PLCManager.GenerateProgram(plc_file)
   687                 if not result:
   689                 if not result:
   688                     raise Exception, "ST/IL/SFC code generator returned %d"%result
   690                     raise Exception, "Error : ST/IL/SFC code generator returned %d"%result
   689                 self.Log.write("Compiling ST Program in to C Program...\n")
   691                 self.Log.write("Compiling ST Program in to C Program...\n")
   690                 status, result, err_result = self.LogCommand("%s %s -I %s %s"%(iec2cc_path, plc_file, ieclib_path, self.TargetDir))
   692                 status, result, err_result = self.LogCommand("%s %s -I %s %s"%(iec2cc_path, plc_file, ieclib_path, self.TargetDir))
   691                 if status:
   693                 if status:
   692                     raise Exception, "IEC2C compiler returned %d"%status
   694                     new_dialog = wx.Frame(None)
       
   695                     ST_viewer = TextViewer(new_dialog, None, None)
       
   696                     #ST_viewer.Enable(False)
       
   697                     ST_viewer.SetKeywords(IEC_KEYWORDS)
       
   698                     ST_viewer.SetText(file(plc_file).read())
       
   699                     new_dialog.Show()
       
   700                     raise Exception, "Error : IEC to C compiler returned %d"%status
   693                 self.Log.write("Extracting Located Variables...\n")
   701                 self.Log.write("Extracting Located Variables...\n")
   694                 location_file = open(os.path.join(self.TargetDir,"LOCATED_VARIABLES.h"))
   702                 location_file = open(os.path.join(self.TargetDir,"LOCATED_VARIABLES.h"))
   695                 locations = []
   703                 locations = []
   696                 lines = [line.strip() for line in location_file.readlines()]
   704                 lines = [line.strip() for line in location_file.readlines()]
   697                 for line in lines:
   705                 for line in lines: