95 return int(self._GetLogCount(level)) |
95 return int(self._GetLogCount(level)) |
96 elif self._loading_error is not None and level==0: |
96 elif self._loading_error is not None and level==0: |
97 return 1; |
97 return 1; |
98 |
98 |
99 def GetLogMessage(self, level, msgid): |
99 def GetLogMessage(self, level, msgid): |
|
100 tick = ctypes.c_uint32() |
|
101 tv_sec = ctypes.c_uint32() |
|
102 tv_nsec = ctypes.c_uint32() |
100 if self._GetLogMessage is not None: |
103 if self._GetLogMessage is not None: |
101 maxsz = len(self._log_read_buffer)-1 |
104 maxsz = len(self._log_read_buffer)-1 |
102 sz = self._GetLogMessage(level, msgid, self._log_read_buffer, maxsz) |
105 sz = self._GetLogMessage(level, msgid, |
|
106 self._log_read_buffer, maxsz, |
|
107 ctypes.byref(tick), |
|
108 ctypes.byref(tv_sec), |
|
109 ctypes.byref(tv_nsec)) |
103 if sz and sz <= maxsz: |
110 if sz and sz <= maxsz: |
104 self._log_read_buffer[sz] = '\x00' |
111 self._log_read_buffer[sz] = '\x00' |
105 return self._log_read_buffer.value |
112 return self._log_read_buffer.value,tick.value,tv_sec.value,tv_nsec.value |
106 elif self._loading_error is not None and level==0: |
113 elif self._loading_error is not None and level==0: |
107 return self._loading_error |
114 return self._loading_error,0,0,0 |
108 return None |
115 return None |
109 |
116 |
110 def _GetMD5FileName(self): |
117 def _GetMD5FileName(self): |
111 return os.path.join(self.workingdir, "lasttransferedPLC.md5") |
118 return os.path.join(self.workingdir, "lasttransferedPLC.md5") |
112 |
119 |
183 self._LogMessage.argtypes = [ctypes.c_uint8, ctypes.c_char_p, ctypes.c_uint32] |
190 self._LogMessage.argtypes = [ctypes.c_uint8, ctypes.c_char_p, ctypes.c_uint32] |
184 |
191 |
185 self._log_read_buffer = ctypes.create_string_buffer(1<<14) #16K |
192 self._log_read_buffer = ctypes.create_string_buffer(1<<14) #16K |
186 self._GetLogMessage = self.PLClibraryHandle.GetLogMessage |
193 self._GetLogMessage = self.PLClibraryHandle.GetLogMessage |
187 self._GetLogMessage.restype = ctypes.c_uint32 |
194 self._GetLogMessage.restype = ctypes.c_uint32 |
188 self._GetLogMessage.argtypes = [ctypes.c_uint8, ctypes.c_uint32, ctypes.c_char_p, ctypes.c_uint32] |
195 self._GetLogMessage.argtypes = [ctypes.c_uint8, ctypes.c_uint32, ctypes.c_char_p, ctypes.c_uint32, ctypes.POINTER(ctypes.c_uint32), ctypes.POINTER(ctypes.c_uint32), ctypes.POINTER(ctypes.c_uint32)] |
189 |
196 |
190 self._loading_error = None |
197 self._loading_error = None |
191 return True |
198 return True |
192 except: |
199 except: |
193 self._loading_error = traceback.format_exc() |
200 self._loading_error = traceback.format_exc() |