runtime/PLCObject.py
changeset 921 a8db48ec2c31
parent 917 401e44bae7c0
child 956 c838c50f8946
equal deleted inserted replaced
920:1499a4d225db 921:a8db48ec2c31
    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()