def _find_error_str(self): """Get an error string from the Alpao SDK error stack. Returns ------- A string. Will be empty if there was no error on the stack. """ ## asdkGetLastError should write a null-terminated string but ## doesn't seem like it (at least CannotOpenCfg does not ends in ## null) so we empty the buffer ourselves before using it. Note ## that even when there are no errors, we need to empty the buffer ## because the buffer has the message 'No error in stack'. ## ## TODO: report this upstream to Alpao and clean our code. self._err_msg[0:self._err_msg_len] = b'\x00' * self._err_msg_len err = ctypes.pointer(asdk.UInt(0)) status = asdk.GetLastError(err, self._err_msg, self._err_msg_len) if status == asdk.SUCCESS: msg = self._err_msg.value if len(msg) > self._err_msg_len: msg = msg + "..." msg += "(error %i)" % (err.contents.value) return msg else: return ""
def _find_error_str(self) -> str: """Get an error string from the Alpao SDK error stack. Returns ------- A string. Will be empty if there was no error on the stack. """ err_msg_buffer_len = 64 err_msg_buffer = ctypes.create_string_buffer(err_msg_buffer_len) err = ctypes.pointer(asdk.UInt(0)) status = asdk.GetLastError(err, err_msg_buffer, err_msg_buffer_len) if status == asdk.SUCCESS: msg = err_msg_buffer.value if len(msg) > err_msg_buffer_len: msg = msg + b"..." msg += b" (error code %i)" % (err.contents.value) return msg.decode() else: return ""