zaber-motion 7.13.0__py3-none-win_amd64.whl → 7.15.0__py3-none-win_amd64.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 +103 -103
- zaber_motion/ascii/__init__.py +73 -73
- zaber_motion/ascii/all_axes.py +352 -352
- zaber_motion/ascii/axis.py +1673 -1673
- zaber_motion/ascii/axis_group.py +391 -391
- zaber_motion/ascii/axis_settings.py +752 -752
- zaber_motion/ascii/connection.py +1174 -1174
- zaber_motion/ascii/device.py +908 -908
- zaber_motion/ascii/device_io.py +1170 -1170
- zaber_motion/ascii/device_settings.py +735 -735
- zaber_motion/ascii/lockstep.py +1184 -1184
- zaber_motion/ascii/oscilloscope.py +635 -635
- zaber_motion/ascii/oscilloscope_data.py +240 -240
- zaber_motion/ascii/pvt.py +105 -105
- zaber_motion/ascii/pvt_buffer.py +146 -146
- zaber_motion/ascii/pvt_io.py +630 -630
- zaber_motion/ascii/pvt_sequence.py +1530 -1530
- zaber_motion/ascii/servo_tuner.py +637 -637
- zaber_motion/ascii/setting_constants.py +1755 -1755
- zaber_motion/ascii/storage.py +905 -905
- zaber_motion/ascii/stream.py +2182 -2182
- zaber_motion/ascii/stream_buffer.py +101 -101
- zaber_motion/ascii/stream_io.py +700 -700
- zaber_motion/ascii/streams.py +105 -105
- zaber_motion/ascii/transport.py +202 -202
- zaber_motion/ascii/trigger.py +886 -886
- zaber_motion/ascii/triggers.py +241 -241
- zaber_motion/ascii/warning_flags.py +178 -178
- zaber_motion/ascii/warnings.py +152 -152
- zaber_motion/async_utils.py +46 -46
- zaber_motion/binary/__init__.py +14 -14
- zaber_motion/binary/connection.py +648 -648
- zaber_motion/binary/device.py +924 -924
- zaber_motion/binary/device_settings.py +121 -121
- zaber_motion/bindings.py +50 -50
- zaber_motion/call.py +198 -198
- zaber_motion/convert_exception.py +138 -138
- zaber_motion/dto/__init__.py +11 -11
- zaber_motion/dto/ascii/__init__.py +46 -46
- zaber_motion/dto/ascii/alert_event.py +110 -110
- zaber_motion/dto/ascii/axis_identity.py +134 -134
- zaber_motion/dto/ascii/axis_type.py +14 -14
- zaber_motion/dto/ascii/can_set_state_axis_response.py +69 -69
- zaber_motion/dto/ascii/can_set_state_device_response.py +75 -75
- zaber_motion/dto/ascii/conversion_factor.py +81 -81
- zaber_motion/dto/ascii/device_identity.py +136 -136
- zaber_motion/dto/ascii/device_io_info.py +108 -108
- zaber_motion/dto/ascii/digital_output_action.py +13 -13
- zaber_motion/dto/ascii/get_axis_setting.py +64 -64
- zaber_motion/dto/ascii/get_axis_setting_result.py +81 -81
- zaber_motion/dto/ascii/get_setting.py +88 -88
- zaber_motion/dto/ascii/get_setting_result.py +87 -87
- zaber_motion/dto/ascii/io_port_label.py +84 -84
- zaber_motion/dto/ascii/io_port_type.py +14 -14
- zaber_motion/dto/ascii/lockstep_axes.py +108 -108
- zaber_motion/dto/ascii/measurement_sequence.py +73 -73
- zaber_motion/dto/ascii/message_type.py +14 -14
- zaber_motion/dto/ascii/optional_measurement_sequence.py +71 -71
- zaber_motion/dto/ascii/oscilloscope_capture_properties.py +116 -116
- zaber_motion/dto/ascii/oscilloscope_data_source.py +11 -11
- zaber_motion/dto/ascii/paramset_info.py +92 -92
- zaber_motion/dto/ascii/pid_tuning.py +125 -125
- zaber_motion/dto/ascii/pvt_axis_definition.py +70 -70
- zaber_motion/dto/ascii/pvt_axis_type.py +11 -11
- zaber_motion/dto/ascii/pvt_csv_data.py +75 -75
- zaber_motion/dto/ascii/pvt_mode.py +12 -12
- zaber_motion/dto/ascii/pvt_sequence_data.py +99 -99
- zaber_motion/dto/ascii/response.py +137 -137
- zaber_motion/dto/ascii/servo_tuning_param.py +66 -66
- zaber_motion/dto/ascii/servo_tuning_paramset.py +21 -21
- zaber_motion/dto/ascii/set_state_axis_response.py +75 -75
- zaber_motion/dto/ascii/set_state_device_response.py +80 -80
- zaber_motion/dto/ascii/simple_tuning.py +118 -118
- zaber_motion/dto/ascii/simple_tuning_param_definition.py +100 -100
- zaber_motion/dto/ascii/stream_axis_definition.py +70 -70
- zaber_motion/dto/ascii/stream_axis_type.py +11 -11
- zaber_motion/dto/ascii/stream_mode.py +13 -13
- zaber_motion/dto/ascii/trigger_action.py +12 -12
- zaber_motion/dto/ascii/trigger_condition.py +15 -15
- zaber_motion/dto/ascii/trigger_enabled_state.py +68 -68
- zaber_motion/dto/ascii/trigger_operation.py +12 -12
- zaber_motion/dto/ascii/trigger_state.py +114 -114
- zaber_motion/dto/ascii/unknown_response_event.py +137 -137
- zaber_motion/dto/axis_address.py +74 -74
- zaber_motion/dto/binary/__init__.py +11 -11
- zaber_motion/dto/binary/binary_settings.py +74 -74
- zaber_motion/dto/binary/command_code.py +106 -106
- zaber_motion/dto/binary/device_identity.py +156 -156
- zaber_motion/dto/binary/device_type.py +12 -12
- zaber_motion/dto/binary/error_code.py +101 -101
- zaber_motion/dto/binary/message.py +91 -91
- zaber_motion/dto/binary/reply_code.py +16 -16
- zaber_motion/dto/binary/reply_only_event.py +91 -91
- zaber_motion/dto/binary/unknown_response_event.py +91 -91
- zaber_motion/dto/channel_address.py +74 -74
- zaber_motion/dto/device_db_source.py +66 -66
- zaber_motion/dto/device_db_source_type.py +11 -11
- zaber_motion/dto/exceptions/__init__.py +24 -24
- zaber_motion/dto/exceptions/binary_command_failed_exception_data.py +57 -57
- zaber_motion/dto/exceptions/command_failed_exception_data.py +151 -151
- zaber_motion/dto/exceptions/command_too_long_exception_data.py +98 -98
- zaber_motion/dto/exceptions/device_address_conflict_exception_data.py +63 -63
- zaber_motion/dto/exceptions/device_db_failed_exception_data.py +74 -74
- zaber_motion/dto/exceptions/device_db_inner_error.py +85 -85
- zaber_motion/dto/exceptions/g_code_execution_exception_data.py +75 -75
- zaber_motion/dto/exceptions/g_code_syntax_exception_data.py +75 -75
- zaber_motion/dto/exceptions/invalid_packet_exception_data.py +63 -63
- zaber_motion/dto/exceptions/invalid_pvt_point.py +69 -69
- zaber_motion/dto/exceptions/invalid_response_exception_data.py +51 -51
- zaber_motion/dto/exceptions/movement_failed_exception_data.py +104 -104
- zaber_motion/dto/exceptions/movement_interrupted_exception_data.py +104 -104
- zaber_motion/dto/exceptions/operation_failed_exception_data.py +104 -104
- zaber_motion/dto/exceptions/pvt_execution_exception_data.py +86 -86
- zaber_motion/dto/exceptions/pvt_movement_failed_exception_data.py +69 -69
- zaber_motion/dto/exceptions/pvt_movement_interrupted_exception_data.py +69 -69
- zaber_motion/dto/exceptions/set_device_state_exception_data.py +176 -176
- zaber_motion/dto/exceptions/set_peripheral_state_exception_data.py +121 -121
- zaber_motion/dto/exceptions/stream_execution_exception_data.py +63 -63
- zaber_motion/dto/exceptions/stream_movement_failed_exception_data.py +69 -69
- zaber_motion/dto/exceptions/stream_movement_interrupted_exception_data.py +69 -69
- zaber_motion/dto/firmware_version.py +91 -91
- zaber_motion/dto/gcode/__init__.py +9 -9
- zaber_motion/dto/gcode/axis_definition.py +74 -74
- zaber_motion/dto/gcode/axis_mapping.py +69 -69
- zaber_motion/dto/gcode/axis_transformation.py +79 -79
- zaber_motion/dto/gcode/device_definition.py +99 -99
- zaber_motion/dto/gcode/translate_message.py +87 -87
- zaber_motion/dto/gcode/translate_result.py +79 -79
- zaber_motion/dto/gcode/translator_config.py +84 -84
- zaber_motion/dto/log_output_mode.py +13 -13
- zaber_motion/dto/measurement.py +67 -67
- zaber_motion/dto/microscopy/__init__.py +6 -6
- zaber_motion/dto/microscopy/autofocus_status.py +57 -57
- zaber_motion/dto/microscopy/microscope_config.py +159 -159
- zaber_motion/dto/microscopy/third_party_components.py +55 -55
- zaber_motion/dto/microscopy/wdi_autofocus_provider_status.py +57 -57
- zaber_motion/dto/named_parameter.py +64 -64
- zaber_motion/dto/product/__init__.py +5 -5
- zaber_motion/dto/product/process_controller_mode.py +13 -13
- zaber_motion/dto/product/process_controller_source.py +72 -72
- zaber_motion/dto/product/process_controller_source_sensor.py +11 -11
- zaber_motion/dto/requests/__init__.py +256 -254
- zaber_motion/dto/requests/alert_event_wrapper.py +82 -82
- zaber_motion/dto/requests/autofocus_focus_request.py +131 -131
- zaber_motion/dto/requests/autofocus_get_objective_params_request.py +121 -121
- zaber_motion/dto/requests/autofocus_get_objective_params_response.py +56 -56
- zaber_motion/dto/requests/autofocus_get_status_response.py +50 -50
- zaber_motion/dto/requests/autofocus_set_objective_params_request.py +141 -141
- zaber_motion/dto/requests/axes_empty_request.py +95 -95
- zaber_motion/dto/requests/axes_get_setting_request.py +121 -121
- zaber_motion/dto/requests/axes_move_request.py +114 -114
- zaber_motion/dto/requests/axis_empty_request.py +79 -79
- zaber_motion/dto/requests/axis_move_type.py +12 -12
- zaber_motion/dto/requests/axis_to_string_request.py +88 -88
- zaber_motion/dto/requests/binary_device_detect_request.py +56 -56
- zaber_motion/dto/requests/binary_device_detect_response.py +57 -57
- zaber_motion/dto/requests/binary_device_get_setting_request.py +89 -89
- zaber_motion/dto/requests/binary_device_home_request.py +88 -88
- zaber_motion/dto/requests/binary_device_move_request.py +111 -111
- zaber_motion/dto/requests/binary_device_set_setting_request.py +100 -100
- zaber_motion/dto/requests/binary_device_stop_request.py +88 -88
- zaber_motion/dto/requests/binary_generic_with_units_request.py +122 -122
- zaber_motion/dto/requests/binary_message_collection.py +56 -56
- zaber_motion/dto/requests/binary_reply_only_event_wrapper.py +82 -82
- zaber_motion/dto/requests/bool_response.py +43 -43
- zaber_motion/dto/requests/can_set_state_axis_response.py +60 -60
- zaber_motion/dto/requests/can_set_state_request.py +100 -100
- zaber_motion/dto/requests/channel_on.py +96 -84
- zaber_motion/dto/requests/channel_set_intensity.py +90 -90
- zaber_motion/dto/requests/check_version_request.py +54 -54
- zaber_motion/dto/requests/custom_interface_close_request.py +60 -60
- zaber_motion/dto/requests/custom_interface_open_response.py +51 -51
- zaber_motion/dto/requests/custom_interface_read_request.py +51 -51
- zaber_motion/dto/requests/custom_interface_write_request.py +60 -60
- zaber_motion/dto/requests/device_cancel_all_outputs_schedule_request.py +80 -80
- zaber_motion/dto/requests/device_cancel_output_schedule_request.py +84 -84
- zaber_motion/dto/requests/device_convert_setting_request.py +116 -116
- zaber_motion/dto/requests/device_detect_request.py +68 -68
- zaber_motion/dto/requests/device_detect_response.py +57 -57
- zaber_motion/dto/requests/device_empty_request.py +65 -65
- zaber_motion/dto/requests/device_get_all_analog_io_request.py +74 -74
- zaber_motion/dto/requests/device_get_all_analog_io_response.py +54 -54
- zaber_motion/dto/requests/device_get_all_digital_io_request.py +74 -74
- zaber_motion/dto/requests/device_get_all_digital_io_response.py +46 -46
- zaber_motion/dto/requests/device_get_analog_io_request.py +88 -88
- zaber_motion/dto/requests/device_get_digital_io_request.py +88 -88
- zaber_motion/dto/requests/device_get_setting_request.py +100 -100
- zaber_motion/dto/requests/device_get_storage_request.py +93 -93
- zaber_motion/dto/requests/device_get_warnings_request.py +84 -84
- zaber_motion/dto/requests/device_get_warnings_response.py +51 -51
- zaber_motion/dto/requests/device_home_request.py +84 -84
- zaber_motion/dto/requests/device_identify_request.py +77 -77
- zaber_motion/dto/requests/device_move_request.py +177 -177
- zaber_motion/dto/requests/device_move_sin_request.py +140 -140
- zaber_motion/dto/requests/device_multi_get_setting_request.py +118 -118
- zaber_motion/dto/requests/device_on_all_request.py +56 -56
- zaber_motion/dto/requests/device_on_all_response.py +57 -57
- zaber_motion/dto/requests/device_restore_request.py +84 -84
- zaber_motion/dto/requests/device_set_all_analog_outputs_request.py +82 -82
- zaber_motion/dto/requests/device_set_all_analog_outputs_schedule_request.py +121 -121
- zaber_motion/dto/requests/device_set_all_digital_outputs_request.py +83 -83
- zaber_motion/dto/requests/device_set_all_digital_outputs_schedule_request.py +122 -122
- zaber_motion/dto/requests/device_set_analog_output_request.py +90 -90
- zaber_motion/dto/requests/device_set_analog_output_schedule_request.py +124 -124
- zaber_motion/dto/requests/device_set_digital_output_request.py +91 -91
- zaber_motion/dto/requests/device_set_digital_output_schedule_request.py +125 -125
- zaber_motion/dto/requests/device_set_lowpass_filter_request.py +102 -102
- zaber_motion/dto/requests/device_set_setting_bool_request.py +93 -93
- zaber_motion/dto/requests/device_set_setting_int_request.py +102 -102
- zaber_motion/dto/requests/device_set_setting_request.py +111 -111
- zaber_motion/dto/requests/device_set_setting_str_request.py +97 -97
- zaber_motion/dto/requests/device_set_storage_bool_request.py +93 -93
- zaber_motion/dto/requests/device_set_storage_number_request.py +99 -99
- zaber_motion/dto/requests/device_set_storage_request.py +102 -102
- zaber_motion/dto/requests/device_set_unit_conversions_request.py +108 -108
- zaber_motion/dto/requests/device_stop_request.py +84 -84
- zaber_motion/dto/requests/device_storage_list_keys_request.py +88 -88
- zaber_motion/dto/requests/device_storage_request.py +88 -88
- zaber_motion/dto/requests/device_type.py +8 -8
- zaber_motion/dto/requests/device_wait_until_idle_request.py +84 -84
- zaber_motion/dto/requests/disconnected_event.py +101 -101
- zaber_motion/dto/requests/double_array_response.py +54 -54
- zaber_motion/dto/requests/double_response.py +48 -48
- zaber_motion/dto/requests/driver_enable_request.py +90 -90
- zaber_motion/dto/requests/empty_autofocus_request.py +107 -107
- zaber_motion/dto/requests/empty_request.py +38 -38
- zaber_motion/dto/requests/errors.py +68 -68
- zaber_motion/dto/requests/find_device_request.py +65 -65
- zaber_motion/dto/requests/find_device_response.py +51 -51
- zaber_motion/dto/requests/forget_devices_request.py +71 -71
- zaber_motion/dto/requests/gateway_event.py +45 -45
- zaber_motion/dto/requests/gateway_request.py +45 -45
- zaber_motion/dto/requests/gateway_response.py +69 -69
- zaber_motion/dto/requests/generic_binary_request.py +107 -107
- zaber_motion/dto/requests/generic_command_request.py +107 -107
- zaber_motion/dto/requests/generic_command_response_collection.py +56 -56
- zaber_motion/dto/requests/get_all_io_port_labels_response.py +56 -56
- zaber_motion/dto/requests/get_axis_setting_results.py +56 -56
- zaber_motion/dto/requests/get_io_port_label_request.py +91 -91
- zaber_motion/dto/requests/get_setting_results.py +56 -56
- zaber_motion/dto/requests/get_simple_tuning_param_definition_response.py +56 -56
- zaber_motion/dto/requests/int_64_response.py +51 -51
- zaber_motion/dto/requests/int_array_response.py +57 -57
- zaber_motion/dto/requests/int_request.py +51 -51
- zaber_motion/dto/requests/int_response.py +51 -51
- zaber_motion/dto/requests/interface_empty_request.py +51 -51
- zaber_motion/dto/requests/interface_type.py +11 -11
- zaber_motion/dto/requests/load_paramset.py +102 -102
- zaber_motion/dto/requests/lockstep_disable_request.py +84 -84
- zaber_motion/dto/requests/lockstep_empty_request.py +79 -79
- zaber_motion/dto/requests/lockstep_enable_request.py +99 -99
- zaber_motion/dto/requests/lockstep_get_axis_numbers_response.py +57 -57
- zaber_motion/dto/requests/lockstep_get_request.py +91 -91
- zaber_motion/dto/requests/lockstep_home_request.py +84 -84
- zaber_motion/dto/requests/lockstep_move_request.py +163 -163
- zaber_motion/dto/requests/lockstep_move_sin_request.py +140 -140
- zaber_motion/dto/requests/lockstep_set_request.py +116 -116
- zaber_motion/dto/requests/lockstep_stop_request.py +84 -84
- zaber_motion/dto/requests/lockstep_wait_until_idle_request.py +84 -84
- zaber_motion/dto/requests/microscope_config_response.py +50 -50
- zaber_motion/dto/requests/microscope_empty_request.py +65 -65
- zaber_motion/dto/requests/microscope_find_request.py +63 -63
- zaber_motion/dto/requests/microscope_init_request.py +70 -70
- zaber_motion/dto/requests/microscope_trigger_camera_request.py +107 -107
- zaber_motion/dto/requests/objective_changer_change_request.py +119 -119
- zaber_motion/dto/requests/objective_changer_create_response.py +79 -79
- zaber_motion/dto/requests/objective_changer_get_current_response.py +51 -51
- zaber_motion/dto/requests/objective_changer_request.py +93 -93
- zaber_motion/dto/requests/objective_changer_set_request.py +116 -116
- zaber_motion/dto/requests/open_binary_interface_request.py +100 -100
- zaber_motion/dto/requests/open_interface_request.py +159 -159
- zaber_motion/dto/requests/open_interface_response.py +51 -51
- zaber_motion/dto/requests/oscilloscope_add_io_channel_request.py +91 -91
- zaber_motion/dto/requests/oscilloscope_add_setting_channel_request.py +88 -88
- zaber_motion/dto/requests/oscilloscope_data_get_request.py +63 -63
- zaber_motion/dto/requests/oscilloscope_data_get_sample_time_request.py +77 -77
- zaber_motion/dto/requests/oscilloscope_data_get_samples_response.py +54 -54
- zaber_motion/dto/requests/oscilloscope_data_identifier.py +51 -51
- zaber_motion/dto/requests/oscilloscope_read_response.py +57 -57
- zaber_motion/dto/requests/oscilloscope_request.py +65 -65
- zaber_motion/dto/requests/oscilloscope_start_request.py +79 -79
- zaber_motion/dto/requests/prepare_command_request.py +108 -108
- zaber_motion/dto/requests/process_on.py +107 -107
- zaber_motion/dto/requests/pvt_buffer_get_sequence_data_request.py +79 -79
- zaber_motion/dto/requests/pvt_csv_request.py +59 -59
- zaber_motion/dto/requests/pvt_generate_positions_request.py +74 -74
- zaber_motion/dto/requests/pvt_generate_velocities_and_times_request.py +96 -96
- zaber_motion/dto/requests/pvt_generate_velocities_request.py +93 -93
- zaber_motion/dto/requests/pvt_load_csv_request.py +45 -45
- zaber_motion/dto/requests/pvt_point_request.py +145 -145
- zaber_motion/dto/requests/pvt_points_request.py +147 -147
- zaber_motion/dto/requests/pvt_save_csv_request.py +74 -74
- zaber_motion/dto/requests/pvt_submit_sequence_data_request.py +93 -93
- zaber_motion/dto/requests/renumber_request.py +79 -79
- zaber_motion/dto/requests/response_type.py +8 -8
- zaber_motion/dto/requests/servo_tuning_paramset_response.py +48 -48
- zaber_motion/dto/requests/servo_tuning_request.py +91 -91
- zaber_motion/dto/requests/set_device_db_layered_sources_request.py +56 -56
- zaber_motion/dto/requests/set_device_db_source_request.py +63 -63
- zaber_motion/dto/requests/set_interface_checksum_enabled_request.py +56 -56
- zaber_motion/dto/requests/set_interface_timeout_request.py +65 -65
- zaber_motion/dto/requests/set_internal_mode_request.py +43 -43
- zaber_motion/dto/requests/set_io_port_label_request.py +100 -100
- zaber_motion/dto/requests/set_log_output_request.py +57 -57
- zaber_motion/dto/requests/set_process_controller_source.py +93 -93
- zaber_motion/dto/requests/set_servo_tuning_pid_request.py +135 -135
- zaber_motion/dto/requests/set_servo_tuning_request.py +116 -116
- zaber_motion/dto/requests/set_simple_tuning.py +174 -174
- zaber_motion/dto/requests/set_state_request.py +93 -93
- zaber_motion/dto/requests/stream_arc_request.py +199 -199
- zaber_motion/dto/requests/stream_buffer_erase_request.py +84 -84
- zaber_motion/dto/requests/stream_buffer_get_content_request.py +84 -84
- zaber_motion/dto/requests/stream_buffer_get_content_response.py +51 -51
- zaber_motion/dto/requests/stream_buffer_list.py +70 -70
- zaber_motion/dto/requests/stream_call_request.py +112 -112
- zaber_motion/dto/requests/stream_cancel_all_outputs_schedule_request.py +99 -99
- zaber_motion/dto/requests/stream_cancel_output_schedule_request.py +103 -103
- zaber_motion/dto/requests/stream_circle_request.py +155 -155
- zaber_motion/dto/requests/stream_empty_request.py +84 -84
- zaber_motion/dto/requests/stream_generic_command_batch_request.py +99 -99
- zaber_motion/dto/requests/stream_generic_command_request.py +93 -93
- zaber_motion/dto/requests/stream_get_axes_response.py +75 -75
- zaber_motion/dto/requests/stream_get_max_centripetal_acceleration_request.py +96 -96
- zaber_motion/dto/requests/stream_get_max_speed_request.py +96 -96
- zaber_motion/dto/requests/stream_get_max_tangential_acceleration_request.py +96 -96
- zaber_motion/dto/requests/stream_line_request.py +135 -135
- zaber_motion/dto/requests/stream_mode_response.py +60 -60
- zaber_motion/dto/requests/stream_segment_type.py +8 -8
- zaber_motion/dto/requests/stream_set_all_analog_outputs_request.py +101 -101
- zaber_motion/dto/requests/stream_set_all_analog_outputs_schedule_request.py +140 -140
- zaber_motion/dto/requests/stream_set_all_digital_outputs_request.py +102 -102
- zaber_motion/dto/requests/stream_set_all_digital_outputs_schedule_request.py +141 -141
- zaber_motion/dto/requests/stream_set_analog_output_request.py +109 -109
- zaber_motion/dto/requests/stream_set_analog_output_schedule_request.py +143 -143
- zaber_motion/dto/requests/stream_set_digital_output_request.py +110 -110
- zaber_motion/dto/requests/stream_set_digital_output_schedule_request.py +144 -144
- zaber_motion/dto/requests/stream_set_hold_request.py +89 -89
- zaber_motion/dto/requests/stream_set_max_centripetal_acceleration_request.py +107 -107
- zaber_motion/dto/requests/stream_set_max_speed_request.py +107 -107
- zaber_motion/dto/requests/stream_set_max_tangential_acceleration_request.py +107 -107
- zaber_motion/dto/requests/stream_setup_live_composite_request.py +123 -123
- zaber_motion/dto/requests/stream_setup_live_request.py +104 -104
- zaber_motion/dto/requests/stream_setup_store_arbitrary_axes_request.py +126 -126
- zaber_motion/dto/requests/stream_setup_store_composite_request.py +151 -151
- zaber_motion/dto/requests/stream_setup_store_request.py +132 -132
- zaber_motion/dto/requests/stream_wait_analog_input_request.py +118 -118
- zaber_motion/dto/requests/stream_wait_digital_input_request.py +103 -103
- zaber_motion/dto/requests/stream_wait_request.py +107 -107
- zaber_motion/dto/requests/stream_wait_until_idle_request.py +89 -89
- zaber_motion/dto/requests/string_array_response.py +51 -51
- zaber_motion/dto/requests/string_response.py +45 -45
- zaber_motion/dto/requests/test_event.py +45 -45
- zaber_motion/dto/requests/test_request.py +55 -55
- zaber_motion/dto/requests/test_request_complex.py +57 -0
- zaber_motion/dto/requests/test_response.py +45 -45
- zaber_motion/dto/requests/test_response_long.py +51 -51
- zaber_motion/dto/requests/toggle_device_db_store_request.py +50 -50
- zaber_motion/dto/requests/tools_list_serial_ports_response.py +51 -51
- zaber_motion/dto/requests/translator_create_from_device_request.py +97 -97
- zaber_motion/dto/requests/translator_create_live_request.py +91 -91
- zaber_motion/dto/requests/translator_create_request.py +62 -62
- zaber_motion/dto/requests/translator_create_response.py +51 -51
- zaber_motion/dto/requests/translator_empty_request.py +51 -51
- zaber_motion/dto/requests/translator_flush_live_request.py +56 -56
- zaber_motion/dto/requests/translator_flush_response.py +51 -51
- zaber_motion/dto/requests/translator_get_axis_offset_request.py +81 -81
- zaber_motion/dto/requests/translator_get_axis_position_request.py +72 -72
- zaber_motion/dto/requests/translator_set_axis_position_request.py +83 -83
- zaber_motion/dto/requests/translator_set_feed_rate_override_request.py +62 -62
- zaber_motion/dto/requests/translator_set_traverse_rate_request.py +74 -74
- zaber_motion/dto/requests/translator_translate_request.py +60 -60
- zaber_motion/dto/requests/trigger_clear_action_request.py +91 -91
- zaber_motion/dto/requests/trigger_empty_request.py +79 -79
- zaber_motion/dto/requests/trigger_enable_request.py +93 -93
- zaber_motion/dto/requests/trigger_enabled_states.py +56 -56
- zaber_motion/dto/requests/trigger_fire_at_interval_request.py +102 -102
- zaber_motion/dto/requests/trigger_fire_when_distance_travelled_request.py +116 -116
- zaber_motion/dto/requests/trigger_fire_when_io_request.py +128 -128
- zaber_motion/dto/requests/trigger_fire_when_request.py +88 -88
- zaber_motion/dto/requests/trigger_fire_when_setting_request.py +137 -137
- zaber_motion/dto/requests/trigger_on_fire_request.py +114 -114
- zaber_motion/dto/requests/trigger_on_fire_set_request.py +149 -149
- zaber_motion/dto/requests/trigger_on_fire_set_to_setting_request.py +149 -149
- zaber_motion/dto/requests/trigger_set_label_request.py +88 -88
- zaber_motion/dto/requests/trigger_states.py +56 -56
- zaber_motion/dto/requests/unit_convert_unit_request.py +71 -71
- zaber_motion/dto/requests/unit_get_enum_request.py +45 -45
- zaber_motion/dto/requests/unit_get_enum_response.py +48 -48
- zaber_motion/dto/requests/unit_get_symbol_request.py +48 -48
- zaber_motion/dto/requests/unit_get_symbol_response.py +45 -45
- zaber_motion/dto/requests/unknown_binary_response_event_wrapper.py +82 -82
- zaber_motion/dto/requests/unknown_response_event_wrapper.py +82 -82
- zaber_motion/dto/requests/wait_to_clear_warnings_request.py +105 -105
- zaber_motion/dto/requests/wait_to_respond_request.py +76 -76
- zaber_motion/dto/requests/wdi_generic_float_request.py +119 -0
- zaber_motion/dto/requests/wdi_generic_request.py +136 -136
- zaber_motion/dto/requests/wdi_get_status_response.py +50 -50
- zaber_motion/dto/rotation_direction.py +13 -13
- zaber_motion/dto_object.py +18 -18
- zaber_motion/events.py +112 -112
- zaber_motion/exceptions/__init__.py +87 -87
- zaber_motion/exceptions/bad_command_exception.py +10 -10
- zaber_motion/exceptions/bad_data_exception.py +10 -10
- zaber_motion/exceptions/binary_command_failed_exception.py +27 -27
- zaber_motion/exceptions/command_failed_exception.py +27 -27
- zaber_motion/exceptions/command_preempted_exception.py +10 -10
- zaber_motion/exceptions/command_too_long_exception.py +27 -27
- zaber_motion/exceptions/connection_closed_exception.py +10 -10
- zaber_motion/exceptions/connection_failed_exception.py +10 -10
- zaber_motion/exceptions/conversion_failed_exception.py +10 -10
- zaber_motion/exceptions/device_address_conflict_exception.py +27 -27
- zaber_motion/exceptions/device_busy_exception.py +10 -10
- zaber_motion/exceptions/device_db_failed_exception.py +27 -27
- zaber_motion/exceptions/device_detection_failed_exception.py +10 -10
- zaber_motion/exceptions/device_failed_exception.py +11 -11
- zaber_motion/exceptions/device_not_identified_exception.py +10 -10
- zaber_motion/exceptions/driver_disabled_exception.py +10 -10
- zaber_motion/exceptions/g_code_execution_exception.py +27 -27
- zaber_motion/exceptions/g_code_syntax_exception.py +27 -27
- zaber_motion/exceptions/incompatible_shared_library_exception.py +11 -11
- zaber_motion/exceptions/internal_error_exception.py +10 -10
- zaber_motion/exceptions/invalid_argument_exception.py +10 -10
- zaber_motion/exceptions/invalid_csv_data_exception.py +10 -10
- zaber_motion/exceptions/invalid_data_exception.py +10 -10
- zaber_motion/exceptions/invalid_operation_exception.py +10 -10
- zaber_motion/exceptions/invalid_packet_exception.py +27 -27
- zaber_motion/exceptions/invalid_park_state_exception.py +10 -10
- zaber_motion/exceptions/invalid_request_data_exception.py +11 -11
- zaber_motion/exceptions/invalid_response_exception.py +27 -27
- zaber_motion/exceptions/io_channel_out_of_range_exception.py +10 -10
- zaber_motion/exceptions/io_failed_exception.py +10 -10
- zaber_motion/exceptions/lockstep_enabled_exception.py +10 -10
- zaber_motion/exceptions/lockstep_not_enabled_exception.py +10 -10
- zaber_motion/exceptions/motion_lib_exception.py +18 -18
- zaber_motion/exceptions/movement_failed_exception.py +27 -27
- zaber_motion/exceptions/movement_interrupted_exception.py +27 -27
- zaber_motion/exceptions/no_device_found_exception.py +10 -10
- zaber_motion/exceptions/no_value_for_key_exception.py +10 -10
- zaber_motion/exceptions/not_supported_exception.py +10 -10
- zaber_motion/exceptions/operation_failed_exception.py +27 -27
- zaber_motion/exceptions/os_failed_exception.py +10 -10
- zaber_motion/exceptions/out_of_request_ids_exception.py +10 -10
- zaber_motion/exceptions/pvt_discontinuity_exception.py +10 -10
- zaber_motion/exceptions/pvt_execution_exception.py +27 -27
- zaber_motion/exceptions/pvt_mode_exception.py +10 -10
- zaber_motion/exceptions/pvt_movement_failed_exception.py +27 -27
- zaber_motion/exceptions/pvt_movement_interrupted_exception.py +27 -27
- zaber_motion/exceptions/pvt_sequence_generation_failed_exception.py +10 -10
- zaber_motion/exceptions/pvt_setup_failed_exception.py +10 -10
- zaber_motion/exceptions/remote_mode_exception.py +11 -11
- zaber_motion/exceptions/request_timeout_exception.py +10 -10
- zaber_motion/exceptions/serial_port_busy_exception.py +10 -10
- zaber_motion/exceptions/set_device_state_failed_exception.py +27 -27
- zaber_motion/exceptions/set_peripheral_state_failed_exception.py +27 -27
- zaber_motion/exceptions/setting_not_found_exception.py +10 -10
- zaber_motion/exceptions/stream_discontinuity_exception.py +10 -10
- zaber_motion/exceptions/stream_execution_exception.py +27 -27
- zaber_motion/exceptions/stream_mode_exception.py +10 -10
- zaber_motion/exceptions/stream_movement_failed_exception.py +27 -27
- zaber_motion/exceptions/stream_movement_interrupted_exception.py +27 -27
- zaber_motion/exceptions/stream_setup_failed_exception.py +10 -10
- zaber_motion/exceptions/timeout_exception.py +10 -10
- zaber_motion/exceptions/transport_already_used_exception.py +10 -10
- zaber_motion/exceptions/unknown_request_exception.py +10 -10
- zaber_motion/gcode/__init__.py +11 -11
- zaber_motion/gcode/offline_translator.py +401 -401
- zaber_motion/gcode/translator.py +424 -424
- zaber_motion/library.py +179 -179
- zaber_motion/microscopy/__init__.py +14 -14
- zaber_motion/microscopy/autofocus.py +645 -645
- zaber_motion/microscopy/camera_trigger.py +108 -108
- zaber_motion/microscopy/filter_changer.py +167 -167
- zaber_motion/microscopy/illuminator.py +163 -139
- zaber_motion/microscopy/illuminator_channel.py +629 -616
- zaber_motion/microscopy/microscope.py +315 -315
- zaber_motion/microscopy/objective_changer.py +403 -403
- zaber_motion/microscopy/wdi_autofocus_provider.py +536 -396
- zaber_motion/product/__init__.py +7 -7
- zaber_motion/product/process.py +818 -818
- zaber_motion/product/process_controller.py +134 -134
- zaber_motion/serialization.py +32 -32
- zaber_motion/tools.py +78 -78
- zaber_motion/unit_table.py +86 -86
- zaber_motion/units.py +206 -206
- zaber_motion/version.py +1 -1
- {zaber_motion-7.13.0.dist-info → zaber_motion-7.15.0.dist-info}/LICENSE.txt +2119 -2119
- {zaber_motion-7.13.0.dist-info → zaber_motion-7.15.0.dist-info}/METADATA +1 -1
- zaber_motion-7.15.0.dist-info/RECORD +496 -0
- zaber_motion_bindings/zaber-motion-core-windows-amd64.dll +0 -0
- zaber_motion-7.13.0.dist-info/RECORD +0 -494
- {zaber_motion-7.13.0.dist-info → zaber_motion-7.15.0.dist-info}/WHEEL +0 -0
- {zaber_motion-7.13.0.dist-info → zaber_motion-7.15.0.dist-info}/top_level.txt +0 -0
|
@@ -1,403 +1,403 @@
|
|
|
1
|
-
# ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
|
|
2
|
-
# ============== DO NOT EDIT DIRECTLY ============== #
|
|
3
|
-
|
|
4
|
-
from typing import Optional
|
|
5
|
-
from ..call import call, call_async, call_sync
|
|
6
|
-
from ..dto import requests as dto
|
|
7
|
-
from ..dto.measurement import Measurement
|
|
8
|
-
from ..ascii import Connection, Device, Axis
|
|
9
|
-
from ..units import Units, LengthUnits
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class ObjectiveChanger:
|
|
13
|
-
"""
|
|
14
|
-
Represents an objective changer of a microscope.
|
|
15
|
-
Unstable. Expect breaking changes in future releases.
|
|
16
|
-
Requires at least Firmware 7.32.
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
@property
|
|
20
|
-
def turret(self) -> Device:
|
|
21
|
-
"""
|
|
22
|
-
Device address of the turret.
|
|
23
|
-
"""
|
|
24
|
-
return self._turret
|
|
25
|
-
|
|
26
|
-
@property
|
|
27
|
-
def focus_axis(self) -> Axis:
|
|
28
|
-
"""
|
|
29
|
-
The focus axis.
|
|
30
|
-
"""
|
|
31
|
-
return self._focus_axis
|
|
32
|
-
|
|
33
|
-
def __init__(self, turret: Device, focus_axis: Axis):
|
|
34
|
-
"""
|
|
35
|
-
Creates instance of `ObjectiveChanger` based on the given device.
|
|
36
|
-
If the device is identified, this constructor will ensure it is an objective changer.
|
|
37
|
-
"""
|
|
38
|
-
self._turret: Device = turret
|
|
39
|
-
self._focus_axis: Axis = focus_axis
|
|
40
|
-
self.__verify_is_changer()
|
|
41
|
-
|
|
42
|
-
@staticmethod
|
|
43
|
-
def find(
|
|
44
|
-
connection: Connection,
|
|
45
|
-
turret_address: int = 0,
|
|
46
|
-
focus_address: int = 0
|
|
47
|
-
) -> 'ObjectiveChanger':
|
|
48
|
-
"""
|
|
49
|
-
Deprecated: Use microscope's `Find` method instead or instantiate manually.
|
|
50
|
-
|
|
51
|
-
Finds an objective changer on a connection.
|
|
52
|
-
In case of conflict, specify the optional device addresses.
|
|
53
|
-
Devices on the connection must be identified.
|
|
54
|
-
|
|
55
|
-
Args:
|
|
56
|
-
connection: Connection on which to detect the objective changer.
|
|
57
|
-
turret_address: Optional device address of the turret device (X-MOR).
|
|
58
|
-
focus_address: Optional device address of the focus device (X-LDA).
|
|
59
|
-
|
|
60
|
-
Returns:
|
|
61
|
-
New instance of objective changer.
|
|
62
|
-
"""
|
|
63
|
-
request = dto.ObjectiveChangerRequest(
|
|
64
|
-
interface_id=connection.interface_id,
|
|
65
|
-
turret_address=turret_address,
|
|
66
|
-
focus_address=focus_address,
|
|
67
|
-
)
|
|
68
|
-
response = call(
|
|
69
|
-
"objective_changer/detect",
|
|
70
|
-
request,
|
|
71
|
-
dto.ObjectiveChangerCreateResponse.from_binary)
|
|
72
|
-
return ObjectiveChanger(
|
|
73
|
-
Device(connection, response.turret),
|
|
74
|
-
Axis(Device(connection, response.focus_address), response.focus_axis))
|
|
75
|
-
|
|
76
|
-
@staticmethod
|
|
77
|
-
async def find_async(
|
|
78
|
-
connection: Connection,
|
|
79
|
-
turret_address: int = 0,
|
|
80
|
-
focus_address: int = 0
|
|
81
|
-
) -> 'ObjectiveChanger':
|
|
82
|
-
"""
|
|
83
|
-
Deprecated: Use microscope's `Find` method instead or instantiate manually.
|
|
84
|
-
|
|
85
|
-
Finds an objective changer on a connection.
|
|
86
|
-
In case of conflict, specify the optional device addresses.
|
|
87
|
-
Devices on the connection must be identified.
|
|
88
|
-
|
|
89
|
-
Args:
|
|
90
|
-
connection: Connection on which to detect the objective changer.
|
|
91
|
-
turret_address: Optional device address of the turret device (X-MOR).
|
|
92
|
-
focus_address: Optional device address of the focus device (X-LDA).
|
|
93
|
-
|
|
94
|
-
Returns:
|
|
95
|
-
New instance of objective changer.
|
|
96
|
-
"""
|
|
97
|
-
request = dto.ObjectiveChangerRequest(
|
|
98
|
-
interface_id=connection.interface_id,
|
|
99
|
-
turret_address=turret_address,
|
|
100
|
-
focus_address=focus_address,
|
|
101
|
-
)
|
|
102
|
-
response = await call_async(
|
|
103
|
-
"objective_changer/detect",
|
|
104
|
-
request,
|
|
105
|
-
dto.ObjectiveChangerCreateResponse.from_binary)
|
|
106
|
-
return ObjectiveChanger(
|
|
107
|
-
Device(connection, response.turret),
|
|
108
|
-
Axis(Device(connection, response.focus_address), response.focus_axis))
|
|
109
|
-
|
|
110
|
-
def change(
|
|
111
|
-
self,
|
|
112
|
-
objective: int,
|
|
113
|
-
focus_offset: Optional[Measurement] = None
|
|
114
|
-
) -> None:
|
|
115
|
-
"""
|
|
116
|
-
Changes the objective.
|
|
117
|
-
Runs a sequence of movements switching from the current objective to the new one.
|
|
118
|
-
The focus stage moves to the focus datum after the objective change.
|
|
119
|
-
|
|
120
|
-
Args:
|
|
121
|
-
objective: Objective number starting from 1.
|
|
122
|
-
focus_offset: Optional offset from the focus datum.
|
|
123
|
-
"""
|
|
124
|
-
request = dto.ObjectiveChangerChangeRequest(
|
|
125
|
-
interface_id=self.turret.connection.interface_id,
|
|
126
|
-
turret_address=self.turret.device_address,
|
|
127
|
-
focus_address=self.focus_axis.device.device_address,
|
|
128
|
-
focus_axis=self.focus_axis.axis_number,
|
|
129
|
-
objective=objective,
|
|
130
|
-
focus_offset=focus_offset,
|
|
131
|
-
)
|
|
132
|
-
call("objective_changer/change", request)
|
|
133
|
-
|
|
134
|
-
async def change_async(
|
|
135
|
-
self,
|
|
136
|
-
objective: int,
|
|
137
|
-
focus_offset: Optional[Measurement] = None
|
|
138
|
-
) -> None:
|
|
139
|
-
"""
|
|
140
|
-
Changes the objective.
|
|
141
|
-
Runs a sequence of movements switching from the current objective to the new one.
|
|
142
|
-
The focus stage moves to the focus datum after the objective change.
|
|
143
|
-
|
|
144
|
-
Args:
|
|
145
|
-
objective: Objective number starting from 1.
|
|
146
|
-
focus_offset: Optional offset from the focus datum.
|
|
147
|
-
"""
|
|
148
|
-
request = dto.ObjectiveChangerChangeRequest(
|
|
149
|
-
interface_id=self.turret.connection.interface_id,
|
|
150
|
-
turret_address=self.turret.device_address,
|
|
151
|
-
focus_address=self.focus_axis.device.device_address,
|
|
152
|
-
focus_axis=self.focus_axis.axis_number,
|
|
153
|
-
objective=objective,
|
|
154
|
-
focus_offset=focus_offset,
|
|
155
|
-
)
|
|
156
|
-
await call_async("objective_changer/change", request)
|
|
157
|
-
|
|
158
|
-
def release(
|
|
159
|
-
self
|
|
160
|
-
) -> None:
|
|
161
|
-
"""
|
|
162
|
-
Moves the focus stage out of the turret releasing the current objective.
|
|
163
|
-
"""
|
|
164
|
-
request = dto.ObjectiveChangerRequest(
|
|
165
|
-
interface_id=self.turret.connection.interface_id,
|
|
166
|
-
turret_address=self.turret.device_address,
|
|
167
|
-
focus_address=self.focus_axis.device.device_address,
|
|
168
|
-
focus_axis=self.focus_axis.axis_number,
|
|
169
|
-
)
|
|
170
|
-
call("objective_changer/release", request)
|
|
171
|
-
|
|
172
|
-
async def release_async(
|
|
173
|
-
self
|
|
174
|
-
) -> None:
|
|
175
|
-
"""
|
|
176
|
-
Moves the focus stage out of the turret releasing the current objective.
|
|
177
|
-
"""
|
|
178
|
-
request = dto.ObjectiveChangerRequest(
|
|
179
|
-
interface_id=self.turret.connection.interface_id,
|
|
180
|
-
turret_address=self.turret.device_address,
|
|
181
|
-
focus_address=self.focus_axis.device.device_address,
|
|
182
|
-
focus_axis=self.focus_axis.axis_number,
|
|
183
|
-
)
|
|
184
|
-
await call_async("objective_changer/release", request)
|
|
185
|
-
|
|
186
|
-
def get_current_objective(
|
|
187
|
-
self
|
|
188
|
-
) -> int:
|
|
189
|
-
"""
|
|
190
|
-
Returns current objective number starting from 1.
|
|
191
|
-
The value of 0 indicates that the position is either unknown or between two objectives.
|
|
192
|
-
|
|
193
|
-
Returns:
|
|
194
|
-
Current objective number starting from 1 or 0 if not applicable.
|
|
195
|
-
"""
|
|
196
|
-
request = dto.AxisEmptyRequest(
|
|
197
|
-
interface_id=self.turret.connection.interface_id,
|
|
198
|
-
device=self.turret.device_address,
|
|
199
|
-
axis=1,
|
|
200
|
-
)
|
|
201
|
-
response = call(
|
|
202
|
-
"device/get_index_position",
|
|
203
|
-
request,
|
|
204
|
-
dto.IntResponse.from_binary)
|
|
205
|
-
return response.value
|
|
206
|
-
|
|
207
|
-
async def get_current_objective_async(
|
|
208
|
-
self
|
|
209
|
-
) -> int:
|
|
210
|
-
"""
|
|
211
|
-
Returns current objective number starting from 1.
|
|
212
|
-
The value of 0 indicates that the position is either unknown or between two objectives.
|
|
213
|
-
|
|
214
|
-
Returns:
|
|
215
|
-
Current objective number starting from 1 or 0 if not applicable.
|
|
216
|
-
"""
|
|
217
|
-
request = dto.AxisEmptyRequest(
|
|
218
|
-
interface_id=self.turret.connection.interface_id,
|
|
219
|
-
device=self.turret.device_address,
|
|
220
|
-
axis=1,
|
|
221
|
-
)
|
|
222
|
-
response = await call_async(
|
|
223
|
-
"device/get_index_position",
|
|
224
|
-
request,
|
|
225
|
-
dto.IntResponse.from_binary)
|
|
226
|
-
return response.value
|
|
227
|
-
|
|
228
|
-
def get_number_of_objectives(
|
|
229
|
-
self
|
|
230
|
-
) -> int:
|
|
231
|
-
"""
|
|
232
|
-
Gets number of objectives that the turret can accommodate.
|
|
233
|
-
|
|
234
|
-
Returns:
|
|
235
|
-
Number of positions.
|
|
236
|
-
"""
|
|
237
|
-
request = dto.AxisEmptyRequest(
|
|
238
|
-
interface_id=self.turret.connection.interface_id,
|
|
239
|
-
device=self.turret.device_address,
|
|
240
|
-
axis=1,
|
|
241
|
-
)
|
|
242
|
-
response = call(
|
|
243
|
-
"device/get_index_count",
|
|
244
|
-
request,
|
|
245
|
-
dto.IntResponse.from_binary)
|
|
246
|
-
return response.value
|
|
247
|
-
|
|
248
|
-
async def get_number_of_objectives_async(
|
|
249
|
-
self
|
|
250
|
-
) -> int:
|
|
251
|
-
"""
|
|
252
|
-
Gets number of objectives that the turret can accommodate.
|
|
253
|
-
|
|
254
|
-
Returns:
|
|
255
|
-
Number of positions.
|
|
256
|
-
"""
|
|
257
|
-
request = dto.AxisEmptyRequest(
|
|
258
|
-
interface_id=self.turret.connection.interface_id,
|
|
259
|
-
device=self.turret.device_address,
|
|
260
|
-
axis=1,
|
|
261
|
-
)
|
|
262
|
-
response = await call_async(
|
|
263
|
-
"device/get_index_count",
|
|
264
|
-
request,
|
|
265
|
-
dto.IntResponse.from_binary)
|
|
266
|
-
return response.value
|
|
267
|
-
|
|
268
|
-
def get_focus_datum(
|
|
269
|
-
self,
|
|
270
|
-
unit: LengthUnits = Units.NATIVE
|
|
271
|
-
) -> float:
|
|
272
|
-
"""
|
|
273
|
-
Gets the focus datum.
|
|
274
|
-
The focus datum is the position that the focus stage moves to after an objective change.
|
|
275
|
-
It is backed by the limit.home.offset setting.
|
|
276
|
-
|
|
277
|
-
Args:
|
|
278
|
-
unit: Units of datum.
|
|
279
|
-
|
|
280
|
-
Returns:
|
|
281
|
-
The datum.
|
|
282
|
-
"""
|
|
283
|
-
request = dto.ObjectiveChangerSetRequest(
|
|
284
|
-
interface_id=self.turret.connection.interface_id,
|
|
285
|
-
turret_address=self.turret.device_address,
|
|
286
|
-
focus_address=self.focus_axis.device.device_address,
|
|
287
|
-
focus_axis=self.focus_axis.axis_number,
|
|
288
|
-
unit=unit,
|
|
289
|
-
)
|
|
290
|
-
response = call(
|
|
291
|
-
"objective_changer/get_datum",
|
|
292
|
-
request,
|
|
293
|
-
dto.DoubleResponse.from_binary)
|
|
294
|
-
return response.value
|
|
295
|
-
|
|
296
|
-
async def get_focus_datum_async(
|
|
297
|
-
self,
|
|
298
|
-
unit: LengthUnits = Units.NATIVE
|
|
299
|
-
) -> float:
|
|
300
|
-
"""
|
|
301
|
-
Gets the focus datum.
|
|
302
|
-
The focus datum is the position that the focus stage moves to after an objective change.
|
|
303
|
-
It is backed by the limit.home.offset setting.
|
|
304
|
-
|
|
305
|
-
Args:
|
|
306
|
-
unit: Units of datum.
|
|
307
|
-
|
|
308
|
-
Returns:
|
|
309
|
-
The datum.
|
|
310
|
-
"""
|
|
311
|
-
request = dto.ObjectiveChangerSetRequest(
|
|
312
|
-
interface_id=self.turret.connection.interface_id,
|
|
313
|
-
turret_address=self.turret.device_address,
|
|
314
|
-
focus_address=self.focus_axis.device.device_address,
|
|
315
|
-
focus_axis=self.focus_axis.axis_number,
|
|
316
|
-
unit=unit,
|
|
317
|
-
)
|
|
318
|
-
response = await call_async(
|
|
319
|
-
"objective_changer/get_datum",
|
|
320
|
-
request,
|
|
321
|
-
dto.DoubleResponse.from_binary)
|
|
322
|
-
return response.value
|
|
323
|
-
|
|
324
|
-
def set_focus_datum(
|
|
325
|
-
self,
|
|
326
|
-
datum: float,
|
|
327
|
-
unit: LengthUnits = Units.NATIVE
|
|
328
|
-
) -> None:
|
|
329
|
-
"""
|
|
330
|
-
Sets the focus datum.
|
|
331
|
-
The focus datum is the position that the focus stage moves to after an objective change.
|
|
332
|
-
It is backed by the limit.home.offset setting.
|
|
333
|
-
|
|
334
|
-
Args:
|
|
335
|
-
datum: Value of datum.
|
|
336
|
-
unit: Units of datum.
|
|
337
|
-
"""
|
|
338
|
-
request = dto.ObjectiveChangerSetRequest(
|
|
339
|
-
interface_id=self.turret.connection.interface_id,
|
|
340
|
-
turret_address=self.turret.device_address,
|
|
341
|
-
focus_address=self.focus_axis.device.device_address,
|
|
342
|
-
focus_axis=self.focus_axis.axis_number,
|
|
343
|
-
value=datum,
|
|
344
|
-
unit=unit,
|
|
345
|
-
)
|
|
346
|
-
call("objective_changer/set_datum", request)
|
|
347
|
-
|
|
348
|
-
async def set_focus_datum_async(
|
|
349
|
-
self,
|
|
350
|
-
datum: float,
|
|
351
|
-
unit: LengthUnits = Units.NATIVE
|
|
352
|
-
) -> None:
|
|
353
|
-
"""
|
|
354
|
-
Sets the focus datum.
|
|
355
|
-
The focus datum is the position that the focus stage moves to after an objective change.
|
|
356
|
-
It is backed by the limit.home.offset setting.
|
|
357
|
-
|
|
358
|
-
Args:
|
|
359
|
-
datum: Value of datum.
|
|
360
|
-
unit: Units of datum.
|
|
361
|
-
"""
|
|
362
|
-
request = dto.ObjectiveChangerSetRequest(
|
|
363
|
-
interface_id=self.turret.connection.interface_id,
|
|
364
|
-
turret_address=self.turret.device_address,
|
|
365
|
-
focus_address=self.focus_axis.device.device_address,
|
|
366
|
-
focus_axis=self.focus_axis.axis_number,
|
|
367
|
-
value=datum,
|
|
368
|
-
unit=unit,
|
|
369
|
-
)
|
|
370
|
-
await call_async("objective_changer/set_datum", request)
|
|
371
|
-
|
|
372
|
-
def __verify_is_changer(
|
|
373
|
-
self
|
|
374
|
-
) -> None:
|
|
375
|
-
"""
|
|
376
|
-
Checks if this is a objective changer and throws an error if it is not.
|
|
377
|
-
"""
|
|
378
|
-
request = dto.ObjectiveChangerRequest(
|
|
379
|
-
interface_id=self.turret.connection.interface_id,
|
|
380
|
-
turret_address=self.turret.device_address,
|
|
381
|
-
focus_address=self.focus_axis.device.device_address,
|
|
382
|
-
focus_axis=self.focus_axis.axis_number,
|
|
383
|
-
)
|
|
384
|
-
call_sync("objective_changer/verify", request)
|
|
385
|
-
|
|
386
|
-
def __repr__(
|
|
387
|
-
self
|
|
388
|
-
) -> str:
|
|
389
|
-
"""
|
|
390
|
-
Returns a string that represents the device.
|
|
391
|
-
|
|
392
|
-
Returns:
|
|
393
|
-
A string that represents the device.
|
|
394
|
-
"""
|
|
395
|
-
request = dto.AxisToStringRequest(
|
|
396
|
-
interface_id=self.turret.connection.interface_id,
|
|
397
|
-
device=self.turret.device_address,
|
|
398
|
-
)
|
|
399
|
-
response = call_sync(
|
|
400
|
-
"device/device_to_string",
|
|
401
|
-
request,
|
|
402
|
-
dto.StringResponse.from_binary)
|
|
403
|
-
return response.value
|
|
1
|
+
# ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
|
|
2
|
+
# ============== DO NOT EDIT DIRECTLY ============== #
|
|
3
|
+
|
|
4
|
+
from typing import Optional
|
|
5
|
+
from ..call import call, call_async, call_sync
|
|
6
|
+
from ..dto import requests as dto
|
|
7
|
+
from ..dto.measurement import Measurement
|
|
8
|
+
from ..ascii import Connection, Device, Axis
|
|
9
|
+
from ..units import Units, LengthUnits
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ObjectiveChanger:
|
|
13
|
+
"""
|
|
14
|
+
Represents an objective changer of a microscope.
|
|
15
|
+
Unstable. Expect breaking changes in future releases.
|
|
16
|
+
Requires at least Firmware 7.32.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
@property
|
|
20
|
+
def turret(self) -> Device:
|
|
21
|
+
"""
|
|
22
|
+
Device address of the turret.
|
|
23
|
+
"""
|
|
24
|
+
return self._turret
|
|
25
|
+
|
|
26
|
+
@property
|
|
27
|
+
def focus_axis(self) -> Axis:
|
|
28
|
+
"""
|
|
29
|
+
The focus axis.
|
|
30
|
+
"""
|
|
31
|
+
return self._focus_axis
|
|
32
|
+
|
|
33
|
+
def __init__(self, turret: Device, focus_axis: Axis):
|
|
34
|
+
"""
|
|
35
|
+
Creates instance of `ObjectiveChanger` based on the given device.
|
|
36
|
+
If the device is identified, this constructor will ensure it is an objective changer.
|
|
37
|
+
"""
|
|
38
|
+
self._turret: Device = turret
|
|
39
|
+
self._focus_axis: Axis = focus_axis
|
|
40
|
+
self.__verify_is_changer()
|
|
41
|
+
|
|
42
|
+
@staticmethod
|
|
43
|
+
def find(
|
|
44
|
+
connection: Connection,
|
|
45
|
+
turret_address: int = 0,
|
|
46
|
+
focus_address: int = 0
|
|
47
|
+
) -> 'ObjectiveChanger':
|
|
48
|
+
"""
|
|
49
|
+
Deprecated: Use microscope's `Find` method instead or instantiate manually.
|
|
50
|
+
|
|
51
|
+
Finds an objective changer on a connection.
|
|
52
|
+
In case of conflict, specify the optional device addresses.
|
|
53
|
+
Devices on the connection must be identified.
|
|
54
|
+
|
|
55
|
+
Args:
|
|
56
|
+
connection: Connection on which to detect the objective changer.
|
|
57
|
+
turret_address: Optional device address of the turret device (X-MOR).
|
|
58
|
+
focus_address: Optional device address of the focus device (X-LDA).
|
|
59
|
+
|
|
60
|
+
Returns:
|
|
61
|
+
New instance of objective changer.
|
|
62
|
+
"""
|
|
63
|
+
request = dto.ObjectiveChangerRequest(
|
|
64
|
+
interface_id=connection.interface_id,
|
|
65
|
+
turret_address=turret_address,
|
|
66
|
+
focus_address=focus_address,
|
|
67
|
+
)
|
|
68
|
+
response = call(
|
|
69
|
+
"objective_changer/detect",
|
|
70
|
+
request,
|
|
71
|
+
dto.ObjectiveChangerCreateResponse.from_binary)
|
|
72
|
+
return ObjectiveChanger(
|
|
73
|
+
Device(connection, response.turret),
|
|
74
|
+
Axis(Device(connection, response.focus_address), response.focus_axis))
|
|
75
|
+
|
|
76
|
+
@staticmethod
|
|
77
|
+
async def find_async(
|
|
78
|
+
connection: Connection,
|
|
79
|
+
turret_address: int = 0,
|
|
80
|
+
focus_address: int = 0
|
|
81
|
+
) -> 'ObjectiveChanger':
|
|
82
|
+
"""
|
|
83
|
+
Deprecated: Use microscope's `Find` method instead or instantiate manually.
|
|
84
|
+
|
|
85
|
+
Finds an objective changer on a connection.
|
|
86
|
+
In case of conflict, specify the optional device addresses.
|
|
87
|
+
Devices on the connection must be identified.
|
|
88
|
+
|
|
89
|
+
Args:
|
|
90
|
+
connection: Connection on which to detect the objective changer.
|
|
91
|
+
turret_address: Optional device address of the turret device (X-MOR).
|
|
92
|
+
focus_address: Optional device address of the focus device (X-LDA).
|
|
93
|
+
|
|
94
|
+
Returns:
|
|
95
|
+
New instance of objective changer.
|
|
96
|
+
"""
|
|
97
|
+
request = dto.ObjectiveChangerRequest(
|
|
98
|
+
interface_id=connection.interface_id,
|
|
99
|
+
turret_address=turret_address,
|
|
100
|
+
focus_address=focus_address,
|
|
101
|
+
)
|
|
102
|
+
response = await call_async(
|
|
103
|
+
"objective_changer/detect",
|
|
104
|
+
request,
|
|
105
|
+
dto.ObjectiveChangerCreateResponse.from_binary)
|
|
106
|
+
return ObjectiveChanger(
|
|
107
|
+
Device(connection, response.turret),
|
|
108
|
+
Axis(Device(connection, response.focus_address), response.focus_axis))
|
|
109
|
+
|
|
110
|
+
def change(
|
|
111
|
+
self,
|
|
112
|
+
objective: int,
|
|
113
|
+
focus_offset: Optional[Measurement] = None
|
|
114
|
+
) -> None:
|
|
115
|
+
"""
|
|
116
|
+
Changes the objective.
|
|
117
|
+
Runs a sequence of movements switching from the current objective to the new one.
|
|
118
|
+
The focus stage moves to the focus datum after the objective change.
|
|
119
|
+
|
|
120
|
+
Args:
|
|
121
|
+
objective: Objective number starting from 1.
|
|
122
|
+
focus_offset: Optional offset from the focus datum.
|
|
123
|
+
"""
|
|
124
|
+
request = dto.ObjectiveChangerChangeRequest(
|
|
125
|
+
interface_id=self.turret.connection.interface_id,
|
|
126
|
+
turret_address=self.turret.device_address,
|
|
127
|
+
focus_address=self.focus_axis.device.device_address,
|
|
128
|
+
focus_axis=self.focus_axis.axis_number,
|
|
129
|
+
objective=objective,
|
|
130
|
+
focus_offset=focus_offset,
|
|
131
|
+
)
|
|
132
|
+
call("objective_changer/change", request)
|
|
133
|
+
|
|
134
|
+
async def change_async(
|
|
135
|
+
self,
|
|
136
|
+
objective: int,
|
|
137
|
+
focus_offset: Optional[Measurement] = None
|
|
138
|
+
) -> None:
|
|
139
|
+
"""
|
|
140
|
+
Changes the objective.
|
|
141
|
+
Runs a sequence of movements switching from the current objective to the new one.
|
|
142
|
+
The focus stage moves to the focus datum after the objective change.
|
|
143
|
+
|
|
144
|
+
Args:
|
|
145
|
+
objective: Objective number starting from 1.
|
|
146
|
+
focus_offset: Optional offset from the focus datum.
|
|
147
|
+
"""
|
|
148
|
+
request = dto.ObjectiveChangerChangeRequest(
|
|
149
|
+
interface_id=self.turret.connection.interface_id,
|
|
150
|
+
turret_address=self.turret.device_address,
|
|
151
|
+
focus_address=self.focus_axis.device.device_address,
|
|
152
|
+
focus_axis=self.focus_axis.axis_number,
|
|
153
|
+
objective=objective,
|
|
154
|
+
focus_offset=focus_offset,
|
|
155
|
+
)
|
|
156
|
+
await call_async("objective_changer/change", request)
|
|
157
|
+
|
|
158
|
+
def release(
|
|
159
|
+
self
|
|
160
|
+
) -> None:
|
|
161
|
+
"""
|
|
162
|
+
Moves the focus stage out of the turret releasing the current objective.
|
|
163
|
+
"""
|
|
164
|
+
request = dto.ObjectiveChangerRequest(
|
|
165
|
+
interface_id=self.turret.connection.interface_id,
|
|
166
|
+
turret_address=self.turret.device_address,
|
|
167
|
+
focus_address=self.focus_axis.device.device_address,
|
|
168
|
+
focus_axis=self.focus_axis.axis_number,
|
|
169
|
+
)
|
|
170
|
+
call("objective_changer/release", request)
|
|
171
|
+
|
|
172
|
+
async def release_async(
|
|
173
|
+
self
|
|
174
|
+
) -> None:
|
|
175
|
+
"""
|
|
176
|
+
Moves the focus stage out of the turret releasing the current objective.
|
|
177
|
+
"""
|
|
178
|
+
request = dto.ObjectiveChangerRequest(
|
|
179
|
+
interface_id=self.turret.connection.interface_id,
|
|
180
|
+
turret_address=self.turret.device_address,
|
|
181
|
+
focus_address=self.focus_axis.device.device_address,
|
|
182
|
+
focus_axis=self.focus_axis.axis_number,
|
|
183
|
+
)
|
|
184
|
+
await call_async("objective_changer/release", request)
|
|
185
|
+
|
|
186
|
+
def get_current_objective(
|
|
187
|
+
self
|
|
188
|
+
) -> int:
|
|
189
|
+
"""
|
|
190
|
+
Returns current objective number starting from 1.
|
|
191
|
+
The value of 0 indicates that the position is either unknown or between two objectives.
|
|
192
|
+
|
|
193
|
+
Returns:
|
|
194
|
+
Current objective number starting from 1 or 0 if not applicable.
|
|
195
|
+
"""
|
|
196
|
+
request = dto.AxisEmptyRequest(
|
|
197
|
+
interface_id=self.turret.connection.interface_id,
|
|
198
|
+
device=self.turret.device_address,
|
|
199
|
+
axis=1,
|
|
200
|
+
)
|
|
201
|
+
response = call(
|
|
202
|
+
"device/get_index_position",
|
|
203
|
+
request,
|
|
204
|
+
dto.IntResponse.from_binary)
|
|
205
|
+
return response.value
|
|
206
|
+
|
|
207
|
+
async def get_current_objective_async(
|
|
208
|
+
self
|
|
209
|
+
) -> int:
|
|
210
|
+
"""
|
|
211
|
+
Returns current objective number starting from 1.
|
|
212
|
+
The value of 0 indicates that the position is either unknown or between two objectives.
|
|
213
|
+
|
|
214
|
+
Returns:
|
|
215
|
+
Current objective number starting from 1 or 0 if not applicable.
|
|
216
|
+
"""
|
|
217
|
+
request = dto.AxisEmptyRequest(
|
|
218
|
+
interface_id=self.turret.connection.interface_id,
|
|
219
|
+
device=self.turret.device_address,
|
|
220
|
+
axis=1,
|
|
221
|
+
)
|
|
222
|
+
response = await call_async(
|
|
223
|
+
"device/get_index_position",
|
|
224
|
+
request,
|
|
225
|
+
dto.IntResponse.from_binary)
|
|
226
|
+
return response.value
|
|
227
|
+
|
|
228
|
+
def get_number_of_objectives(
|
|
229
|
+
self
|
|
230
|
+
) -> int:
|
|
231
|
+
"""
|
|
232
|
+
Gets number of objectives that the turret can accommodate.
|
|
233
|
+
|
|
234
|
+
Returns:
|
|
235
|
+
Number of positions.
|
|
236
|
+
"""
|
|
237
|
+
request = dto.AxisEmptyRequest(
|
|
238
|
+
interface_id=self.turret.connection.interface_id,
|
|
239
|
+
device=self.turret.device_address,
|
|
240
|
+
axis=1,
|
|
241
|
+
)
|
|
242
|
+
response = call(
|
|
243
|
+
"device/get_index_count",
|
|
244
|
+
request,
|
|
245
|
+
dto.IntResponse.from_binary)
|
|
246
|
+
return response.value
|
|
247
|
+
|
|
248
|
+
async def get_number_of_objectives_async(
|
|
249
|
+
self
|
|
250
|
+
) -> int:
|
|
251
|
+
"""
|
|
252
|
+
Gets number of objectives that the turret can accommodate.
|
|
253
|
+
|
|
254
|
+
Returns:
|
|
255
|
+
Number of positions.
|
|
256
|
+
"""
|
|
257
|
+
request = dto.AxisEmptyRequest(
|
|
258
|
+
interface_id=self.turret.connection.interface_id,
|
|
259
|
+
device=self.turret.device_address,
|
|
260
|
+
axis=1,
|
|
261
|
+
)
|
|
262
|
+
response = await call_async(
|
|
263
|
+
"device/get_index_count",
|
|
264
|
+
request,
|
|
265
|
+
dto.IntResponse.from_binary)
|
|
266
|
+
return response.value
|
|
267
|
+
|
|
268
|
+
def get_focus_datum(
|
|
269
|
+
self,
|
|
270
|
+
unit: LengthUnits = Units.NATIVE
|
|
271
|
+
) -> float:
|
|
272
|
+
"""
|
|
273
|
+
Gets the focus datum.
|
|
274
|
+
The focus datum is the position that the focus stage moves to after an objective change.
|
|
275
|
+
It is backed by the limit.home.offset setting.
|
|
276
|
+
|
|
277
|
+
Args:
|
|
278
|
+
unit: Units of datum.
|
|
279
|
+
|
|
280
|
+
Returns:
|
|
281
|
+
The datum.
|
|
282
|
+
"""
|
|
283
|
+
request = dto.ObjectiveChangerSetRequest(
|
|
284
|
+
interface_id=self.turret.connection.interface_id,
|
|
285
|
+
turret_address=self.turret.device_address,
|
|
286
|
+
focus_address=self.focus_axis.device.device_address,
|
|
287
|
+
focus_axis=self.focus_axis.axis_number,
|
|
288
|
+
unit=unit,
|
|
289
|
+
)
|
|
290
|
+
response = call(
|
|
291
|
+
"objective_changer/get_datum",
|
|
292
|
+
request,
|
|
293
|
+
dto.DoubleResponse.from_binary)
|
|
294
|
+
return response.value
|
|
295
|
+
|
|
296
|
+
async def get_focus_datum_async(
|
|
297
|
+
self,
|
|
298
|
+
unit: LengthUnits = Units.NATIVE
|
|
299
|
+
) -> float:
|
|
300
|
+
"""
|
|
301
|
+
Gets the focus datum.
|
|
302
|
+
The focus datum is the position that the focus stage moves to after an objective change.
|
|
303
|
+
It is backed by the limit.home.offset setting.
|
|
304
|
+
|
|
305
|
+
Args:
|
|
306
|
+
unit: Units of datum.
|
|
307
|
+
|
|
308
|
+
Returns:
|
|
309
|
+
The datum.
|
|
310
|
+
"""
|
|
311
|
+
request = dto.ObjectiveChangerSetRequest(
|
|
312
|
+
interface_id=self.turret.connection.interface_id,
|
|
313
|
+
turret_address=self.turret.device_address,
|
|
314
|
+
focus_address=self.focus_axis.device.device_address,
|
|
315
|
+
focus_axis=self.focus_axis.axis_number,
|
|
316
|
+
unit=unit,
|
|
317
|
+
)
|
|
318
|
+
response = await call_async(
|
|
319
|
+
"objective_changer/get_datum",
|
|
320
|
+
request,
|
|
321
|
+
dto.DoubleResponse.from_binary)
|
|
322
|
+
return response.value
|
|
323
|
+
|
|
324
|
+
def set_focus_datum(
|
|
325
|
+
self,
|
|
326
|
+
datum: float,
|
|
327
|
+
unit: LengthUnits = Units.NATIVE
|
|
328
|
+
) -> None:
|
|
329
|
+
"""
|
|
330
|
+
Sets the focus datum.
|
|
331
|
+
The focus datum is the position that the focus stage moves to after an objective change.
|
|
332
|
+
It is backed by the limit.home.offset setting.
|
|
333
|
+
|
|
334
|
+
Args:
|
|
335
|
+
datum: Value of datum.
|
|
336
|
+
unit: Units of datum.
|
|
337
|
+
"""
|
|
338
|
+
request = dto.ObjectiveChangerSetRequest(
|
|
339
|
+
interface_id=self.turret.connection.interface_id,
|
|
340
|
+
turret_address=self.turret.device_address,
|
|
341
|
+
focus_address=self.focus_axis.device.device_address,
|
|
342
|
+
focus_axis=self.focus_axis.axis_number,
|
|
343
|
+
value=datum,
|
|
344
|
+
unit=unit,
|
|
345
|
+
)
|
|
346
|
+
call("objective_changer/set_datum", request)
|
|
347
|
+
|
|
348
|
+
async def set_focus_datum_async(
|
|
349
|
+
self,
|
|
350
|
+
datum: float,
|
|
351
|
+
unit: LengthUnits = Units.NATIVE
|
|
352
|
+
) -> None:
|
|
353
|
+
"""
|
|
354
|
+
Sets the focus datum.
|
|
355
|
+
The focus datum is the position that the focus stage moves to after an objective change.
|
|
356
|
+
It is backed by the limit.home.offset setting.
|
|
357
|
+
|
|
358
|
+
Args:
|
|
359
|
+
datum: Value of datum.
|
|
360
|
+
unit: Units of datum.
|
|
361
|
+
"""
|
|
362
|
+
request = dto.ObjectiveChangerSetRequest(
|
|
363
|
+
interface_id=self.turret.connection.interface_id,
|
|
364
|
+
turret_address=self.turret.device_address,
|
|
365
|
+
focus_address=self.focus_axis.device.device_address,
|
|
366
|
+
focus_axis=self.focus_axis.axis_number,
|
|
367
|
+
value=datum,
|
|
368
|
+
unit=unit,
|
|
369
|
+
)
|
|
370
|
+
await call_async("objective_changer/set_datum", request)
|
|
371
|
+
|
|
372
|
+
def __verify_is_changer(
|
|
373
|
+
self
|
|
374
|
+
) -> None:
|
|
375
|
+
"""
|
|
376
|
+
Checks if this is a objective changer and throws an error if it is not.
|
|
377
|
+
"""
|
|
378
|
+
request = dto.ObjectiveChangerRequest(
|
|
379
|
+
interface_id=self.turret.connection.interface_id,
|
|
380
|
+
turret_address=self.turret.device_address,
|
|
381
|
+
focus_address=self.focus_axis.device.device_address,
|
|
382
|
+
focus_axis=self.focus_axis.axis_number,
|
|
383
|
+
)
|
|
384
|
+
call_sync("objective_changer/verify", request)
|
|
385
|
+
|
|
386
|
+
def __repr__(
|
|
387
|
+
self
|
|
388
|
+
) -> str:
|
|
389
|
+
"""
|
|
390
|
+
Returns a string that represents the device.
|
|
391
|
+
|
|
392
|
+
Returns:
|
|
393
|
+
A string that represents the device.
|
|
394
|
+
"""
|
|
395
|
+
request = dto.AxisToStringRequest(
|
|
396
|
+
interface_id=self.turret.connection.interface_id,
|
|
397
|
+
device=self.turret.device_address,
|
|
398
|
+
)
|
|
399
|
+
response = call_sync(
|
|
400
|
+
"device/device_to_string",
|
|
401
|
+
request,
|
|
402
|
+
dto.StringResponse.from_binary)
|
|
403
|
+
return response.value
|