1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# -*- coding: utf-8 -*-
import exceptions
class VimbaException(Exception):
"""
An exception for the AVT Vimba API. It contains a message
property which is a string indicating what went wrong.
:param errorCode: Error code to be used to look up error message.
"""
@property
def message(self):
return self._errorCodes[self.errorCode]
@property
def errorCode(self):
return self._errorCode
_errorCodes = { # Vimba C API specific errors
0: 'No error.',
-1: 'Unexpected fault in VimbaC or driver.',
-2: 'VmbStartup() was not called before the current command.',
-3: 'The designated instance (camera, feature etc.) cannot be found.',
-4: 'The given handle is not valid, ensure device open.',
-5: 'Device was not opened for usage.',
-6: 'Operation is invalid with the current access mode.',
-7: 'One of the parameters was invalid (usually an illegal pointer).',
-8: 'The given struct size is not valid for this version of the API.',
-9: 'More data was returned in a string/list than space was provided.',
-10: 'The feature type for this access function was wrong.',
-11: 'The value was not valid; either out of bounds or not an increment of the minimum.',
-12: 'Timeout during wait.',
-13: 'Other error.',
-14: 'Resources not available (e.g. memory).',
-15: 'Call is invalid in the current context (e.g. callback).',
-16: 'No transport layers were found.',
-17: 'API feature is not implemented.',
-18: 'API feature is not supported.',
-19: 'A multiple registers read or write was partially completed.',
# Custom errors
-50: 'Could not find the specified camera.',
-51: 'Not enough memory to assign frame buffer.',
-52: 'Invalid input.',
-53: 'Could not find the specified feature.',
-54: 'Could not find the specified interface.',
# Miscellaneous errors
-1000: 'Oops, unknown internal error code!',
-1001: 'Oops, this VimbaFeature function is not yet implemented in pymba!'}
def __init__(self, errorCode):
# if error code does not match expected codes then assign invalid code
if errorCode in self._errorCodes:
self._errorCode = errorCode
else:
self._errorCode = -1000
|