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: |