コード例 #1
0
  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 ""
コード例 #2
0
ファイル: alpao.py プロジェクト: ARCFaria/microscope
    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 ""