zaber-motion 7.10.0__py3-none-win32.whl → 7.12.0__py3-none-win32.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- zaber_motion/__init__.py +2 -0
- zaber_motion/ascii/all_axes.py +1 -1
- zaber_motion/ascii/axis.py +5 -5
- zaber_motion/ascii/axis_group.py +1 -1
- zaber_motion/ascii/axis_settings.py +5 -5
- zaber_motion/ascii/connection.py +1 -1
- zaber_motion/ascii/device.py +11 -11
- zaber_motion/ascii/device_io.py +1 -1
- zaber_motion/ascii/device_settings.py +1 -1
- zaber_motion/ascii/lockstep.py +2 -2
- zaber_motion/ascii/oscilloscope.py +1 -1
- zaber_motion/ascii/oscilloscope_data.py +1 -1
- zaber_motion/ascii/pvt.py +1 -1
- zaber_motion/ascii/pvt_buffer.py +43 -2
- zaber_motion/ascii/pvt_io.py +2 -2
- zaber_motion/ascii/pvt_sequence.py +153 -5
- zaber_motion/ascii/servo_tuner.py +1 -1
- zaber_motion/ascii/storage.py +2 -2
- zaber_motion/ascii/stream.py +3 -3
- zaber_motion/ascii/stream_buffer.py +2 -2
- zaber_motion/ascii/stream_io.py +2 -2
- zaber_motion/ascii/streams.py +1 -1
- zaber_motion/ascii/transport.py +1 -1
- zaber_motion/ascii/trigger.py +2 -2
- zaber_motion/ascii/triggers.py +1 -1
- zaber_motion/ascii/warnings.py +2 -2
- zaber_motion/binary/connection.py +1 -1
- zaber_motion/binary/device.py +3 -3
- zaber_motion/binary/device_settings.py +1 -1
- zaber_motion/dto/__init__.py +1 -0
- zaber_motion/dto/device_db_source.py +66 -0
- zaber_motion/dto/exceptions/__init__.py +1 -0
- zaber_motion/dto/exceptions/device_db_failed_exception_data.py +24 -1
- zaber_motion/dto/exceptions/device_db_inner_error.py +85 -0
- zaber_motion/dto/requests/__init__.py +4 -0
- zaber_motion/dto/requests/pvt_buffer_get_sequence_data_request.py +79 -0
- zaber_motion/dto/requests/pvt_generate_velocities_and_times_request.py +96 -0
- zaber_motion/dto/requests/pvt_submit_sequence_data_request.py +93 -0
- zaber_motion/dto/requests/set_device_db_layered_sources_request.py +56 -0
- zaber_motion/dto/requests/set_device_db_source_request.py +6 -0
- zaber_motion/exceptions/__init__.py +1 -0
- zaber_motion/gcode/offline_translator.py +1 -1
- zaber_motion/gcode/translator.py +1 -1
- zaber_motion/library.py +18 -1
- zaber_motion/microscopy/autofocus.py +3 -3
- zaber_motion/microscopy/camera_trigger.py +2 -2
- zaber_motion/microscopy/filter_changer.py +1 -1
- zaber_motion/microscopy/illuminator.py +2 -2
- zaber_motion/microscopy/illuminator_channel.py +6 -6
- zaber_motion/microscopy/microscope.py +74 -24
- zaber_motion/microscopy/objective_changer.py +2 -2
- zaber_motion/microscopy/wdi_autofocus_provider.py +1 -1
- zaber_motion/product/process.py +6 -6
- zaber_motion/product/process_controller.py +1 -1
- zaber_motion/version.py +1 -1
- {zaber_motion-7.10.0.dist-info → zaber_motion-7.12.0.dist-info}/METADATA +1 -1
- {zaber_motion-7.10.0.dist-info → zaber_motion-7.12.0.dist-info}/RECORD +61 -55
- zaber_motion_bindings/zaber-motion-core-windows-386.dll +0 -0
- {zaber_motion-7.10.0.dist-info → zaber_motion-7.12.0.dist-info}/LICENSE.txt +0 -0
- {zaber_motion-7.10.0.dist-info → zaber_motion-7.12.0.dist-info}/WHEEL +0 -0
- {zaber_motion-7.10.0.dist-info → zaber_motion-7.12.0.dist-info}/top_level.txt +0 -0
zaber_motion/__init__.py
CHANGED
|
@@ -9,6 +9,7 @@ from .tools import Tools as Tools
|
|
|
9
9
|
from .unit_table import UnitTable as UnitTable
|
|
10
10
|
from .dto.axis_address import AxisAddress as AxisAddress
|
|
11
11
|
from .dto.channel_address import ChannelAddress as ChannelAddress
|
|
12
|
+
from .dto.device_db_source import DeviceDbSource as DeviceDbSource
|
|
12
13
|
from .dto.device_db_source_type import DeviceDbSourceType as DeviceDbSourceType
|
|
13
14
|
from .dto.firmware_version import FirmwareVersion as FirmwareVersion
|
|
14
15
|
from .dto.log_output_mode import LogOutputMode as LogOutputMode
|
|
@@ -83,6 +84,7 @@ from .dto.exceptions.command_failed_exception_data import CommandFailedException
|
|
|
83
84
|
from .dto.exceptions.command_too_long_exception_data import CommandTooLongExceptionData as CommandTooLongExceptionData
|
|
84
85
|
from .dto.exceptions.device_address_conflict_exception_data import DeviceAddressConflictExceptionData as DeviceAddressConflictExceptionData
|
|
85
86
|
from .dto.exceptions.device_db_failed_exception_data import DeviceDbFailedExceptionData as DeviceDbFailedExceptionData
|
|
87
|
+
from .dto.exceptions.device_db_inner_error import DeviceDbInnerError as DeviceDbInnerError
|
|
86
88
|
from .dto.exceptions.g_code_execution_exception_data import GCodeExecutionExceptionData as GCodeExecutionExceptionData
|
|
87
89
|
from .dto.exceptions.g_code_syntax_exception_data import GCodeSyntaxExceptionData as GCodeSyntaxExceptionData
|
|
88
90
|
from .dto.exceptions.invalid_packet_exception_data import InvalidPacketExceptionData as InvalidPacketExceptionData
|
zaber_motion/ascii/all_axes.py
CHANGED
zaber_motion/ascii/axis.py
CHANGED
|
@@ -112,11 +112,11 @@ class Axis:
|
|
|
112
112
|
return self.__retrieve_label()
|
|
113
113
|
|
|
114
114
|
def __init__(self, device: 'Device', axis_number: int):
|
|
115
|
-
self._device = device
|
|
116
|
-
self._axis_number = axis_number
|
|
117
|
-
self._settings = AxisSettings(self)
|
|
118
|
-
self._storage = AxisStorage(self)
|
|
119
|
-
self._warnings = Warnings(device, axis_number)
|
|
115
|
+
self._device: 'Device' = device
|
|
116
|
+
self._axis_number: int = axis_number
|
|
117
|
+
self._settings: AxisSettings = AxisSettings(self)
|
|
118
|
+
self._storage: AxisStorage = AxisStorage(self)
|
|
119
|
+
self._warnings: Warnings = Warnings(device, axis_number)
|
|
120
120
|
|
|
121
121
|
def home(
|
|
122
122
|
self,
|
zaber_motion/ascii/axis_group.py
CHANGED
|
@@ -20,7 +20,7 @@ class AxisSettings:
|
|
|
20
20
|
"""
|
|
21
21
|
|
|
22
22
|
def __init__(self, axis: 'Axis'):
|
|
23
|
-
self._axis = axis
|
|
23
|
+
self._axis: 'Axis' = axis
|
|
24
24
|
|
|
25
25
|
def get(
|
|
26
26
|
self,
|
|
@@ -669,7 +669,7 @@ class AxisSettings:
|
|
|
669
669
|
axis_settings=list(axis_settings),
|
|
670
670
|
)
|
|
671
671
|
response = call(
|
|
672
|
-
"device/
|
|
672
|
+
"device/get_many_axis_settings",
|
|
673
673
|
request,
|
|
674
674
|
dto.GetAxisSettingResults.from_binary)
|
|
675
675
|
return response.results
|
|
@@ -694,7 +694,7 @@ class AxisSettings:
|
|
|
694
694
|
axis_settings=list(axis_settings),
|
|
695
695
|
)
|
|
696
696
|
response = await call_async(
|
|
697
|
-
"device/
|
|
697
|
+
"device/get_many_axis_settings",
|
|
698
698
|
request,
|
|
699
699
|
dto.GetAxisSettingResults.from_binary)
|
|
700
700
|
return response.results
|
|
@@ -720,7 +720,7 @@ class AxisSettings:
|
|
|
720
720
|
axis_settings=list(axis_settings),
|
|
721
721
|
)
|
|
722
722
|
response = call(
|
|
723
|
-
"device/
|
|
723
|
+
"device/get_sync_axis_settings",
|
|
724
724
|
request,
|
|
725
725
|
dto.GetAxisSettingResults.from_binary)
|
|
726
726
|
return response.results
|
|
@@ -746,7 +746,7 @@ class AxisSettings:
|
|
|
746
746
|
axis_settings=list(axis_settings),
|
|
747
747
|
)
|
|
748
748
|
response = await call_async(
|
|
749
|
-
"device/
|
|
749
|
+
"device/get_sync_axis_settings",
|
|
750
750
|
request,
|
|
751
751
|
dto.GetAxisSettingResults.from_binary)
|
|
752
752
|
return response.results
|
zaber_motion/ascii/connection.py
CHANGED
zaber_motion/ascii/device.py
CHANGED
|
@@ -180,17 +180,17 @@ class Device:
|
|
|
180
180
|
return self._pvt
|
|
181
181
|
|
|
182
182
|
def __init__(self, connection: 'Connection', device_address: int):
|
|
183
|
-
self._connection = connection
|
|
184
|
-
self._device_address = device_address
|
|
185
|
-
self._settings = DeviceSettings(self)
|
|
186
|
-
self._storage = DeviceStorage(self)
|
|
187
|
-
self._io = DeviceIO(self)
|
|
188
|
-
self._all_axes = AllAxes(self)
|
|
189
|
-
self._warnings = Warnings(self, 0)
|
|
190
|
-
self._oscilloscope = Oscilloscope(self)
|
|
191
|
-
self._triggers = Triggers(self)
|
|
192
|
-
self._streams = Streams(self)
|
|
193
|
-
self._pvt = Pvt(self)
|
|
183
|
+
self._connection: 'Connection' = connection
|
|
184
|
+
self._device_address: int = device_address
|
|
185
|
+
self._settings: DeviceSettings = DeviceSettings(self)
|
|
186
|
+
self._storage: DeviceStorage = DeviceStorage(self)
|
|
187
|
+
self._io: DeviceIO = DeviceIO(self)
|
|
188
|
+
self._all_axes: AllAxes = AllAxes(self)
|
|
189
|
+
self._warnings: Warnings = Warnings(self, 0)
|
|
190
|
+
self._oscilloscope: Oscilloscope = Oscilloscope(self)
|
|
191
|
+
self._triggers: Triggers = Triggers(self)
|
|
192
|
+
self._streams: Streams = Streams(self)
|
|
193
|
+
self._pvt: Pvt = Pvt(self)
|
|
194
194
|
|
|
195
195
|
def identify(
|
|
196
196
|
self,
|
zaber_motion/ascii/device_io.py
CHANGED
zaber_motion/ascii/lockstep.py
CHANGED
|
@@ -32,8 +32,8 @@ class Lockstep:
|
|
|
32
32
|
return self._lockstep_group_id
|
|
33
33
|
|
|
34
34
|
def __init__(self, device: 'Device', lockstep_group_id: int):
|
|
35
|
-
self._device = device
|
|
36
|
-
self._lockstep_group_id = lockstep_group_id
|
|
35
|
+
self._device: 'Device' = device
|
|
36
|
+
self._lockstep_group_id: int = lockstep_group_id
|
|
37
37
|
|
|
38
38
|
def enable(
|
|
39
39
|
self,
|
zaber_motion/ascii/pvt.py
CHANGED
zaber_motion/ascii/pvt_buffer.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
|
|
2
2
|
# ============== DO NOT EDIT DIRECTLY ============== #
|
|
3
3
|
from typing import TYPE_CHECKING, List
|
|
4
|
+
from ..dto.ascii.pvt_sequence_data import PvtSequenceData
|
|
4
5
|
from ..dto import requests as dto
|
|
5
6
|
from ..call import call, call_async
|
|
6
7
|
|
|
@@ -29,8 +30,8 @@ class PvtBuffer:
|
|
|
29
30
|
return self._buffer_id
|
|
30
31
|
|
|
31
32
|
def __init__(self, device: 'Device', buffer_id: int):
|
|
32
|
-
self._device = device
|
|
33
|
-
self._buffer_id = buffer_id
|
|
33
|
+
self._device: 'Device' = device
|
|
34
|
+
self._buffer_id: int = buffer_id
|
|
34
35
|
|
|
35
36
|
def get_content(
|
|
36
37
|
self
|
|
@@ -74,6 +75,46 @@ class PvtBuffer:
|
|
|
74
75
|
dto.StreamBufferGetContentResponse.from_binary)
|
|
75
76
|
return response.buffer_lines
|
|
76
77
|
|
|
78
|
+
def retrieve_sequence_data(
|
|
79
|
+
self
|
|
80
|
+
) -> PvtSequenceData:
|
|
81
|
+
"""
|
|
82
|
+
Gets the buffer contents as a PvtSequenceData object.
|
|
83
|
+
|
|
84
|
+
Returns:
|
|
85
|
+
The PVT data loaded from the buffer.
|
|
86
|
+
"""
|
|
87
|
+
request = dto.PvtBufferGetSequenceDataRequest(
|
|
88
|
+
interface_id=self.device.connection.interface_id,
|
|
89
|
+
device=self.device.device_address,
|
|
90
|
+
buffer_id=self.buffer_id,
|
|
91
|
+
)
|
|
92
|
+
response = call(
|
|
93
|
+
"device/pvt_buffer_get_data",
|
|
94
|
+
request,
|
|
95
|
+
PvtSequenceData.from_binary)
|
|
96
|
+
return response
|
|
97
|
+
|
|
98
|
+
async def retrieve_sequence_data_async(
|
|
99
|
+
self
|
|
100
|
+
) -> PvtSequenceData:
|
|
101
|
+
"""
|
|
102
|
+
Gets the buffer contents as a PvtSequenceData object.
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
The PVT data loaded from the buffer.
|
|
106
|
+
"""
|
|
107
|
+
request = dto.PvtBufferGetSequenceDataRequest(
|
|
108
|
+
interface_id=self.device.connection.interface_id,
|
|
109
|
+
device=self.device.device_address,
|
|
110
|
+
buffer_id=self.buffer_id,
|
|
111
|
+
)
|
|
112
|
+
response = await call_async(
|
|
113
|
+
"device/pvt_buffer_get_data",
|
|
114
|
+
request,
|
|
115
|
+
PvtSequenceData.from_binary)
|
|
116
|
+
return response
|
|
117
|
+
|
|
77
118
|
def erase(
|
|
78
119
|
self
|
|
79
120
|
) -> None:
|
zaber_motion/ascii/pvt_io.py
CHANGED
|
@@ -66,9 +66,9 @@ class PvtSequence:
|
|
|
66
66
|
return self._io
|
|
67
67
|
|
|
68
68
|
def __init__(self, device: 'Device', pvt_id: int):
|
|
69
|
-
self._device = device
|
|
70
|
-
self._pvt_id = pvt_id
|
|
71
|
-
self._io = PvtIo(device, pvt_id)
|
|
69
|
+
self._device: 'Device' = device
|
|
70
|
+
self._pvt_id: int = pvt_id
|
|
71
|
+
self._io: PvtIo = PvtIo(device, pvt_id)
|
|
72
72
|
|
|
73
73
|
def setup_live_composite(
|
|
74
74
|
self,
|
|
@@ -525,6 +525,8 @@ class PvtSequence:
|
|
|
525
525
|
per axis, And the values arrays for each sequence must be equal in length to each other and also to the
|
|
526
526
|
times sequence.
|
|
527
527
|
|
|
528
|
+
Does not support native units.
|
|
529
|
+
|
|
528
530
|
Args:
|
|
529
531
|
positions: Positions for the axes to move through, relative to their home positions.
|
|
530
532
|
Each MeasurementSequence represents a sequence of positions along a particular dimension.
|
|
@@ -569,6 +571,8 @@ class PvtSequence:
|
|
|
569
571
|
per axis, And the values arrays for each sequence must be equal in length to each other and also to the
|
|
570
572
|
times sequence.
|
|
571
573
|
|
|
574
|
+
Does not support native units.
|
|
575
|
+
|
|
572
576
|
Args:
|
|
573
577
|
positions: Positions for the axes to move through, relative to their home positions.
|
|
574
578
|
Each MeasurementSequence represents a sequence of positions along a particular dimension.
|
|
@@ -610,6 +614,8 @@ class PvtSequence:
|
|
|
610
614
|
velocity measurement sequence per axis, and the values arrays for each sequence
|
|
611
615
|
must be equal in length to each other and also to the times sequence.
|
|
612
616
|
|
|
617
|
+
Does not support native units.
|
|
618
|
+
|
|
613
619
|
Args:
|
|
614
620
|
velocities: The sequence of velocities for each axis.
|
|
615
621
|
Each MeasurementSequence represents a sequence of velocities along particular dimension.
|
|
@@ -647,6 +653,8 @@ class PvtSequence:
|
|
|
647
653
|
velocity measurement sequence per axis, and the values arrays for each sequence
|
|
648
654
|
must be equal in length to each other and also to the times sequence.
|
|
649
655
|
|
|
656
|
+
Does not support native units.
|
|
657
|
+
|
|
650
658
|
Args:
|
|
651
659
|
velocities: The sequence of velocities for each axis.
|
|
652
660
|
Each MeasurementSequence represents a sequence of velocities along particular dimension.
|
|
@@ -670,6 +678,108 @@ class PvtSequence:
|
|
|
670
678
|
PvtSequenceData.from_binary)
|
|
671
679
|
return response
|
|
672
680
|
|
|
681
|
+
@staticmethod
|
|
682
|
+
def generate_velocities_and_times(
|
|
683
|
+
positions: List[MeasurementSequence],
|
|
684
|
+
target_speed: Measurement,
|
|
685
|
+
target_acceleration: Measurement,
|
|
686
|
+
resample_number: Optional[int] = None
|
|
687
|
+
) -> PvtSequenceData:
|
|
688
|
+
"""
|
|
689
|
+
Generates sequences of velocities and times for a sequence of positions.
|
|
690
|
+
This function fits a geometric spline (not-a-knot cubic for sequences of >3 points,
|
|
691
|
+
natural cubic for 3, and a straight line for 2) over the position sequence
|
|
692
|
+
and then calculates the velocity and time information by traversing it using a
|
|
693
|
+
trapezoidal motion profile.
|
|
694
|
+
|
|
695
|
+
This generation scheme attempts to keep speed and acceleration less than the
|
|
696
|
+
specified target values, but does not guarantee it. Generally speaking, a higher
|
|
697
|
+
resample number will bring the generated trajectory closer to respecting these
|
|
698
|
+
limits.
|
|
699
|
+
|
|
700
|
+
Note that consecutive duplicate points will be automatically removed as they
|
|
701
|
+
have no geometric significance without additional time information. Also note that
|
|
702
|
+
for multi-dimensional paths this function expects axes to be linear and orthogonal,
|
|
703
|
+
however for paths of a single dimension rotary units are accepted.
|
|
704
|
+
|
|
705
|
+
Does not support native units.
|
|
706
|
+
|
|
707
|
+
Args:
|
|
708
|
+
positions: Positions for the axes to move through, relative to their home positions.
|
|
709
|
+
target_speed: The target speed used to generate positions and times.
|
|
710
|
+
target_acceleration: The target acceleration used to generate positions and times.
|
|
711
|
+
resample_number: The number of points to resample the sequence by.
|
|
712
|
+
Leave undefined to use the specified points.
|
|
713
|
+
|
|
714
|
+
Returns:
|
|
715
|
+
Object containing the generated PVT sequence. Note that returned time sequence is always relative.
|
|
716
|
+
"""
|
|
717
|
+
if target_speed.value <= 0 or target_acceleration.value <= 0:
|
|
718
|
+
raise ValueError('Target speed and acceleration values must be greater than zero.')
|
|
719
|
+
|
|
720
|
+
request = dto.PvtGenerateVelocitiesAndTimesRequest(
|
|
721
|
+
positions=positions,
|
|
722
|
+
target_speed=target_speed,
|
|
723
|
+
target_acceleration=target_acceleration,
|
|
724
|
+
resample_number=resample_number,
|
|
725
|
+
)
|
|
726
|
+
response = call(
|
|
727
|
+
"device/pvt_generate_velocities_and_times",
|
|
728
|
+
request,
|
|
729
|
+
PvtSequenceData.from_binary)
|
|
730
|
+
return response
|
|
731
|
+
|
|
732
|
+
@staticmethod
|
|
733
|
+
async def generate_velocities_and_times_async(
|
|
734
|
+
positions: List[MeasurementSequence],
|
|
735
|
+
target_speed: Measurement,
|
|
736
|
+
target_acceleration: Measurement,
|
|
737
|
+
resample_number: Optional[int] = None
|
|
738
|
+
) -> PvtSequenceData:
|
|
739
|
+
"""
|
|
740
|
+
Generates sequences of velocities and times for a sequence of positions.
|
|
741
|
+
This function fits a geometric spline (not-a-knot cubic for sequences of >3 points,
|
|
742
|
+
natural cubic for 3, and a straight line for 2) over the position sequence
|
|
743
|
+
and then calculates the velocity and time information by traversing it using a
|
|
744
|
+
trapezoidal motion profile.
|
|
745
|
+
|
|
746
|
+
This generation scheme attempts to keep speed and acceleration less than the
|
|
747
|
+
specified target values, but does not guarantee it. Generally speaking, a higher
|
|
748
|
+
resample number will bring the generated trajectory closer to respecting these
|
|
749
|
+
limits.
|
|
750
|
+
|
|
751
|
+
Note that consecutive duplicate points will be automatically removed as they
|
|
752
|
+
have no geometric significance without additional time information. Also note that
|
|
753
|
+
for multi-dimensional paths this function expects axes to be linear and orthogonal,
|
|
754
|
+
however for paths of a single dimension rotary units are accepted.
|
|
755
|
+
|
|
756
|
+
Does not support native units.
|
|
757
|
+
|
|
758
|
+
Args:
|
|
759
|
+
positions: Positions for the axes to move through, relative to their home positions.
|
|
760
|
+
target_speed: The target speed used to generate positions and times.
|
|
761
|
+
target_acceleration: The target acceleration used to generate positions and times.
|
|
762
|
+
resample_number: The number of points to resample the sequence by.
|
|
763
|
+
Leave undefined to use the specified points.
|
|
764
|
+
|
|
765
|
+
Returns:
|
|
766
|
+
Object containing the generated PVT sequence. Note that returned time sequence is always relative.
|
|
767
|
+
"""
|
|
768
|
+
if target_speed.value <= 0 or target_acceleration.value <= 0:
|
|
769
|
+
raise ValueError('Target speed and acceleration values must be greater than zero.')
|
|
770
|
+
|
|
771
|
+
request = dto.PvtGenerateVelocitiesAndTimesRequest(
|
|
772
|
+
positions=positions,
|
|
773
|
+
target_speed=target_speed,
|
|
774
|
+
target_acceleration=target_acceleration,
|
|
775
|
+
resample_number=resample_number,
|
|
776
|
+
)
|
|
777
|
+
response = await call_async(
|
|
778
|
+
"device/pvt_generate_velocities_and_times",
|
|
779
|
+
request,
|
|
780
|
+
PvtSequenceData.from_binary)
|
|
781
|
+
return response
|
|
782
|
+
|
|
673
783
|
def wait_until_idle(
|
|
674
784
|
self,
|
|
675
785
|
throw_error_on_fault: bool = True
|
|
@@ -1144,11 +1254,12 @@ class PvtSequence:
|
|
|
1144
1254
|
|
|
1145
1255
|
Units must be wrapped in parens or square braces: ie. (µm/s), [µm/s].
|
|
1146
1256
|
Additionally, native units are the default if no units are specified.
|
|
1257
|
+
Time values default to milliseconds if no units are provided.
|
|
1147
1258
|
If no header is included, then column order is assumed to be "T,P1,V1,P2,V2,...".
|
|
1148
1259
|
In this case the number of columns must be odd.
|
|
1149
1260
|
|
|
1150
1261
|
Args:
|
|
1151
|
-
path: The path
|
|
1262
|
+
path: The path to the csv file to load.
|
|
1152
1263
|
|
|
1153
1264
|
Returns:
|
|
1154
1265
|
The PVT csv data loaded from the file.
|
|
@@ -1183,11 +1294,12 @@ class PvtSequence:
|
|
|
1183
1294
|
|
|
1184
1295
|
Units must be wrapped in parens or square braces: ie. (µm/s), [µm/s].
|
|
1185
1296
|
Additionally, native units are the default if no units are specified.
|
|
1297
|
+
Time values default to milliseconds if no units are provided.
|
|
1186
1298
|
If no header is included, then column order is assumed to be "T,P1,V1,P2,V2,...".
|
|
1187
1299
|
In this case the number of columns must be odd.
|
|
1188
1300
|
|
|
1189
1301
|
Args:
|
|
1190
|
-
path: The path
|
|
1302
|
+
path: The path to the csv file to load.
|
|
1191
1303
|
|
|
1192
1304
|
Returns:
|
|
1193
1305
|
The PVT csv data loaded from the file.
|
|
@@ -1201,6 +1313,42 @@ class PvtSequence:
|
|
|
1201
1313
|
PvtCsvData.from_binary)
|
|
1202
1314
|
return response
|
|
1203
1315
|
|
|
1316
|
+
def submit_sequence_data(
|
|
1317
|
+
self,
|
|
1318
|
+
sequence_data: PvtSequenceData
|
|
1319
|
+
) -> None:
|
|
1320
|
+
"""
|
|
1321
|
+
Writes the contents of a PvtSequenceData object to the sequence.
|
|
1322
|
+
|
|
1323
|
+
Args:
|
|
1324
|
+
sequence_data: The PVT sequence data to submit.
|
|
1325
|
+
"""
|
|
1326
|
+
request = dto.PvtSubmitSequenceDataRequest(
|
|
1327
|
+
interface_id=self.device.connection.interface_id,
|
|
1328
|
+
device=self.device.device_address,
|
|
1329
|
+
stream_id=self.pvt_id,
|
|
1330
|
+
sequence_data=sequence_data,
|
|
1331
|
+
)
|
|
1332
|
+
call("device/stream_pvt_submit_data", request)
|
|
1333
|
+
|
|
1334
|
+
async def submit_sequence_data_async(
|
|
1335
|
+
self,
|
|
1336
|
+
sequence_data: PvtSequenceData
|
|
1337
|
+
) -> None:
|
|
1338
|
+
"""
|
|
1339
|
+
Writes the contents of a PvtSequenceData object to the sequence.
|
|
1340
|
+
|
|
1341
|
+
Args:
|
|
1342
|
+
sequence_data: The PVT sequence data to submit.
|
|
1343
|
+
"""
|
|
1344
|
+
request = dto.PvtSubmitSequenceDataRequest(
|
|
1345
|
+
interface_id=self.device.connection.interface_id,
|
|
1346
|
+
device=self.device.device_address,
|
|
1347
|
+
stream_id=self.pvt_id,
|
|
1348
|
+
sequence_data=sequence_data,
|
|
1349
|
+
)
|
|
1350
|
+
await call_async("device/stream_pvt_submit_data", request)
|
|
1351
|
+
|
|
1204
1352
|
def set_digital_output(
|
|
1205
1353
|
self,
|
|
1206
1354
|
channel_number: int,
|
zaber_motion/ascii/storage.py
CHANGED
|
@@ -18,7 +18,7 @@ class AxisStorage:
|
|
|
18
18
|
"""
|
|
19
19
|
|
|
20
20
|
def __init__(self, axis: 'Axis'):
|
|
21
|
-
self._axis = axis
|
|
21
|
+
self._axis: 'Axis' = axis
|
|
22
22
|
|
|
23
23
|
def set_string(
|
|
24
24
|
self,
|
|
@@ -474,7 +474,7 @@ class DeviceStorage:
|
|
|
474
474
|
"""
|
|
475
475
|
|
|
476
476
|
def __init__(self, device: 'Device'):
|
|
477
|
-
self._device = device
|
|
477
|
+
self._device: 'Device' = device
|
|
478
478
|
|
|
479
479
|
def set_string(
|
|
480
480
|
self,
|
zaber_motion/ascii/stream.py
CHANGED
|
@@ -61,9 +61,9 @@ class Stream:
|
|
|
61
61
|
return self._io
|
|
62
62
|
|
|
63
63
|
def __init__(self, device: 'Device', stream_id: int):
|
|
64
|
-
self._device = device
|
|
65
|
-
self._stream_id = stream_id
|
|
66
|
-
self._io = StreamIo(device, stream_id)
|
|
64
|
+
self._device: 'Device' = device
|
|
65
|
+
self._stream_id: int = stream_id
|
|
66
|
+
self._io: StreamIo = StreamIo(device, stream_id)
|
|
67
67
|
|
|
68
68
|
def setup_live_composite(
|
|
69
69
|
self,
|
|
@@ -29,8 +29,8 @@ class StreamBuffer:
|
|
|
29
29
|
return self._buffer_id
|
|
30
30
|
|
|
31
31
|
def __init__(self, device: 'Device', buffer_id: int):
|
|
32
|
-
self._device = device
|
|
33
|
-
self._buffer_id = buffer_id
|
|
32
|
+
self._device: 'Device' = device
|
|
33
|
+
self._buffer_id: int = buffer_id
|
|
34
34
|
|
|
35
35
|
def get_content(
|
|
36
36
|
self
|
zaber_motion/ascii/stream_io.py
CHANGED
zaber_motion/ascii/streams.py
CHANGED
zaber_motion/ascii/transport.py
CHANGED
zaber_motion/ascii/trigger.py
CHANGED
|
@@ -38,8 +38,8 @@ class Trigger:
|
|
|
38
38
|
return self._trigger_number
|
|
39
39
|
|
|
40
40
|
def __init__(self, device: 'Device', trigger_number: int):
|
|
41
|
-
self._device = device
|
|
42
|
-
self._trigger_number = trigger_number
|
|
41
|
+
self._device: 'Device' = device
|
|
42
|
+
self._trigger_number: int = trigger_number
|
|
43
43
|
|
|
44
44
|
def enable(
|
|
45
45
|
self,
|
zaber_motion/ascii/triggers.py
CHANGED
zaber_motion/ascii/warnings.py
CHANGED
zaber_motion/binary/device.py
CHANGED
|
@@ -124,9 +124,9 @@ class Device:
|
|
|
124
124
|
return self.identity.device_type
|
|
125
125
|
|
|
126
126
|
def __init__(self, connection: 'Connection', device_address: int):
|
|
127
|
-
self._connection = connection
|
|
128
|
-
self._settings = DeviceSettings(self)
|
|
129
|
-
self._device_address = device_address
|
|
127
|
+
self._connection: 'Connection' = connection
|
|
128
|
+
self._settings: DeviceSettings = DeviceSettings(self)
|
|
129
|
+
self._device_address: int = device_address
|
|
130
130
|
|
|
131
131
|
def generic_command(
|
|
132
132
|
self,
|