zaber-motion 7.12.0__py3-none-win_amd64.whl → 7.14.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 -1666
- 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 -117
- 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 +84 -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 +139 -139
- zaber_motion/microscopy/illuminator_channel.py +616 -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.12.0.dist-info → zaber_motion-7.14.0.dist-info}/LICENSE.txt +2119 -2119
- {zaber_motion-7.12.0.dist-info → zaber_motion-7.14.0.dist-info}/METADATA +1 -1
- zaber_motion-7.14.0.dist-info/RECORD +496 -0
- zaber_motion_bindings/zaber-motion-core-windows-amd64.dll +0 -0
- zaber_motion-7.12.0.dist-info/RECORD +0 -494
- {zaber_motion-7.12.0.dist-info → zaber_motion-7.14.0.dist-info}/WHEEL +0 -0
- {zaber_motion-7.12.0.dist-info → zaber_motion-7.14.0.dist-info}/top_level.txt +0 -0
|
@@ -1,616 +1,616 @@
|
|
|
1
|
-
# ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
|
|
2
|
-
# ============== DO NOT EDIT DIRECTLY ============== #
|
|
3
|
-
|
|
4
|
-
from typing import TYPE_CHECKING, List, Optional
|
|
5
|
-
from ..call import call, call_async, call_sync
|
|
6
|
-
from ..dto import requests as dto
|
|
7
|
-
from ..dto.ascii.response import Response
|
|
8
|
-
from ..ascii import Axis, AxisSettings, AxisStorage, Warnings
|
|
9
|
-
from ..dto.ascii.set_state_axis_response import SetStateAxisResponse
|
|
10
|
-
from ..dto.firmware_version import FirmwareVersion
|
|
11
|
-
|
|
12
|
-
if TYPE_CHECKING:
|
|
13
|
-
from .illuminator import Illuminator
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class IlluminatorChannel:
|
|
17
|
-
"""
|
|
18
|
-
Use to control a channel (LED lamp) on an illuminator.
|
|
19
|
-
Requires at least Firmware 7.09.
|
|
20
|
-
"""
|
|
21
|
-
|
|
22
|
-
@property
|
|
23
|
-
def illuminator(self) -> 'Illuminator':
|
|
24
|
-
"""
|
|
25
|
-
Illuminator of this channel.
|
|
26
|
-
"""
|
|
27
|
-
return self._illuminator
|
|
28
|
-
|
|
29
|
-
@property
|
|
30
|
-
def channel_number(self) -> int:
|
|
31
|
-
"""
|
|
32
|
-
The channel number identifies the channel on the illuminator.
|
|
33
|
-
"""
|
|
34
|
-
return self._channel_number
|
|
35
|
-
|
|
36
|
-
@property
|
|
37
|
-
def settings(self) -> AxisSettings:
|
|
38
|
-
"""
|
|
39
|
-
Settings and properties of this channel.
|
|
40
|
-
"""
|
|
41
|
-
return self._settings
|
|
42
|
-
|
|
43
|
-
@property
|
|
44
|
-
def storage(self) -> AxisStorage:
|
|
45
|
-
"""
|
|
46
|
-
Key-value storage of this channel.
|
|
47
|
-
"""
|
|
48
|
-
return self._storage
|
|
49
|
-
|
|
50
|
-
@property
|
|
51
|
-
def warnings(self) -> Warnings:
|
|
52
|
-
"""
|
|
53
|
-
Warnings and faults of this channel.
|
|
54
|
-
"""
|
|
55
|
-
return self._warnings
|
|
56
|
-
|
|
57
|
-
def __init__(self, illuminator: 'Illuminator', channel_number: int):
|
|
58
|
-
self._illuminator: 'Illuminator' = illuminator
|
|
59
|
-
self._channel_number: int = channel_number
|
|
60
|
-
self._axis: Axis = Axis(illuminator.device, channel_number)
|
|
61
|
-
self._settings: AxisSettings = AxisSettings(self._axis)
|
|
62
|
-
self._storage: AxisStorage = AxisStorage(self._axis)
|
|
63
|
-
self._warnings: Warnings = Warnings(illuminator.device, channel_number)
|
|
64
|
-
|
|
65
|
-
def on(
|
|
66
|
-
self
|
|
67
|
-
) -> None:
|
|
68
|
-
"""
|
|
69
|
-
Turns this channel on.
|
|
70
|
-
"""
|
|
71
|
-
request = dto.ChannelOn(
|
|
72
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
73
|
-
device=self.illuminator.device.device_address,
|
|
74
|
-
axis=self.channel_number,
|
|
75
|
-
on=True,
|
|
76
|
-
)
|
|
77
|
-
call("illuminator/on", request)
|
|
78
|
-
|
|
79
|
-
async def on_async(
|
|
80
|
-
self
|
|
81
|
-
) -> None:
|
|
82
|
-
"""
|
|
83
|
-
Turns this channel on.
|
|
84
|
-
"""
|
|
85
|
-
request = dto.ChannelOn(
|
|
86
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
87
|
-
device=self.illuminator.device.device_address,
|
|
88
|
-
axis=self.channel_number,
|
|
89
|
-
on=True,
|
|
90
|
-
)
|
|
91
|
-
await call_async("illuminator/on", request)
|
|
92
|
-
|
|
93
|
-
def off(
|
|
94
|
-
self
|
|
95
|
-
) -> None:
|
|
96
|
-
"""
|
|
97
|
-
Turns this channel off.
|
|
98
|
-
"""
|
|
99
|
-
request = dto.ChannelOn(
|
|
100
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
101
|
-
device=self.illuminator.device.device_address,
|
|
102
|
-
axis=self.channel_number,
|
|
103
|
-
on=False,
|
|
104
|
-
)
|
|
105
|
-
call("illuminator/on", request)
|
|
106
|
-
|
|
107
|
-
async def off_async(
|
|
108
|
-
self
|
|
109
|
-
) -> None:
|
|
110
|
-
"""
|
|
111
|
-
Turns this channel off.
|
|
112
|
-
"""
|
|
113
|
-
request = dto.ChannelOn(
|
|
114
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
115
|
-
device=self.illuminator.device.device_address,
|
|
116
|
-
axis=self.channel_number,
|
|
117
|
-
on=False,
|
|
118
|
-
)
|
|
119
|
-
await call_async("illuminator/on", request)
|
|
120
|
-
|
|
121
|
-
def set_on(
|
|
122
|
-
self,
|
|
123
|
-
on: bool
|
|
124
|
-
) -> None:
|
|
125
|
-
"""
|
|
126
|
-
Turns this channel on or off.
|
|
127
|
-
|
|
128
|
-
Args:
|
|
129
|
-
on: True to turn channel on, false to turn it off.
|
|
130
|
-
"""
|
|
131
|
-
request = dto.ChannelOn(
|
|
132
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
133
|
-
device=self.illuminator.device.device_address,
|
|
134
|
-
axis=self.channel_number,
|
|
135
|
-
on=on,
|
|
136
|
-
)
|
|
137
|
-
call("illuminator/on", request)
|
|
138
|
-
|
|
139
|
-
async def set_on_async(
|
|
140
|
-
self,
|
|
141
|
-
on: bool
|
|
142
|
-
) -> None:
|
|
143
|
-
"""
|
|
144
|
-
Turns this channel on or off.
|
|
145
|
-
|
|
146
|
-
Args:
|
|
147
|
-
on: True to turn channel on, false to turn it off.
|
|
148
|
-
"""
|
|
149
|
-
request = dto.ChannelOn(
|
|
150
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
151
|
-
device=self.illuminator.device.device_address,
|
|
152
|
-
axis=self.channel_number,
|
|
153
|
-
on=on,
|
|
154
|
-
)
|
|
155
|
-
await call_async("illuminator/on", request)
|
|
156
|
-
|
|
157
|
-
def is_on(
|
|
158
|
-
self
|
|
159
|
-
) -> bool:
|
|
160
|
-
"""
|
|
161
|
-
Checks if this channel is on.
|
|
162
|
-
|
|
163
|
-
Returns:
|
|
164
|
-
True if channel is on, false otherwise.
|
|
165
|
-
"""
|
|
166
|
-
request = dto.AxisEmptyRequest(
|
|
167
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
168
|
-
device=self.illuminator.device.device_address,
|
|
169
|
-
axis=self.channel_number,
|
|
170
|
-
)
|
|
171
|
-
response = call(
|
|
172
|
-
"illuminator/is_on",
|
|
173
|
-
request,
|
|
174
|
-
dto.BoolResponse.from_binary)
|
|
175
|
-
return response.value
|
|
176
|
-
|
|
177
|
-
async def is_on_async(
|
|
178
|
-
self
|
|
179
|
-
) -> bool:
|
|
180
|
-
"""
|
|
181
|
-
Checks if this channel is on.
|
|
182
|
-
|
|
183
|
-
Returns:
|
|
184
|
-
True if channel is on, false otherwise.
|
|
185
|
-
"""
|
|
186
|
-
request = dto.AxisEmptyRequest(
|
|
187
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
188
|
-
device=self.illuminator.device.device_address,
|
|
189
|
-
axis=self.channel_number,
|
|
190
|
-
)
|
|
191
|
-
response = await call_async(
|
|
192
|
-
"illuminator/is_on",
|
|
193
|
-
request,
|
|
194
|
-
dto.BoolResponse.from_binary)
|
|
195
|
-
return response.value
|
|
196
|
-
|
|
197
|
-
def set_intensity(
|
|
198
|
-
self,
|
|
199
|
-
intensity: float
|
|
200
|
-
) -> None:
|
|
201
|
-
"""
|
|
202
|
-
Sets channel intensity as a fraction of the maximum flux.
|
|
203
|
-
|
|
204
|
-
Args:
|
|
205
|
-
intensity: Fraction of intensity to set (between 0 and 1).
|
|
206
|
-
"""
|
|
207
|
-
request = dto.ChannelSetIntensity(
|
|
208
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
209
|
-
device=self.illuminator.device.device_address,
|
|
210
|
-
axis=self.channel_number,
|
|
211
|
-
intensity=intensity,
|
|
212
|
-
)
|
|
213
|
-
call("illuminator/set_intensity", request)
|
|
214
|
-
|
|
215
|
-
async def set_intensity_async(
|
|
216
|
-
self,
|
|
217
|
-
intensity: float
|
|
218
|
-
) -> None:
|
|
219
|
-
"""
|
|
220
|
-
Sets channel intensity as a fraction of the maximum flux.
|
|
221
|
-
|
|
222
|
-
Args:
|
|
223
|
-
intensity: Fraction of intensity to set (between 0 and 1).
|
|
224
|
-
"""
|
|
225
|
-
request = dto.ChannelSetIntensity(
|
|
226
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
227
|
-
device=self.illuminator.device.device_address,
|
|
228
|
-
axis=self.channel_number,
|
|
229
|
-
intensity=intensity,
|
|
230
|
-
)
|
|
231
|
-
await call_async("illuminator/set_intensity", request)
|
|
232
|
-
|
|
233
|
-
def get_intensity(
|
|
234
|
-
self
|
|
235
|
-
) -> float:
|
|
236
|
-
"""
|
|
237
|
-
Gets the current intensity of this channel.
|
|
238
|
-
|
|
239
|
-
Returns:
|
|
240
|
-
Current intensity as fraction of maximum flux.
|
|
241
|
-
"""
|
|
242
|
-
request = dto.AxisEmptyRequest(
|
|
243
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
244
|
-
device=self.illuminator.device.device_address,
|
|
245
|
-
axis=self.channel_number,
|
|
246
|
-
)
|
|
247
|
-
response = call(
|
|
248
|
-
"illuminator/get_intensity",
|
|
249
|
-
request,
|
|
250
|
-
dto.DoubleResponse.from_binary)
|
|
251
|
-
return response.value
|
|
252
|
-
|
|
253
|
-
async def get_intensity_async(
|
|
254
|
-
self
|
|
255
|
-
) -> float:
|
|
256
|
-
"""
|
|
257
|
-
Gets the current intensity of this channel.
|
|
258
|
-
|
|
259
|
-
Returns:
|
|
260
|
-
Current intensity as fraction of maximum flux.
|
|
261
|
-
"""
|
|
262
|
-
request = dto.AxisEmptyRequest(
|
|
263
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
264
|
-
device=self.illuminator.device.device_address,
|
|
265
|
-
axis=self.channel_number,
|
|
266
|
-
)
|
|
267
|
-
response = await call_async(
|
|
268
|
-
"illuminator/get_intensity",
|
|
269
|
-
request,
|
|
270
|
-
dto.DoubleResponse.from_binary)
|
|
271
|
-
return response.value
|
|
272
|
-
|
|
273
|
-
def generic_command(
|
|
274
|
-
self,
|
|
275
|
-
command: str,
|
|
276
|
-
check_errors: bool = True,
|
|
277
|
-
timeout: int = 0
|
|
278
|
-
) -> Response:
|
|
279
|
-
"""
|
|
280
|
-
Sends a generic ASCII command to this channel.
|
|
281
|
-
For more information refer to: [ASCII Protocol Manual](https://www.zaber.com/protocol-manual#topic_commands).
|
|
282
|
-
|
|
283
|
-
Args:
|
|
284
|
-
command: Command and its parameters.
|
|
285
|
-
check_errors: Controls whether to throw an exception when the device rejects the command.
|
|
286
|
-
timeout: The timeout, in milliseconds, for a device to respond to the command.
|
|
287
|
-
Overrides the connection default request timeout.
|
|
288
|
-
|
|
289
|
-
Returns:
|
|
290
|
-
A response to the command.
|
|
291
|
-
"""
|
|
292
|
-
request = dto.GenericCommandRequest(
|
|
293
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
294
|
-
device=self.illuminator.device.device_address,
|
|
295
|
-
axis=self.channel_number,
|
|
296
|
-
command=command,
|
|
297
|
-
check_errors=check_errors,
|
|
298
|
-
timeout=timeout,
|
|
299
|
-
)
|
|
300
|
-
response = call(
|
|
301
|
-
"interface/generic_command",
|
|
302
|
-
request,
|
|
303
|
-
Response.from_binary)
|
|
304
|
-
return response
|
|
305
|
-
|
|
306
|
-
async def generic_command_async(
|
|
307
|
-
self,
|
|
308
|
-
command: str,
|
|
309
|
-
check_errors: bool = True,
|
|
310
|
-
timeout: int = 0
|
|
311
|
-
) -> Response:
|
|
312
|
-
"""
|
|
313
|
-
Sends a generic ASCII command to this channel.
|
|
314
|
-
For more information refer to: [ASCII Protocol Manual](https://www.zaber.com/protocol-manual#topic_commands).
|
|
315
|
-
|
|
316
|
-
Args:
|
|
317
|
-
command: Command and its parameters.
|
|
318
|
-
check_errors: Controls whether to throw an exception when the device rejects the command.
|
|
319
|
-
timeout: The timeout, in milliseconds, for a device to respond to the command.
|
|
320
|
-
Overrides the connection default request timeout.
|
|
321
|
-
|
|
322
|
-
Returns:
|
|
323
|
-
A response to the command.
|
|
324
|
-
"""
|
|
325
|
-
request = dto.GenericCommandRequest(
|
|
326
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
327
|
-
device=self.illuminator.device.device_address,
|
|
328
|
-
axis=self.channel_number,
|
|
329
|
-
command=command,
|
|
330
|
-
check_errors=check_errors,
|
|
331
|
-
timeout=timeout,
|
|
332
|
-
)
|
|
333
|
-
response = await call_async(
|
|
334
|
-
"interface/generic_command",
|
|
335
|
-
request,
|
|
336
|
-
Response.from_binary)
|
|
337
|
-
return response
|
|
338
|
-
|
|
339
|
-
def generic_command_multi_response(
|
|
340
|
-
self,
|
|
341
|
-
command: str,
|
|
342
|
-
check_errors: bool = True,
|
|
343
|
-
timeout: int = 0
|
|
344
|
-
) -> List[Response]:
|
|
345
|
-
"""
|
|
346
|
-
Sends a generic ASCII command to this channel and expects multiple responses.
|
|
347
|
-
Responses are returned in order of arrival.
|
|
348
|
-
For more information refer to: [ASCII Protocol Manual](https://www.zaber.com/protocol-manual#topic_commands).
|
|
349
|
-
|
|
350
|
-
Args:
|
|
351
|
-
command: Command and its parameters.
|
|
352
|
-
check_errors: Controls whether to throw an exception when a device rejects the command.
|
|
353
|
-
timeout: The timeout, in milliseconds, for a device to respond to the command.
|
|
354
|
-
Overrides the connection default request timeout.
|
|
355
|
-
|
|
356
|
-
Returns:
|
|
357
|
-
All responses to the command.
|
|
358
|
-
"""
|
|
359
|
-
request = dto.GenericCommandRequest(
|
|
360
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
361
|
-
device=self.illuminator.device.device_address,
|
|
362
|
-
axis=self.channel_number,
|
|
363
|
-
command=command,
|
|
364
|
-
check_errors=check_errors,
|
|
365
|
-
timeout=timeout,
|
|
366
|
-
)
|
|
367
|
-
response = call(
|
|
368
|
-
"interface/generic_command_multi_response",
|
|
369
|
-
request,
|
|
370
|
-
dto.GenericCommandResponseCollection.from_binary)
|
|
371
|
-
return response.responses
|
|
372
|
-
|
|
373
|
-
async def generic_command_multi_response_async(
|
|
374
|
-
self,
|
|
375
|
-
command: str,
|
|
376
|
-
check_errors: bool = True,
|
|
377
|
-
timeout: int = 0
|
|
378
|
-
) -> List[Response]:
|
|
379
|
-
"""
|
|
380
|
-
Sends a generic ASCII command to this channel and expects multiple responses.
|
|
381
|
-
Responses are returned in order of arrival.
|
|
382
|
-
For more information refer to: [ASCII Protocol Manual](https://www.zaber.com/protocol-manual#topic_commands).
|
|
383
|
-
|
|
384
|
-
Args:
|
|
385
|
-
command: Command and its parameters.
|
|
386
|
-
check_errors: Controls whether to throw an exception when a device rejects the command.
|
|
387
|
-
timeout: The timeout, in milliseconds, for a device to respond to the command.
|
|
388
|
-
Overrides the connection default request timeout.
|
|
389
|
-
|
|
390
|
-
Returns:
|
|
391
|
-
All responses to the command.
|
|
392
|
-
"""
|
|
393
|
-
request = dto.GenericCommandRequest(
|
|
394
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
395
|
-
device=self.illuminator.device.device_address,
|
|
396
|
-
axis=self.channel_number,
|
|
397
|
-
command=command,
|
|
398
|
-
check_errors=check_errors,
|
|
399
|
-
timeout=timeout,
|
|
400
|
-
)
|
|
401
|
-
response = await call_async(
|
|
402
|
-
"interface/generic_command_multi_response",
|
|
403
|
-
request,
|
|
404
|
-
dto.GenericCommandResponseCollection.from_binary)
|
|
405
|
-
return response.responses
|
|
406
|
-
|
|
407
|
-
def generic_command_no_response(
|
|
408
|
-
self,
|
|
409
|
-
command: str
|
|
410
|
-
) -> None:
|
|
411
|
-
"""
|
|
412
|
-
Sends a generic ASCII command to this channel without expecting a response and without adding a message ID
|
|
413
|
-
For more information refer to: [ASCII Protocol Manual](https://www.zaber.com/protocol-manual#topic_commands).
|
|
414
|
-
|
|
415
|
-
Args:
|
|
416
|
-
command: Command and its parameters.
|
|
417
|
-
"""
|
|
418
|
-
request = dto.GenericCommandRequest(
|
|
419
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
420
|
-
device=self.illuminator.device.device_address,
|
|
421
|
-
axis=self.channel_number,
|
|
422
|
-
command=command,
|
|
423
|
-
)
|
|
424
|
-
call("interface/generic_command_no_response", request)
|
|
425
|
-
|
|
426
|
-
async def generic_command_no_response_async(
|
|
427
|
-
self,
|
|
428
|
-
command: str
|
|
429
|
-
) -> None:
|
|
430
|
-
"""
|
|
431
|
-
Sends a generic ASCII command to this channel without expecting a response and without adding a message ID
|
|
432
|
-
For more information refer to: [ASCII Protocol Manual](https://www.zaber.com/protocol-manual#topic_commands).
|
|
433
|
-
|
|
434
|
-
Args:
|
|
435
|
-
command: Command and its parameters.
|
|
436
|
-
"""
|
|
437
|
-
request = dto.GenericCommandRequest(
|
|
438
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
439
|
-
device=self.illuminator.device.device_address,
|
|
440
|
-
axis=self.channel_number,
|
|
441
|
-
command=command,
|
|
442
|
-
)
|
|
443
|
-
await call_async("interface/generic_command_no_response", request)
|
|
444
|
-
|
|
445
|
-
def get_state(
|
|
446
|
-
self
|
|
447
|
-
) -> str:
|
|
448
|
-
"""
|
|
449
|
-
Returns a serialization of the current channel state that can be saved and reapplied.
|
|
450
|
-
|
|
451
|
-
Returns:
|
|
452
|
-
A serialization of the current state of the channel.
|
|
453
|
-
"""
|
|
454
|
-
request = dto.AxisEmptyRequest(
|
|
455
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
456
|
-
device=self.illuminator.device.device_address,
|
|
457
|
-
axis=self.channel_number,
|
|
458
|
-
)
|
|
459
|
-
response = call(
|
|
460
|
-
"device/get_state",
|
|
461
|
-
request,
|
|
462
|
-
dto.StringResponse.from_binary)
|
|
463
|
-
return response.value
|
|
464
|
-
|
|
465
|
-
async def get_state_async(
|
|
466
|
-
self
|
|
467
|
-
) -> str:
|
|
468
|
-
"""
|
|
469
|
-
Returns a serialization of the current channel state that can be saved and reapplied.
|
|
470
|
-
|
|
471
|
-
Returns:
|
|
472
|
-
A serialization of the current state of the channel.
|
|
473
|
-
"""
|
|
474
|
-
request = dto.AxisEmptyRequest(
|
|
475
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
476
|
-
device=self.illuminator.device.device_address,
|
|
477
|
-
axis=self.channel_number,
|
|
478
|
-
)
|
|
479
|
-
response = await call_async(
|
|
480
|
-
"device/get_state",
|
|
481
|
-
request,
|
|
482
|
-
dto.StringResponse.from_binary)
|
|
483
|
-
return response.value
|
|
484
|
-
|
|
485
|
-
def set_state(
|
|
486
|
-
self,
|
|
487
|
-
state: str
|
|
488
|
-
) -> SetStateAxisResponse:
|
|
489
|
-
"""
|
|
490
|
-
Applies a saved state to this channel.
|
|
491
|
-
|
|
492
|
-
Args:
|
|
493
|
-
state: The state object to apply to this channel.
|
|
494
|
-
|
|
495
|
-
Returns:
|
|
496
|
-
Reports of any issues that were handled, but caused the state to not be exactly restored.
|
|
497
|
-
"""
|
|
498
|
-
request = dto.SetStateRequest(
|
|
499
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
500
|
-
device=self.illuminator.device.device_address,
|
|
501
|
-
axis=self.channel_number,
|
|
502
|
-
state=state,
|
|
503
|
-
)
|
|
504
|
-
response = call(
|
|
505
|
-
"device/set_axis_state",
|
|
506
|
-
request,
|
|
507
|
-
SetStateAxisResponse.from_binary)
|
|
508
|
-
return response
|
|
509
|
-
|
|
510
|
-
async def set_state_async(
|
|
511
|
-
self,
|
|
512
|
-
state: str
|
|
513
|
-
) -> SetStateAxisResponse:
|
|
514
|
-
"""
|
|
515
|
-
Applies a saved state to this channel.
|
|
516
|
-
|
|
517
|
-
Args:
|
|
518
|
-
state: The state object to apply to this channel.
|
|
519
|
-
|
|
520
|
-
Returns:
|
|
521
|
-
Reports of any issues that were handled, but caused the state to not be exactly restored.
|
|
522
|
-
"""
|
|
523
|
-
request = dto.SetStateRequest(
|
|
524
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
525
|
-
device=self.illuminator.device.device_address,
|
|
526
|
-
axis=self.channel_number,
|
|
527
|
-
state=state,
|
|
528
|
-
)
|
|
529
|
-
response = await call_async(
|
|
530
|
-
"device/set_axis_state",
|
|
531
|
-
request,
|
|
532
|
-
SetStateAxisResponse.from_binary)
|
|
533
|
-
return response
|
|
534
|
-
|
|
535
|
-
def can_set_state(
|
|
536
|
-
self,
|
|
537
|
-
state: str,
|
|
538
|
-
firmware_version: Optional[FirmwareVersion] = None
|
|
539
|
-
) -> Optional[str]:
|
|
540
|
-
"""
|
|
541
|
-
Checks if a state can be applied to this channel.
|
|
542
|
-
This only covers exceptions that can be determined statically such as mismatches of ID or version,
|
|
543
|
-
the process of applying the state can still fail when running.
|
|
544
|
-
|
|
545
|
-
Args:
|
|
546
|
-
state: The state object to check against.
|
|
547
|
-
firmware_version: The firmware version of the device to apply the state to.
|
|
548
|
-
Use this to ensure the state will still be compatible after an update.
|
|
549
|
-
|
|
550
|
-
Returns:
|
|
551
|
-
An explanation of why this state cannot be set to this channel.
|
|
552
|
-
"""
|
|
553
|
-
request = dto.CanSetStateRequest(
|
|
554
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
555
|
-
device=self.illuminator.device.device_address,
|
|
556
|
-
axis=self.channel_number,
|
|
557
|
-
state=state,
|
|
558
|
-
firmware_version=firmware_version,
|
|
559
|
-
)
|
|
560
|
-
response = call(
|
|
561
|
-
"device/can_set_axis_state",
|
|
562
|
-
request,
|
|
563
|
-
dto.CanSetStateAxisResponse.from_binary)
|
|
564
|
-
return response.error
|
|
565
|
-
|
|
566
|
-
async def can_set_state_async(
|
|
567
|
-
self,
|
|
568
|
-
state: str,
|
|
569
|
-
firmware_version: Optional[FirmwareVersion] = None
|
|
570
|
-
) -> Optional[str]:
|
|
571
|
-
"""
|
|
572
|
-
Checks if a state can be applied to this channel.
|
|
573
|
-
This only covers exceptions that can be determined statically such as mismatches of ID or version,
|
|
574
|
-
the process of applying the state can still fail when running.
|
|
575
|
-
|
|
576
|
-
Args:
|
|
577
|
-
state: The state object to check against.
|
|
578
|
-
firmware_version: The firmware version of the device to apply the state to.
|
|
579
|
-
Use this to ensure the state will still be compatible after an update.
|
|
580
|
-
|
|
581
|
-
Returns:
|
|
582
|
-
An explanation of why this state cannot be set to this channel.
|
|
583
|
-
"""
|
|
584
|
-
request = dto.CanSetStateRequest(
|
|
585
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
586
|
-
device=self.illuminator.device.device_address,
|
|
587
|
-
axis=self.channel_number,
|
|
588
|
-
state=state,
|
|
589
|
-
firmware_version=firmware_version,
|
|
590
|
-
)
|
|
591
|
-
response = await call_async(
|
|
592
|
-
"device/can_set_axis_state",
|
|
593
|
-
request,
|
|
594
|
-
dto.CanSetStateAxisResponse.from_binary)
|
|
595
|
-
return response.error
|
|
596
|
-
|
|
597
|
-
def __repr__(
|
|
598
|
-
self
|
|
599
|
-
) -> str:
|
|
600
|
-
"""
|
|
601
|
-
Returns a string that represents the channel.
|
|
602
|
-
|
|
603
|
-
Returns:
|
|
604
|
-
A string that represents the channel.
|
|
605
|
-
"""
|
|
606
|
-
request = dto.AxisToStringRequest(
|
|
607
|
-
interface_id=self.illuminator.device.connection.interface_id,
|
|
608
|
-
device=self.illuminator.device.device_address,
|
|
609
|
-
axis=self.channel_number,
|
|
610
|
-
type_override="Channel",
|
|
611
|
-
)
|
|
612
|
-
response = call_sync(
|
|
613
|
-
"device/axis_to_string",
|
|
614
|
-
request,
|
|
615
|
-
dto.StringResponse.from_binary)
|
|
616
|
-
return response.value
|
|
1
|
+
# ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
|
|
2
|
+
# ============== DO NOT EDIT DIRECTLY ============== #
|
|
3
|
+
|
|
4
|
+
from typing import TYPE_CHECKING, List, Optional
|
|
5
|
+
from ..call import call, call_async, call_sync
|
|
6
|
+
from ..dto import requests as dto
|
|
7
|
+
from ..dto.ascii.response import Response
|
|
8
|
+
from ..ascii import Axis, AxisSettings, AxisStorage, Warnings
|
|
9
|
+
from ..dto.ascii.set_state_axis_response import SetStateAxisResponse
|
|
10
|
+
from ..dto.firmware_version import FirmwareVersion
|
|
11
|
+
|
|
12
|
+
if TYPE_CHECKING:
|
|
13
|
+
from .illuminator import Illuminator
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class IlluminatorChannel:
|
|
17
|
+
"""
|
|
18
|
+
Use to control a channel (LED lamp) on an illuminator.
|
|
19
|
+
Requires at least Firmware 7.09.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
@property
|
|
23
|
+
def illuminator(self) -> 'Illuminator':
|
|
24
|
+
"""
|
|
25
|
+
Illuminator of this channel.
|
|
26
|
+
"""
|
|
27
|
+
return self._illuminator
|
|
28
|
+
|
|
29
|
+
@property
|
|
30
|
+
def channel_number(self) -> int:
|
|
31
|
+
"""
|
|
32
|
+
The channel number identifies the channel on the illuminator.
|
|
33
|
+
"""
|
|
34
|
+
return self._channel_number
|
|
35
|
+
|
|
36
|
+
@property
|
|
37
|
+
def settings(self) -> AxisSettings:
|
|
38
|
+
"""
|
|
39
|
+
Settings and properties of this channel.
|
|
40
|
+
"""
|
|
41
|
+
return self._settings
|
|
42
|
+
|
|
43
|
+
@property
|
|
44
|
+
def storage(self) -> AxisStorage:
|
|
45
|
+
"""
|
|
46
|
+
Key-value storage of this channel.
|
|
47
|
+
"""
|
|
48
|
+
return self._storage
|
|
49
|
+
|
|
50
|
+
@property
|
|
51
|
+
def warnings(self) -> Warnings:
|
|
52
|
+
"""
|
|
53
|
+
Warnings and faults of this channel.
|
|
54
|
+
"""
|
|
55
|
+
return self._warnings
|
|
56
|
+
|
|
57
|
+
def __init__(self, illuminator: 'Illuminator', channel_number: int):
|
|
58
|
+
self._illuminator: 'Illuminator' = illuminator
|
|
59
|
+
self._channel_number: int = channel_number
|
|
60
|
+
self._axis: Axis = Axis(illuminator.device, channel_number)
|
|
61
|
+
self._settings: AxisSettings = AxisSettings(self._axis)
|
|
62
|
+
self._storage: AxisStorage = AxisStorage(self._axis)
|
|
63
|
+
self._warnings: Warnings = Warnings(illuminator.device, channel_number)
|
|
64
|
+
|
|
65
|
+
def on(
|
|
66
|
+
self
|
|
67
|
+
) -> None:
|
|
68
|
+
"""
|
|
69
|
+
Turns this channel on.
|
|
70
|
+
"""
|
|
71
|
+
request = dto.ChannelOn(
|
|
72
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
73
|
+
device=self.illuminator.device.device_address,
|
|
74
|
+
axis=self.channel_number,
|
|
75
|
+
on=True,
|
|
76
|
+
)
|
|
77
|
+
call("illuminator/on", request)
|
|
78
|
+
|
|
79
|
+
async def on_async(
|
|
80
|
+
self
|
|
81
|
+
) -> None:
|
|
82
|
+
"""
|
|
83
|
+
Turns this channel on.
|
|
84
|
+
"""
|
|
85
|
+
request = dto.ChannelOn(
|
|
86
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
87
|
+
device=self.illuminator.device.device_address,
|
|
88
|
+
axis=self.channel_number,
|
|
89
|
+
on=True,
|
|
90
|
+
)
|
|
91
|
+
await call_async("illuminator/on", request)
|
|
92
|
+
|
|
93
|
+
def off(
|
|
94
|
+
self
|
|
95
|
+
) -> None:
|
|
96
|
+
"""
|
|
97
|
+
Turns this channel off.
|
|
98
|
+
"""
|
|
99
|
+
request = dto.ChannelOn(
|
|
100
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
101
|
+
device=self.illuminator.device.device_address,
|
|
102
|
+
axis=self.channel_number,
|
|
103
|
+
on=False,
|
|
104
|
+
)
|
|
105
|
+
call("illuminator/on", request)
|
|
106
|
+
|
|
107
|
+
async def off_async(
|
|
108
|
+
self
|
|
109
|
+
) -> None:
|
|
110
|
+
"""
|
|
111
|
+
Turns this channel off.
|
|
112
|
+
"""
|
|
113
|
+
request = dto.ChannelOn(
|
|
114
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
115
|
+
device=self.illuminator.device.device_address,
|
|
116
|
+
axis=self.channel_number,
|
|
117
|
+
on=False,
|
|
118
|
+
)
|
|
119
|
+
await call_async("illuminator/on", request)
|
|
120
|
+
|
|
121
|
+
def set_on(
|
|
122
|
+
self,
|
|
123
|
+
on: bool
|
|
124
|
+
) -> None:
|
|
125
|
+
"""
|
|
126
|
+
Turns this channel on or off.
|
|
127
|
+
|
|
128
|
+
Args:
|
|
129
|
+
on: True to turn channel on, false to turn it off.
|
|
130
|
+
"""
|
|
131
|
+
request = dto.ChannelOn(
|
|
132
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
133
|
+
device=self.illuminator.device.device_address,
|
|
134
|
+
axis=self.channel_number,
|
|
135
|
+
on=on,
|
|
136
|
+
)
|
|
137
|
+
call("illuminator/on", request)
|
|
138
|
+
|
|
139
|
+
async def set_on_async(
|
|
140
|
+
self,
|
|
141
|
+
on: bool
|
|
142
|
+
) -> None:
|
|
143
|
+
"""
|
|
144
|
+
Turns this channel on or off.
|
|
145
|
+
|
|
146
|
+
Args:
|
|
147
|
+
on: True to turn channel on, false to turn it off.
|
|
148
|
+
"""
|
|
149
|
+
request = dto.ChannelOn(
|
|
150
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
151
|
+
device=self.illuminator.device.device_address,
|
|
152
|
+
axis=self.channel_number,
|
|
153
|
+
on=on,
|
|
154
|
+
)
|
|
155
|
+
await call_async("illuminator/on", request)
|
|
156
|
+
|
|
157
|
+
def is_on(
|
|
158
|
+
self
|
|
159
|
+
) -> bool:
|
|
160
|
+
"""
|
|
161
|
+
Checks if this channel is on.
|
|
162
|
+
|
|
163
|
+
Returns:
|
|
164
|
+
True if channel is on, false otherwise.
|
|
165
|
+
"""
|
|
166
|
+
request = dto.AxisEmptyRequest(
|
|
167
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
168
|
+
device=self.illuminator.device.device_address,
|
|
169
|
+
axis=self.channel_number,
|
|
170
|
+
)
|
|
171
|
+
response = call(
|
|
172
|
+
"illuminator/is_on",
|
|
173
|
+
request,
|
|
174
|
+
dto.BoolResponse.from_binary)
|
|
175
|
+
return response.value
|
|
176
|
+
|
|
177
|
+
async def is_on_async(
|
|
178
|
+
self
|
|
179
|
+
) -> bool:
|
|
180
|
+
"""
|
|
181
|
+
Checks if this channel is on.
|
|
182
|
+
|
|
183
|
+
Returns:
|
|
184
|
+
True if channel is on, false otherwise.
|
|
185
|
+
"""
|
|
186
|
+
request = dto.AxisEmptyRequest(
|
|
187
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
188
|
+
device=self.illuminator.device.device_address,
|
|
189
|
+
axis=self.channel_number,
|
|
190
|
+
)
|
|
191
|
+
response = await call_async(
|
|
192
|
+
"illuminator/is_on",
|
|
193
|
+
request,
|
|
194
|
+
dto.BoolResponse.from_binary)
|
|
195
|
+
return response.value
|
|
196
|
+
|
|
197
|
+
def set_intensity(
|
|
198
|
+
self,
|
|
199
|
+
intensity: float
|
|
200
|
+
) -> None:
|
|
201
|
+
"""
|
|
202
|
+
Sets channel intensity as a fraction of the maximum flux.
|
|
203
|
+
|
|
204
|
+
Args:
|
|
205
|
+
intensity: Fraction of intensity to set (between 0 and 1).
|
|
206
|
+
"""
|
|
207
|
+
request = dto.ChannelSetIntensity(
|
|
208
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
209
|
+
device=self.illuminator.device.device_address,
|
|
210
|
+
axis=self.channel_number,
|
|
211
|
+
intensity=intensity,
|
|
212
|
+
)
|
|
213
|
+
call("illuminator/set_intensity", request)
|
|
214
|
+
|
|
215
|
+
async def set_intensity_async(
|
|
216
|
+
self,
|
|
217
|
+
intensity: float
|
|
218
|
+
) -> None:
|
|
219
|
+
"""
|
|
220
|
+
Sets channel intensity as a fraction of the maximum flux.
|
|
221
|
+
|
|
222
|
+
Args:
|
|
223
|
+
intensity: Fraction of intensity to set (between 0 and 1).
|
|
224
|
+
"""
|
|
225
|
+
request = dto.ChannelSetIntensity(
|
|
226
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
227
|
+
device=self.illuminator.device.device_address,
|
|
228
|
+
axis=self.channel_number,
|
|
229
|
+
intensity=intensity,
|
|
230
|
+
)
|
|
231
|
+
await call_async("illuminator/set_intensity", request)
|
|
232
|
+
|
|
233
|
+
def get_intensity(
|
|
234
|
+
self
|
|
235
|
+
) -> float:
|
|
236
|
+
"""
|
|
237
|
+
Gets the current intensity of this channel.
|
|
238
|
+
|
|
239
|
+
Returns:
|
|
240
|
+
Current intensity as fraction of maximum flux.
|
|
241
|
+
"""
|
|
242
|
+
request = dto.AxisEmptyRequest(
|
|
243
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
244
|
+
device=self.illuminator.device.device_address,
|
|
245
|
+
axis=self.channel_number,
|
|
246
|
+
)
|
|
247
|
+
response = call(
|
|
248
|
+
"illuminator/get_intensity",
|
|
249
|
+
request,
|
|
250
|
+
dto.DoubleResponse.from_binary)
|
|
251
|
+
return response.value
|
|
252
|
+
|
|
253
|
+
async def get_intensity_async(
|
|
254
|
+
self
|
|
255
|
+
) -> float:
|
|
256
|
+
"""
|
|
257
|
+
Gets the current intensity of this channel.
|
|
258
|
+
|
|
259
|
+
Returns:
|
|
260
|
+
Current intensity as fraction of maximum flux.
|
|
261
|
+
"""
|
|
262
|
+
request = dto.AxisEmptyRequest(
|
|
263
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
264
|
+
device=self.illuminator.device.device_address,
|
|
265
|
+
axis=self.channel_number,
|
|
266
|
+
)
|
|
267
|
+
response = await call_async(
|
|
268
|
+
"illuminator/get_intensity",
|
|
269
|
+
request,
|
|
270
|
+
dto.DoubleResponse.from_binary)
|
|
271
|
+
return response.value
|
|
272
|
+
|
|
273
|
+
def generic_command(
|
|
274
|
+
self,
|
|
275
|
+
command: str,
|
|
276
|
+
check_errors: bool = True,
|
|
277
|
+
timeout: int = 0
|
|
278
|
+
) -> Response:
|
|
279
|
+
"""
|
|
280
|
+
Sends a generic ASCII command to this channel.
|
|
281
|
+
For more information refer to: [ASCII Protocol Manual](https://www.zaber.com/protocol-manual#topic_commands).
|
|
282
|
+
|
|
283
|
+
Args:
|
|
284
|
+
command: Command and its parameters.
|
|
285
|
+
check_errors: Controls whether to throw an exception when the device rejects the command.
|
|
286
|
+
timeout: The timeout, in milliseconds, for a device to respond to the command.
|
|
287
|
+
Overrides the connection default request timeout.
|
|
288
|
+
|
|
289
|
+
Returns:
|
|
290
|
+
A response to the command.
|
|
291
|
+
"""
|
|
292
|
+
request = dto.GenericCommandRequest(
|
|
293
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
294
|
+
device=self.illuminator.device.device_address,
|
|
295
|
+
axis=self.channel_number,
|
|
296
|
+
command=command,
|
|
297
|
+
check_errors=check_errors,
|
|
298
|
+
timeout=timeout,
|
|
299
|
+
)
|
|
300
|
+
response = call(
|
|
301
|
+
"interface/generic_command",
|
|
302
|
+
request,
|
|
303
|
+
Response.from_binary)
|
|
304
|
+
return response
|
|
305
|
+
|
|
306
|
+
async def generic_command_async(
|
|
307
|
+
self,
|
|
308
|
+
command: str,
|
|
309
|
+
check_errors: bool = True,
|
|
310
|
+
timeout: int = 0
|
|
311
|
+
) -> Response:
|
|
312
|
+
"""
|
|
313
|
+
Sends a generic ASCII command to this channel.
|
|
314
|
+
For more information refer to: [ASCII Protocol Manual](https://www.zaber.com/protocol-manual#topic_commands).
|
|
315
|
+
|
|
316
|
+
Args:
|
|
317
|
+
command: Command and its parameters.
|
|
318
|
+
check_errors: Controls whether to throw an exception when the device rejects the command.
|
|
319
|
+
timeout: The timeout, in milliseconds, for a device to respond to the command.
|
|
320
|
+
Overrides the connection default request timeout.
|
|
321
|
+
|
|
322
|
+
Returns:
|
|
323
|
+
A response to the command.
|
|
324
|
+
"""
|
|
325
|
+
request = dto.GenericCommandRequest(
|
|
326
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
327
|
+
device=self.illuminator.device.device_address,
|
|
328
|
+
axis=self.channel_number,
|
|
329
|
+
command=command,
|
|
330
|
+
check_errors=check_errors,
|
|
331
|
+
timeout=timeout,
|
|
332
|
+
)
|
|
333
|
+
response = await call_async(
|
|
334
|
+
"interface/generic_command",
|
|
335
|
+
request,
|
|
336
|
+
Response.from_binary)
|
|
337
|
+
return response
|
|
338
|
+
|
|
339
|
+
def generic_command_multi_response(
|
|
340
|
+
self,
|
|
341
|
+
command: str,
|
|
342
|
+
check_errors: bool = True,
|
|
343
|
+
timeout: int = 0
|
|
344
|
+
) -> List[Response]:
|
|
345
|
+
"""
|
|
346
|
+
Sends a generic ASCII command to this channel and expects multiple responses.
|
|
347
|
+
Responses are returned in order of arrival.
|
|
348
|
+
For more information refer to: [ASCII Protocol Manual](https://www.zaber.com/protocol-manual#topic_commands).
|
|
349
|
+
|
|
350
|
+
Args:
|
|
351
|
+
command: Command and its parameters.
|
|
352
|
+
check_errors: Controls whether to throw an exception when a device rejects the command.
|
|
353
|
+
timeout: The timeout, in milliseconds, for a device to respond to the command.
|
|
354
|
+
Overrides the connection default request timeout.
|
|
355
|
+
|
|
356
|
+
Returns:
|
|
357
|
+
All responses to the command.
|
|
358
|
+
"""
|
|
359
|
+
request = dto.GenericCommandRequest(
|
|
360
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
361
|
+
device=self.illuminator.device.device_address,
|
|
362
|
+
axis=self.channel_number,
|
|
363
|
+
command=command,
|
|
364
|
+
check_errors=check_errors,
|
|
365
|
+
timeout=timeout,
|
|
366
|
+
)
|
|
367
|
+
response = call(
|
|
368
|
+
"interface/generic_command_multi_response",
|
|
369
|
+
request,
|
|
370
|
+
dto.GenericCommandResponseCollection.from_binary)
|
|
371
|
+
return response.responses
|
|
372
|
+
|
|
373
|
+
async def generic_command_multi_response_async(
|
|
374
|
+
self,
|
|
375
|
+
command: str,
|
|
376
|
+
check_errors: bool = True,
|
|
377
|
+
timeout: int = 0
|
|
378
|
+
) -> List[Response]:
|
|
379
|
+
"""
|
|
380
|
+
Sends a generic ASCII command to this channel and expects multiple responses.
|
|
381
|
+
Responses are returned in order of arrival.
|
|
382
|
+
For more information refer to: [ASCII Protocol Manual](https://www.zaber.com/protocol-manual#topic_commands).
|
|
383
|
+
|
|
384
|
+
Args:
|
|
385
|
+
command: Command and its parameters.
|
|
386
|
+
check_errors: Controls whether to throw an exception when a device rejects the command.
|
|
387
|
+
timeout: The timeout, in milliseconds, for a device to respond to the command.
|
|
388
|
+
Overrides the connection default request timeout.
|
|
389
|
+
|
|
390
|
+
Returns:
|
|
391
|
+
All responses to the command.
|
|
392
|
+
"""
|
|
393
|
+
request = dto.GenericCommandRequest(
|
|
394
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
395
|
+
device=self.illuminator.device.device_address,
|
|
396
|
+
axis=self.channel_number,
|
|
397
|
+
command=command,
|
|
398
|
+
check_errors=check_errors,
|
|
399
|
+
timeout=timeout,
|
|
400
|
+
)
|
|
401
|
+
response = await call_async(
|
|
402
|
+
"interface/generic_command_multi_response",
|
|
403
|
+
request,
|
|
404
|
+
dto.GenericCommandResponseCollection.from_binary)
|
|
405
|
+
return response.responses
|
|
406
|
+
|
|
407
|
+
def generic_command_no_response(
|
|
408
|
+
self,
|
|
409
|
+
command: str
|
|
410
|
+
) -> None:
|
|
411
|
+
"""
|
|
412
|
+
Sends a generic ASCII command to this channel without expecting a response and without adding a message ID
|
|
413
|
+
For more information refer to: [ASCII Protocol Manual](https://www.zaber.com/protocol-manual#topic_commands).
|
|
414
|
+
|
|
415
|
+
Args:
|
|
416
|
+
command: Command and its parameters.
|
|
417
|
+
"""
|
|
418
|
+
request = dto.GenericCommandRequest(
|
|
419
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
420
|
+
device=self.illuminator.device.device_address,
|
|
421
|
+
axis=self.channel_number,
|
|
422
|
+
command=command,
|
|
423
|
+
)
|
|
424
|
+
call("interface/generic_command_no_response", request)
|
|
425
|
+
|
|
426
|
+
async def generic_command_no_response_async(
|
|
427
|
+
self,
|
|
428
|
+
command: str
|
|
429
|
+
) -> None:
|
|
430
|
+
"""
|
|
431
|
+
Sends a generic ASCII command to this channel without expecting a response and without adding a message ID
|
|
432
|
+
For more information refer to: [ASCII Protocol Manual](https://www.zaber.com/protocol-manual#topic_commands).
|
|
433
|
+
|
|
434
|
+
Args:
|
|
435
|
+
command: Command and its parameters.
|
|
436
|
+
"""
|
|
437
|
+
request = dto.GenericCommandRequest(
|
|
438
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
439
|
+
device=self.illuminator.device.device_address,
|
|
440
|
+
axis=self.channel_number,
|
|
441
|
+
command=command,
|
|
442
|
+
)
|
|
443
|
+
await call_async("interface/generic_command_no_response", request)
|
|
444
|
+
|
|
445
|
+
def get_state(
|
|
446
|
+
self
|
|
447
|
+
) -> str:
|
|
448
|
+
"""
|
|
449
|
+
Returns a serialization of the current channel state that can be saved and reapplied.
|
|
450
|
+
|
|
451
|
+
Returns:
|
|
452
|
+
A serialization of the current state of the channel.
|
|
453
|
+
"""
|
|
454
|
+
request = dto.AxisEmptyRequest(
|
|
455
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
456
|
+
device=self.illuminator.device.device_address,
|
|
457
|
+
axis=self.channel_number,
|
|
458
|
+
)
|
|
459
|
+
response = call(
|
|
460
|
+
"device/get_state",
|
|
461
|
+
request,
|
|
462
|
+
dto.StringResponse.from_binary)
|
|
463
|
+
return response.value
|
|
464
|
+
|
|
465
|
+
async def get_state_async(
|
|
466
|
+
self
|
|
467
|
+
) -> str:
|
|
468
|
+
"""
|
|
469
|
+
Returns a serialization of the current channel state that can be saved and reapplied.
|
|
470
|
+
|
|
471
|
+
Returns:
|
|
472
|
+
A serialization of the current state of the channel.
|
|
473
|
+
"""
|
|
474
|
+
request = dto.AxisEmptyRequest(
|
|
475
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
476
|
+
device=self.illuminator.device.device_address,
|
|
477
|
+
axis=self.channel_number,
|
|
478
|
+
)
|
|
479
|
+
response = await call_async(
|
|
480
|
+
"device/get_state",
|
|
481
|
+
request,
|
|
482
|
+
dto.StringResponse.from_binary)
|
|
483
|
+
return response.value
|
|
484
|
+
|
|
485
|
+
def set_state(
|
|
486
|
+
self,
|
|
487
|
+
state: str
|
|
488
|
+
) -> SetStateAxisResponse:
|
|
489
|
+
"""
|
|
490
|
+
Applies a saved state to this channel.
|
|
491
|
+
|
|
492
|
+
Args:
|
|
493
|
+
state: The state object to apply to this channel.
|
|
494
|
+
|
|
495
|
+
Returns:
|
|
496
|
+
Reports of any issues that were handled, but caused the state to not be exactly restored.
|
|
497
|
+
"""
|
|
498
|
+
request = dto.SetStateRequest(
|
|
499
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
500
|
+
device=self.illuminator.device.device_address,
|
|
501
|
+
axis=self.channel_number,
|
|
502
|
+
state=state,
|
|
503
|
+
)
|
|
504
|
+
response = call(
|
|
505
|
+
"device/set_axis_state",
|
|
506
|
+
request,
|
|
507
|
+
SetStateAxisResponse.from_binary)
|
|
508
|
+
return response
|
|
509
|
+
|
|
510
|
+
async def set_state_async(
|
|
511
|
+
self,
|
|
512
|
+
state: str
|
|
513
|
+
) -> SetStateAxisResponse:
|
|
514
|
+
"""
|
|
515
|
+
Applies a saved state to this channel.
|
|
516
|
+
|
|
517
|
+
Args:
|
|
518
|
+
state: The state object to apply to this channel.
|
|
519
|
+
|
|
520
|
+
Returns:
|
|
521
|
+
Reports of any issues that were handled, but caused the state to not be exactly restored.
|
|
522
|
+
"""
|
|
523
|
+
request = dto.SetStateRequest(
|
|
524
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
525
|
+
device=self.illuminator.device.device_address,
|
|
526
|
+
axis=self.channel_number,
|
|
527
|
+
state=state,
|
|
528
|
+
)
|
|
529
|
+
response = await call_async(
|
|
530
|
+
"device/set_axis_state",
|
|
531
|
+
request,
|
|
532
|
+
SetStateAxisResponse.from_binary)
|
|
533
|
+
return response
|
|
534
|
+
|
|
535
|
+
def can_set_state(
|
|
536
|
+
self,
|
|
537
|
+
state: str,
|
|
538
|
+
firmware_version: Optional[FirmwareVersion] = None
|
|
539
|
+
) -> Optional[str]:
|
|
540
|
+
"""
|
|
541
|
+
Checks if a state can be applied to this channel.
|
|
542
|
+
This only covers exceptions that can be determined statically such as mismatches of ID or version,
|
|
543
|
+
the process of applying the state can still fail when running.
|
|
544
|
+
|
|
545
|
+
Args:
|
|
546
|
+
state: The state object to check against.
|
|
547
|
+
firmware_version: The firmware version of the device to apply the state to.
|
|
548
|
+
Use this to ensure the state will still be compatible after an update.
|
|
549
|
+
|
|
550
|
+
Returns:
|
|
551
|
+
An explanation of why this state cannot be set to this channel.
|
|
552
|
+
"""
|
|
553
|
+
request = dto.CanSetStateRequest(
|
|
554
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
555
|
+
device=self.illuminator.device.device_address,
|
|
556
|
+
axis=self.channel_number,
|
|
557
|
+
state=state,
|
|
558
|
+
firmware_version=firmware_version,
|
|
559
|
+
)
|
|
560
|
+
response = call(
|
|
561
|
+
"device/can_set_axis_state",
|
|
562
|
+
request,
|
|
563
|
+
dto.CanSetStateAxisResponse.from_binary)
|
|
564
|
+
return response.error
|
|
565
|
+
|
|
566
|
+
async def can_set_state_async(
|
|
567
|
+
self,
|
|
568
|
+
state: str,
|
|
569
|
+
firmware_version: Optional[FirmwareVersion] = None
|
|
570
|
+
) -> Optional[str]:
|
|
571
|
+
"""
|
|
572
|
+
Checks if a state can be applied to this channel.
|
|
573
|
+
This only covers exceptions that can be determined statically such as mismatches of ID or version,
|
|
574
|
+
the process of applying the state can still fail when running.
|
|
575
|
+
|
|
576
|
+
Args:
|
|
577
|
+
state: The state object to check against.
|
|
578
|
+
firmware_version: The firmware version of the device to apply the state to.
|
|
579
|
+
Use this to ensure the state will still be compatible after an update.
|
|
580
|
+
|
|
581
|
+
Returns:
|
|
582
|
+
An explanation of why this state cannot be set to this channel.
|
|
583
|
+
"""
|
|
584
|
+
request = dto.CanSetStateRequest(
|
|
585
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
586
|
+
device=self.illuminator.device.device_address,
|
|
587
|
+
axis=self.channel_number,
|
|
588
|
+
state=state,
|
|
589
|
+
firmware_version=firmware_version,
|
|
590
|
+
)
|
|
591
|
+
response = await call_async(
|
|
592
|
+
"device/can_set_axis_state",
|
|
593
|
+
request,
|
|
594
|
+
dto.CanSetStateAxisResponse.from_binary)
|
|
595
|
+
return response.error
|
|
596
|
+
|
|
597
|
+
def __repr__(
|
|
598
|
+
self
|
|
599
|
+
) -> str:
|
|
600
|
+
"""
|
|
601
|
+
Returns a string that represents the channel.
|
|
602
|
+
|
|
603
|
+
Returns:
|
|
604
|
+
A string that represents the channel.
|
|
605
|
+
"""
|
|
606
|
+
request = dto.AxisToStringRequest(
|
|
607
|
+
interface_id=self.illuminator.device.connection.interface_id,
|
|
608
|
+
device=self.illuminator.device.device_address,
|
|
609
|
+
axis=self.channel_number,
|
|
610
|
+
type_override="Channel",
|
|
611
|
+
)
|
|
612
|
+
response = call_sync(
|
|
613
|
+
"device/axis_to_string",
|
|
614
|
+
request,
|
|
615
|
+
dto.StringResponse.from_binary)
|
|
616
|
+
return response.value
|