zaber-motion 7.13.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 -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 +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.13.0.dist-info → zaber_motion-7.14.0.dist-info}/LICENSE.txt +2119 -2119
- {zaber_motion-7.13.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.13.0.dist-info/RECORD +0 -494
- {zaber_motion-7.13.0.dist-info → zaber_motion-7.14.0.dist-info}/WHEEL +0 -0
- {zaber_motion-7.13.0.dist-info → zaber_motion-7.14.0.dist-info}/top_level.txt +0 -0
zaber_motion/binary/device.py
CHANGED
|
@@ -1,924 +1,924 @@
|
|
|
1
|
-
# ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
|
|
2
|
-
# ============== DO NOT EDIT DIRECTLY ============== #
|
|
3
|
-
|
|
4
|
-
# pylint: disable=too-many-arguments
|
|
5
|
-
|
|
6
|
-
from typing import TYPE_CHECKING, Optional
|
|
7
|
-
from ..call import call, call_async, call_sync
|
|
8
|
-
|
|
9
|
-
from ..dto import requests as dto
|
|
10
|
-
from ..dto.binary.binary_settings import BinarySettings
|
|
11
|
-
from ..dto.binary.device_identity import DeviceIdentity
|
|
12
|
-
from .device_settings import DeviceSettings
|
|
13
|
-
from ..dto.binary.command_code import CommandCode
|
|
14
|
-
from ..dto.binary.message import Message
|
|
15
|
-
from ..units import UnitsAndLiterals, Units, LengthUnits, VelocityUnits
|
|
16
|
-
from ..dto.binary.device_type import DeviceType
|
|
17
|
-
from ..dto.firmware_version import FirmwareVersion
|
|
18
|
-
|
|
19
|
-
if TYPE_CHECKING:
|
|
20
|
-
from .connection import Connection
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class Device:
|
|
24
|
-
"""
|
|
25
|
-
Represents a device using the binary protocol.
|
|
26
|
-
"""
|
|
27
|
-
|
|
28
|
-
DEFAULT_MOVEMENT_TIMEOUT = 60
|
|
29
|
-
"""
|
|
30
|
-
Default timeout for move commands in seconds.
|
|
31
|
-
"""
|
|
32
|
-
|
|
33
|
-
@property
|
|
34
|
-
def connection(self) -> 'Connection':
|
|
35
|
-
"""
|
|
36
|
-
Connection of this device.
|
|
37
|
-
"""
|
|
38
|
-
return self._connection
|
|
39
|
-
|
|
40
|
-
@property
|
|
41
|
-
def settings(self) -> DeviceSettings:
|
|
42
|
-
"""
|
|
43
|
-
Settings and properties of this axis.
|
|
44
|
-
"""
|
|
45
|
-
return self._settings
|
|
46
|
-
|
|
47
|
-
@property
|
|
48
|
-
def device_address(self) -> int:
|
|
49
|
-
"""
|
|
50
|
-
The device address uniquely identifies the device on the connection.
|
|
51
|
-
It can be configured or automatically assigned by the renumber command.
|
|
52
|
-
"""
|
|
53
|
-
return self._device_address
|
|
54
|
-
|
|
55
|
-
@property
|
|
56
|
-
def identity(self) -> DeviceIdentity:
|
|
57
|
-
"""
|
|
58
|
-
Identity of the device.
|
|
59
|
-
"""
|
|
60
|
-
return self.__retrieve_identity()
|
|
61
|
-
|
|
62
|
-
@property
|
|
63
|
-
def is_identified(self) -> bool:
|
|
64
|
-
"""
|
|
65
|
-
Indicates whether or not the device has been identified.
|
|
66
|
-
"""
|
|
67
|
-
return self.__retrieve_is_identified()
|
|
68
|
-
|
|
69
|
-
@property
|
|
70
|
-
def device_id(self) -> int:
|
|
71
|
-
"""
|
|
72
|
-
Unique ID of the device hardware.
|
|
73
|
-
"""
|
|
74
|
-
return self.identity.device_id
|
|
75
|
-
|
|
76
|
-
@property
|
|
77
|
-
def serial_number(self) -> int:
|
|
78
|
-
"""
|
|
79
|
-
Serial number of the device.
|
|
80
|
-
Requires at least Firmware 6.15 for devices or 6.24 for peripherals.
|
|
81
|
-
"""
|
|
82
|
-
return self.identity.serial_number
|
|
83
|
-
|
|
84
|
-
@property
|
|
85
|
-
def name(self) -> str:
|
|
86
|
-
"""
|
|
87
|
-
Name of the product.
|
|
88
|
-
"""
|
|
89
|
-
return self.identity.name
|
|
90
|
-
|
|
91
|
-
@property
|
|
92
|
-
def firmware_version(self) -> FirmwareVersion:
|
|
93
|
-
"""
|
|
94
|
-
Version of the firmware.
|
|
95
|
-
"""
|
|
96
|
-
return self.identity.firmware_version
|
|
97
|
-
|
|
98
|
-
@property
|
|
99
|
-
def is_peripheral(self) -> bool:
|
|
100
|
-
"""
|
|
101
|
-
Indicates whether the device is a peripheral or part of an integrated device.
|
|
102
|
-
"""
|
|
103
|
-
return self.identity.is_peripheral
|
|
104
|
-
|
|
105
|
-
@property
|
|
106
|
-
def peripheral_id(self) -> int:
|
|
107
|
-
"""
|
|
108
|
-
Unique ID of the peripheral hardware.
|
|
109
|
-
"""
|
|
110
|
-
return self.identity.peripheral_id
|
|
111
|
-
|
|
112
|
-
@property
|
|
113
|
-
def peripheral_name(self) -> str:
|
|
114
|
-
"""
|
|
115
|
-
Name of the peripheral hardware.
|
|
116
|
-
"""
|
|
117
|
-
return self.identity.peripheral_name
|
|
118
|
-
|
|
119
|
-
@property
|
|
120
|
-
def device_type(self) -> DeviceType:
|
|
121
|
-
"""
|
|
122
|
-
Determines the type of an device and units it accepts.
|
|
123
|
-
"""
|
|
124
|
-
return self.identity.device_type
|
|
125
|
-
|
|
126
|
-
def __init__(self, connection: 'Connection', device_address: int):
|
|
127
|
-
self._connection: 'Connection' = connection
|
|
128
|
-
self._settings: DeviceSettings = DeviceSettings(self)
|
|
129
|
-
self._device_address: int = device_address
|
|
130
|
-
|
|
131
|
-
def generic_command(
|
|
132
|
-
self,
|
|
133
|
-
command: CommandCode,
|
|
134
|
-
data: int = 0,
|
|
135
|
-
timeout: float = 0.0,
|
|
136
|
-
check_errors: bool = True
|
|
137
|
-
) -> Message:
|
|
138
|
-
"""
|
|
139
|
-
Sends a generic Binary command to this device.
|
|
140
|
-
For more information please refer to the
|
|
141
|
-
[Binary Protocol Manual](https://www.zaber.com/protocol-manual?protocol=Binary#topic_quick_command_reference).
|
|
142
|
-
|
|
143
|
-
Args:
|
|
144
|
-
command: Command to send.
|
|
145
|
-
data: Optional data argument to the command. Defaults to zero.
|
|
146
|
-
timeout: Number of seconds to wait for a response from the device. 0 or negative defaults to 0.5s.
|
|
147
|
-
check_errors: Controls whether to throw an exception when the device rejects the command.
|
|
148
|
-
|
|
149
|
-
Returns:
|
|
150
|
-
A response to the command.
|
|
151
|
-
"""
|
|
152
|
-
request = dto.GenericBinaryRequest(
|
|
153
|
-
interface_id=self.connection.interface_id,
|
|
154
|
-
device=self.device_address,
|
|
155
|
-
command=command,
|
|
156
|
-
data=data,
|
|
157
|
-
timeout=timeout,
|
|
158
|
-
check_errors=check_errors,
|
|
159
|
-
)
|
|
160
|
-
response = call(
|
|
161
|
-
"binary/interface/generic_command",
|
|
162
|
-
request,
|
|
163
|
-
Message.from_binary)
|
|
164
|
-
return response
|
|
165
|
-
|
|
166
|
-
async def generic_command_async(
|
|
167
|
-
self,
|
|
168
|
-
command: CommandCode,
|
|
169
|
-
data: int = 0,
|
|
170
|
-
timeout: float = 0.0,
|
|
171
|
-
check_errors: bool = True
|
|
172
|
-
) -> Message:
|
|
173
|
-
"""
|
|
174
|
-
Sends a generic Binary command to this device.
|
|
175
|
-
For more information please refer to the
|
|
176
|
-
[Binary Protocol Manual](https://www.zaber.com/protocol-manual?protocol=Binary#topic_quick_command_reference).
|
|
177
|
-
|
|
178
|
-
Args:
|
|
179
|
-
command: Command to send.
|
|
180
|
-
data: Optional data argument to the command. Defaults to zero.
|
|
181
|
-
timeout: Number of seconds to wait for a response from the device. 0 or negative defaults to 0.5s.
|
|
182
|
-
check_errors: Controls whether to throw an exception when the device rejects the command.
|
|
183
|
-
|
|
184
|
-
Returns:
|
|
185
|
-
A response to the command.
|
|
186
|
-
"""
|
|
187
|
-
request = dto.GenericBinaryRequest(
|
|
188
|
-
interface_id=self.connection.interface_id,
|
|
189
|
-
device=self.device_address,
|
|
190
|
-
command=command,
|
|
191
|
-
data=data,
|
|
192
|
-
timeout=timeout,
|
|
193
|
-
check_errors=check_errors,
|
|
194
|
-
)
|
|
195
|
-
response = await call_async(
|
|
196
|
-
"binary/interface/generic_command",
|
|
197
|
-
request,
|
|
198
|
-
Message.from_binary)
|
|
199
|
-
return response
|
|
200
|
-
|
|
201
|
-
def generic_command_no_response(
|
|
202
|
-
self,
|
|
203
|
-
command: CommandCode,
|
|
204
|
-
data: int = 0
|
|
205
|
-
) -> None:
|
|
206
|
-
"""
|
|
207
|
-
Sends a generic Binary command to this device without expecting a response.
|
|
208
|
-
For more information please refer to the
|
|
209
|
-
[Binary Protocol Manual](https://www.zaber.com/protocol-manual?protocol=Binary#topic_quick_command_reference).
|
|
210
|
-
|
|
211
|
-
Args:
|
|
212
|
-
command: Command to send.
|
|
213
|
-
data: Optional data argument to the command. Defaults to zero.
|
|
214
|
-
"""
|
|
215
|
-
request = dto.GenericBinaryRequest(
|
|
216
|
-
interface_id=self.connection.interface_id,
|
|
217
|
-
device=self.device_address,
|
|
218
|
-
command=command,
|
|
219
|
-
data=data,
|
|
220
|
-
)
|
|
221
|
-
call("binary/interface/generic_command_no_response", request)
|
|
222
|
-
|
|
223
|
-
async def generic_command_no_response_async(
|
|
224
|
-
self,
|
|
225
|
-
command: CommandCode,
|
|
226
|
-
data: int = 0
|
|
227
|
-
) -> None:
|
|
228
|
-
"""
|
|
229
|
-
Sends a generic Binary command to this device without expecting a response.
|
|
230
|
-
For more information please refer to the
|
|
231
|
-
[Binary Protocol Manual](https://www.zaber.com/protocol-manual?protocol=Binary#topic_quick_command_reference).
|
|
232
|
-
|
|
233
|
-
Args:
|
|
234
|
-
command: Command to send.
|
|
235
|
-
data: Optional data argument to the command. Defaults to zero.
|
|
236
|
-
"""
|
|
237
|
-
request = dto.GenericBinaryRequest(
|
|
238
|
-
interface_id=self.connection.interface_id,
|
|
239
|
-
device=self.device_address,
|
|
240
|
-
command=command,
|
|
241
|
-
data=data,
|
|
242
|
-
)
|
|
243
|
-
await call_async("binary/interface/generic_command_no_response", request)
|
|
244
|
-
|
|
245
|
-
def generic_command_with_units(
|
|
246
|
-
self,
|
|
247
|
-
command: CommandCode,
|
|
248
|
-
data: float = 0,
|
|
249
|
-
from_unit: UnitsAndLiterals = Units.NATIVE,
|
|
250
|
-
to_unit: UnitsAndLiterals = Units.NATIVE,
|
|
251
|
-
timeout: float = 0.0
|
|
252
|
-
) -> float:
|
|
253
|
-
"""
|
|
254
|
-
Sends a generic Binary command to this device with unit conversions for both sent data and retrieved data.
|
|
255
|
-
|
|
256
|
-
Args:
|
|
257
|
-
command: Command to send.
|
|
258
|
-
data: Data argument to the command. Defaults to zero.
|
|
259
|
-
from_unit: Unit to convert sent data from.
|
|
260
|
-
to_unit: Unit to convert retrieved data to.
|
|
261
|
-
timeout: Number of seconds to wait for a response from the device. 0 or negative defaults to 0.5s.
|
|
262
|
-
|
|
263
|
-
Returns:
|
|
264
|
-
Data that has been converted to the provided unit.
|
|
265
|
-
"""
|
|
266
|
-
request = dto.BinaryGenericWithUnitsRequest(
|
|
267
|
-
interface_id=self.connection.interface_id,
|
|
268
|
-
device=self.device_address,
|
|
269
|
-
command=command,
|
|
270
|
-
data=data,
|
|
271
|
-
from_unit=from_unit,
|
|
272
|
-
to_unit=to_unit,
|
|
273
|
-
timeout=timeout,
|
|
274
|
-
)
|
|
275
|
-
response = call(
|
|
276
|
-
"binary/device/generic_command_with_units",
|
|
277
|
-
request,
|
|
278
|
-
dto.DoubleResponse.from_binary)
|
|
279
|
-
return response.value
|
|
280
|
-
|
|
281
|
-
async def generic_command_with_units_async(
|
|
282
|
-
self,
|
|
283
|
-
command: CommandCode,
|
|
284
|
-
data: float = 0,
|
|
285
|
-
from_unit: UnitsAndLiterals = Units.NATIVE,
|
|
286
|
-
to_unit: UnitsAndLiterals = Units.NATIVE,
|
|
287
|
-
timeout: float = 0.0
|
|
288
|
-
) -> float:
|
|
289
|
-
"""
|
|
290
|
-
Sends a generic Binary command to this device with unit conversions for both sent data and retrieved data.
|
|
291
|
-
|
|
292
|
-
Args:
|
|
293
|
-
command: Command to send.
|
|
294
|
-
data: Data argument to the command. Defaults to zero.
|
|
295
|
-
from_unit: Unit to convert sent data from.
|
|
296
|
-
to_unit: Unit to convert retrieved data to.
|
|
297
|
-
timeout: Number of seconds to wait for a response from the device. 0 or negative defaults to 0.5s.
|
|
298
|
-
|
|
299
|
-
Returns:
|
|
300
|
-
Data that has been converted to the provided unit.
|
|
301
|
-
"""
|
|
302
|
-
request = dto.BinaryGenericWithUnitsRequest(
|
|
303
|
-
interface_id=self.connection.interface_id,
|
|
304
|
-
device=self.device_address,
|
|
305
|
-
command=command,
|
|
306
|
-
data=data,
|
|
307
|
-
from_unit=from_unit,
|
|
308
|
-
to_unit=to_unit,
|
|
309
|
-
timeout=timeout,
|
|
310
|
-
)
|
|
311
|
-
response = await call_async(
|
|
312
|
-
"binary/device/generic_command_with_units",
|
|
313
|
-
request,
|
|
314
|
-
dto.DoubleResponse.from_binary)
|
|
315
|
-
return response.value
|
|
316
|
-
|
|
317
|
-
def home(
|
|
318
|
-
self,
|
|
319
|
-
unit: LengthUnits = Units.NATIVE,
|
|
320
|
-
timeout: float = DEFAULT_MOVEMENT_TIMEOUT
|
|
321
|
-
) -> float:
|
|
322
|
-
"""
|
|
323
|
-
Homes device. Device returns to its homing position.
|
|
324
|
-
|
|
325
|
-
Args:
|
|
326
|
-
unit: Unit to convert returned position to.
|
|
327
|
-
timeout: Number of seconds to wait for response from the device chain (defaults to 60s).
|
|
328
|
-
|
|
329
|
-
Returns:
|
|
330
|
-
Current position that has been converted to the provided unit.
|
|
331
|
-
"""
|
|
332
|
-
request = dto.BinaryDeviceHomeRequest(
|
|
333
|
-
interface_id=self.connection.interface_id,
|
|
334
|
-
device=self.device_address,
|
|
335
|
-
unit=unit,
|
|
336
|
-
timeout=timeout,
|
|
337
|
-
)
|
|
338
|
-
response = call(
|
|
339
|
-
"binary/device/home",
|
|
340
|
-
request,
|
|
341
|
-
dto.DoubleResponse.from_binary)
|
|
342
|
-
return response.value
|
|
343
|
-
|
|
344
|
-
async def home_async(
|
|
345
|
-
self,
|
|
346
|
-
unit: LengthUnits = Units.NATIVE,
|
|
347
|
-
timeout: float = DEFAULT_MOVEMENT_TIMEOUT
|
|
348
|
-
) -> float:
|
|
349
|
-
"""
|
|
350
|
-
Homes device. Device returns to its homing position.
|
|
351
|
-
|
|
352
|
-
Args:
|
|
353
|
-
unit: Unit to convert returned position to.
|
|
354
|
-
timeout: Number of seconds to wait for response from the device chain (defaults to 60s).
|
|
355
|
-
|
|
356
|
-
Returns:
|
|
357
|
-
Current position that has been converted to the provided unit.
|
|
358
|
-
"""
|
|
359
|
-
request = dto.BinaryDeviceHomeRequest(
|
|
360
|
-
interface_id=self.connection.interface_id,
|
|
361
|
-
device=self.device_address,
|
|
362
|
-
unit=unit,
|
|
363
|
-
timeout=timeout,
|
|
364
|
-
)
|
|
365
|
-
response = await call_async(
|
|
366
|
-
"binary/device/home",
|
|
367
|
-
request,
|
|
368
|
-
dto.DoubleResponse.from_binary)
|
|
369
|
-
return response.value
|
|
370
|
-
|
|
371
|
-
def stop(
|
|
372
|
-
self,
|
|
373
|
-
unit: LengthUnits = Units.NATIVE,
|
|
374
|
-
timeout: float = DEFAULT_MOVEMENT_TIMEOUT
|
|
375
|
-
) -> float:
|
|
376
|
-
"""
|
|
377
|
-
Stops ongoing device movement. Decelerates until zero speed.
|
|
378
|
-
|
|
379
|
-
Args:
|
|
380
|
-
unit: Unit to convert returned position to.
|
|
381
|
-
timeout: Number of seconds to wait for response from the device chain (defaults to 60s).
|
|
382
|
-
|
|
383
|
-
Returns:
|
|
384
|
-
Current position that has been converted to the provided unit.
|
|
385
|
-
"""
|
|
386
|
-
request = dto.BinaryDeviceStopRequest(
|
|
387
|
-
interface_id=self.connection.interface_id,
|
|
388
|
-
device=self.device_address,
|
|
389
|
-
unit=unit,
|
|
390
|
-
timeout=timeout,
|
|
391
|
-
)
|
|
392
|
-
response = call(
|
|
393
|
-
"binary/device/stop",
|
|
394
|
-
request,
|
|
395
|
-
dto.DoubleResponse.from_binary)
|
|
396
|
-
return response.value
|
|
397
|
-
|
|
398
|
-
async def stop_async(
|
|
399
|
-
self,
|
|
400
|
-
unit: LengthUnits = Units.NATIVE,
|
|
401
|
-
timeout: float = DEFAULT_MOVEMENT_TIMEOUT
|
|
402
|
-
) -> float:
|
|
403
|
-
"""
|
|
404
|
-
Stops ongoing device movement. Decelerates until zero speed.
|
|
405
|
-
|
|
406
|
-
Args:
|
|
407
|
-
unit: Unit to convert returned position to.
|
|
408
|
-
timeout: Number of seconds to wait for response from the device chain (defaults to 60s).
|
|
409
|
-
|
|
410
|
-
Returns:
|
|
411
|
-
Current position that has been converted to the provided unit.
|
|
412
|
-
"""
|
|
413
|
-
request = dto.BinaryDeviceStopRequest(
|
|
414
|
-
interface_id=self.connection.interface_id,
|
|
415
|
-
device=self.device_address,
|
|
416
|
-
unit=unit,
|
|
417
|
-
timeout=timeout,
|
|
418
|
-
)
|
|
419
|
-
response = await call_async(
|
|
420
|
-
"binary/device/stop",
|
|
421
|
-
request,
|
|
422
|
-
dto.DoubleResponse.from_binary)
|
|
423
|
-
return response.value
|
|
424
|
-
|
|
425
|
-
def move_absolute(
|
|
426
|
-
self,
|
|
427
|
-
position: float,
|
|
428
|
-
unit: LengthUnits = Units.NATIVE,
|
|
429
|
-
timeout: float = DEFAULT_MOVEMENT_TIMEOUT
|
|
430
|
-
) -> float:
|
|
431
|
-
"""
|
|
432
|
-
Move device to absolute position.
|
|
433
|
-
|
|
434
|
-
Args:
|
|
435
|
-
position: Absolute position.
|
|
436
|
-
unit: Unit for the provided position as well as position returned by the device.
|
|
437
|
-
timeout: Number of seconds to wait for response from the device chain (defaults to 60s).
|
|
438
|
-
|
|
439
|
-
Returns:
|
|
440
|
-
Current position that has been converted to the provided unit.
|
|
441
|
-
"""
|
|
442
|
-
request = dto.BinaryDeviceMoveRequest(
|
|
443
|
-
interface_id=self.connection.interface_id,
|
|
444
|
-
device=self.device_address,
|
|
445
|
-
type=dto.AxisMoveType.ABS,
|
|
446
|
-
arg=position,
|
|
447
|
-
unit=unit,
|
|
448
|
-
timeout=timeout,
|
|
449
|
-
)
|
|
450
|
-
response = call(
|
|
451
|
-
"binary/device/move",
|
|
452
|
-
request,
|
|
453
|
-
dto.DoubleResponse.from_binary)
|
|
454
|
-
return response.value
|
|
455
|
-
|
|
456
|
-
async def move_absolute_async(
|
|
457
|
-
self,
|
|
458
|
-
position: float,
|
|
459
|
-
unit: LengthUnits = Units.NATIVE,
|
|
460
|
-
timeout: float = DEFAULT_MOVEMENT_TIMEOUT
|
|
461
|
-
) -> float:
|
|
462
|
-
"""
|
|
463
|
-
Move device to absolute position.
|
|
464
|
-
|
|
465
|
-
Args:
|
|
466
|
-
position: Absolute position.
|
|
467
|
-
unit: Unit for the provided position as well as position returned by the device.
|
|
468
|
-
timeout: Number of seconds to wait for response from the device chain (defaults to 60s).
|
|
469
|
-
|
|
470
|
-
Returns:
|
|
471
|
-
Current position that has been converted to the provided unit.
|
|
472
|
-
"""
|
|
473
|
-
request = dto.BinaryDeviceMoveRequest(
|
|
474
|
-
interface_id=self.connection.interface_id,
|
|
475
|
-
device=self.device_address,
|
|
476
|
-
type=dto.AxisMoveType.ABS,
|
|
477
|
-
arg=position,
|
|
478
|
-
unit=unit,
|
|
479
|
-
timeout=timeout,
|
|
480
|
-
)
|
|
481
|
-
response = await call_async(
|
|
482
|
-
"binary/device/move",
|
|
483
|
-
request,
|
|
484
|
-
dto.DoubleResponse.from_binary)
|
|
485
|
-
return response.value
|
|
486
|
-
|
|
487
|
-
def move_relative(
|
|
488
|
-
self,
|
|
489
|
-
position: float,
|
|
490
|
-
unit: LengthUnits = Units.NATIVE,
|
|
491
|
-
timeout: float = DEFAULT_MOVEMENT_TIMEOUT
|
|
492
|
-
) -> float:
|
|
493
|
-
"""
|
|
494
|
-
Move device to position relative to current position.
|
|
495
|
-
|
|
496
|
-
Args:
|
|
497
|
-
position: Relative position.
|
|
498
|
-
unit: Unit for the provided position as well as position returned by the device.
|
|
499
|
-
timeout: Number of seconds to wait for response from the device chain (defaults to 60s).
|
|
500
|
-
|
|
501
|
-
Returns:
|
|
502
|
-
Current position that has been converted to the provided unit.
|
|
503
|
-
"""
|
|
504
|
-
request = dto.BinaryDeviceMoveRequest(
|
|
505
|
-
interface_id=self.connection.interface_id,
|
|
506
|
-
device=self.device_address,
|
|
507
|
-
type=dto.AxisMoveType.REL,
|
|
508
|
-
arg=position,
|
|
509
|
-
unit=unit,
|
|
510
|
-
timeout=timeout,
|
|
511
|
-
)
|
|
512
|
-
response = call(
|
|
513
|
-
"binary/device/move",
|
|
514
|
-
request,
|
|
515
|
-
dto.DoubleResponse.from_binary)
|
|
516
|
-
return response.value
|
|
517
|
-
|
|
518
|
-
async def move_relative_async(
|
|
519
|
-
self,
|
|
520
|
-
position: float,
|
|
521
|
-
unit: LengthUnits = Units.NATIVE,
|
|
522
|
-
timeout: float = DEFAULT_MOVEMENT_TIMEOUT
|
|
523
|
-
) -> float:
|
|
524
|
-
"""
|
|
525
|
-
Move device to position relative to current position.
|
|
526
|
-
|
|
527
|
-
Args:
|
|
528
|
-
position: Relative position.
|
|
529
|
-
unit: Unit for the provided position as well as position returned by the device.
|
|
530
|
-
timeout: Number of seconds to wait for response from the device chain (defaults to 60s).
|
|
531
|
-
|
|
532
|
-
Returns:
|
|
533
|
-
Current position that has been converted to the provided unit.
|
|
534
|
-
"""
|
|
535
|
-
request = dto.BinaryDeviceMoveRequest(
|
|
536
|
-
interface_id=self.connection.interface_id,
|
|
537
|
-
device=self.device_address,
|
|
538
|
-
type=dto.AxisMoveType.REL,
|
|
539
|
-
arg=position,
|
|
540
|
-
unit=unit,
|
|
541
|
-
timeout=timeout,
|
|
542
|
-
)
|
|
543
|
-
response = await call_async(
|
|
544
|
-
"binary/device/move",
|
|
545
|
-
request,
|
|
546
|
-
dto.DoubleResponse.from_binary)
|
|
547
|
-
return response.value
|
|
548
|
-
|
|
549
|
-
def move_velocity(
|
|
550
|
-
self,
|
|
551
|
-
velocity: float,
|
|
552
|
-
unit: VelocityUnits = Units.NATIVE
|
|
553
|
-
) -> float:
|
|
554
|
-
"""
|
|
555
|
-
Begins to move device at specified speed.
|
|
556
|
-
|
|
557
|
-
Args:
|
|
558
|
-
velocity: Movement velocity.
|
|
559
|
-
unit: Unit to convert returned velocity to.
|
|
560
|
-
|
|
561
|
-
Returns:
|
|
562
|
-
Device velocity that has been converted to the provided unit.
|
|
563
|
-
"""
|
|
564
|
-
request = dto.BinaryDeviceMoveRequest(
|
|
565
|
-
interface_id=self.connection.interface_id,
|
|
566
|
-
device=self.device_address,
|
|
567
|
-
type=dto.AxisMoveType.VEL,
|
|
568
|
-
arg=velocity,
|
|
569
|
-
unit=unit,
|
|
570
|
-
)
|
|
571
|
-
response = call(
|
|
572
|
-
"binary/device/move",
|
|
573
|
-
request,
|
|
574
|
-
dto.DoubleResponse.from_binary)
|
|
575
|
-
return response.value
|
|
576
|
-
|
|
577
|
-
async def move_velocity_async(
|
|
578
|
-
self,
|
|
579
|
-
velocity: float,
|
|
580
|
-
unit: VelocityUnits = Units.NATIVE
|
|
581
|
-
) -> float:
|
|
582
|
-
"""
|
|
583
|
-
Begins to move device at specified speed.
|
|
584
|
-
|
|
585
|
-
Args:
|
|
586
|
-
velocity: Movement velocity.
|
|
587
|
-
unit: Unit to convert returned velocity to.
|
|
588
|
-
|
|
589
|
-
Returns:
|
|
590
|
-
Device velocity that has been converted to the provided unit.
|
|
591
|
-
"""
|
|
592
|
-
request = dto.BinaryDeviceMoveRequest(
|
|
593
|
-
interface_id=self.connection.interface_id,
|
|
594
|
-
device=self.device_address,
|
|
595
|
-
type=dto.AxisMoveType.VEL,
|
|
596
|
-
arg=velocity,
|
|
597
|
-
unit=unit,
|
|
598
|
-
)
|
|
599
|
-
response = await call_async(
|
|
600
|
-
"binary/device/move",
|
|
601
|
-
request,
|
|
602
|
-
dto.DoubleResponse.from_binary)
|
|
603
|
-
return response.value
|
|
604
|
-
|
|
605
|
-
def wait_until_idle(
|
|
606
|
-
self
|
|
607
|
-
) -> None:
|
|
608
|
-
"""
|
|
609
|
-
Waits until device stops moving.
|
|
610
|
-
"""
|
|
611
|
-
request = dto.DeviceEmptyRequest(
|
|
612
|
-
interface_id=self.connection.interface_id,
|
|
613
|
-
device=self.device_address,
|
|
614
|
-
)
|
|
615
|
-
call("binary/device/wait_until_idle", request)
|
|
616
|
-
|
|
617
|
-
async def wait_until_idle_async(
|
|
618
|
-
self
|
|
619
|
-
) -> None:
|
|
620
|
-
"""
|
|
621
|
-
Waits until device stops moving.
|
|
622
|
-
"""
|
|
623
|
-
request = dto.DeviceEmptyRequest(
|
|
624
|
-
interface_id=self.connection.interface_id,
|
|
625
|
-
device=self.device_address,
|
|
626
|
-
)
|
|
627
|
-
await call_async("binary/device/wait_until_idle", request)
|
|
628
|
-
|
|
629
|
-
def is_busy(
|
|
630
|
-
self
|
|
631
|
-
) -> bool:
|
|
632
|
-
"""
|
|
633
|
-
Check whether the device is moving.
|
|
634
|
-
|
|
635
|
-
Returns:
|
|
636
|
-
True if the device is currently executing a motion command.
|
|
637
|
-
"""
|
|
638
|
-
request = dto.DeviceEmptyRequest(
|
|
639
|
-
interface_id=self.connection.interface_id,
|
|
640
|
-
device=self.device_address,
|
|
641
|
-
)
|
|
642
|
-
response = call(
|
|
643
|
-
"binary/device/is_busy",
|
|
644
|
-
request,
|
|
645
|
-
dto.BoolResponse.from_binary)
|
|
646
|
-
return response.value
|
|
647
|
-
|
|
648
|
-
async def is_busy_async(
|
|
649
|
-
self
|
|
650
|
-
) -> bool:
|
|
651
|
-
"""
|
|
652
|
-
Check whether the device is moving.
|
|
653
|
-
|
|
654
|
-
Returns:
|
|
655
|
-
True if the device is currently executing a motion command.
|
|
656
|
-
"""
|
|
657
|
-
request = dto.DeviceEmptyRequest(
|
|
658
|
-
interface_id=self.connection.interface_id,
|
|
659
|
-
device=self.device_address,
|
|
660
|
-
)
|
|
661
|
-
response = await call_async(
|
|
662
|
-
"binary/device/is_busy",
|
|
663
|
-
request,
|
|
664
|
-
dto.BoolResponse.from_binary)
|
|
665
|
-
return response.value
|
|
666
|
-
|
|
667
|
-
def identify(
|
|
668
|
-
self,
|
|
669
|
-
assume_version: Optional[FirmwareVersion] = None
|
|
670
|
-
) -> DeviceIdentity:
|
|
671
|
-
"""
|
|
672
|
-
Queries the device and the database, gathering information about the product.
|
|
673
|
-
Without this information features such as unit conversions will not work.
|
|
674
|
-
Usually, called automatically by detect devices method.
|
|
675
|
-
|
|
676
|
-
Args:
|
|
677
|
-
assume_version: The identification assumes the specified firmware version
|
|
678
|
-
instead of the version queried from the device.
|
|
679
|
-
Providing this argument can lead to unexpected compatibility issues.
|
|
680
|
-
|
|
681
|
-
Returns:
|
|
682
|
-
Device identification data.
|
|
683
|
-
"""
|
|
684
|
-
request = dto.DeviceIdentifyRequest(
|
|
685
|
-
interface_id=self.connection.interface_id,
|
|
686
|
-
device=self.device_address,
|
|
687
|
-
assume_version=assume_version,
|
|
688
|
-
)
|
|
689
|
-
response = call(
|
|
690
|
-
"binary/device/identify",
|
|
691
|
-
request,
|
|
692
|
-
DeviceIdentity.from_binary)
|
|
693
|
-
return response
|
|
694
|
-
|
|
695
|
-
async def identify_async(
|
|
696
|
-
self,
|
|
697
|
-
assume_version: Optional[FirmwareVersion] = None
|
|
698
|
-
) -> DeviceIdentity:
|
|
699
|
-
"""
|
|
700
|
-
Queries the device and the database, gathering information about the product.
|
|
701
|
-
Without this information features such as unit conversions will not work.
|
|
702
|
-
Usually, called automatically by detect devices method.
|
|
703
|
-
|
|
704
|
-
Args:
|
|
705
|
-
assume_version: The identification assumes the specified firmware version
|
|
706
|
-
instead of the version queried from the device.
|
|
707
|
-
Providing this argument can lead to unexpected compatibility issues.
|
|
708
|
-
|
|
709
|
-
Returns:
|
|
710
|
-
Device identification data.
|
|
711
|
-
"""
|
|
712
|
-
request = dto.DeviceIdentifyRequest(
|
|
713
|
-
interface_id=self.connection.interface_id,
|
|
714
|
-
device=self.device_address,
|
|
715
|
-
assume_version=assume_version,
|
|
716
|
-
)
|
|
717
|
-
response = await call_async(
|
|
718
|
-
"binary/device/identify",
|
|
719
|
-
request,
|
|
720
|
-
DeviceIdentity.from_binary)
|
|
721
|
-
return response
|
|
722
|
-
|
|
723
|
-
def park(
|
|
724
|
-
self
|
|
725
|
-
) -> None:
|
|
726
|
-
"""
|
|
727
|
-
Parks the axis.
|
|
728
|
-
Motor drivers remain enabled and hold current continues to be applied until the device is powered off.
|
|
729
|
-
It can later be unparked and moved without first having to home it.
|
|
730
|
-
Requires at least Firmware 6.06.
|
|
731
|
-
"""
|
|
732
|
-
request = dto.DeviceEmptyRequest(
|
|
733
|
-
interface_id=self.connection.interface_id,
|
|
734
|
-
device=self.device_address,
|
|
735
|
-
)
|
|
736
|
-
call("binary/device/park", request)
|
|
737
|
-
|
|
738
|
-
async def park_async(
|
|
739
|
-
self
|
|
740
|
-
) -> None:
|
|
741
|
-
"""
|
|
742
|
-
Parks the axis.
|
|
743
|
-
Motor drivers remain enabled and hold current continues to be applied until the device is powered off.
|
|
744
|
-
It can later be unparked and moved without first having to home it.
|
|
745
|
-
Requires at least Firmware 6.06.
|
|
746
|
-
"""
|
|
747
|
-
request = dto.DeviceEmptyRequest(
|
|
748
|
-
interface_id=self.connection.interface_id,
|
|
749
|
-
device=self.device_address,
|
|
750
|
-
)
|
|
751
|
-
await call_async("binary/device/park", request)
|
|
752
|
-
|
|
753
|
-
def unpark(
|
|
754
|
-
self
|
|
755
|
-
) -> None:
|
|
756
|
-
"""
|
|
757
|
-
Unparks axis. Axis will now be able to move.
|
|
758
|
-
Requires at least Firmware 6.06.
|
|
759
|
-
"""
|
|
760
|
-
request = dto.DeviceEmptyRequest(
|
|
761
|
-
interface_id=self.connection.interface_id,
|
|
762
|
-
device=self.device_address,
|
|
763
|
-
)
|
|
764
|
-
call("binary/device/unpark", request)
|
|
765
|
-
|
|
766
|
-
async def unpark_async(
|
|
767
|
-
self
|
|
768
|
-
) -> None:
|
|
769
|
-
"""
|
|
770
|
-
Unparks axis. Axis will now be able to move.
|
|
771
|
-
Requires at least Firmware 6.06.
|
|
772
|
-
"""
|
|
773
|
-
request = dto.DeviceEmptyRequest(
|
|
774
|
-
interface_id=self.connection.interface_id,
|
|
775
|
-
device=self.device_address,
|
|
776
|
-
)
|
|
777
|
-
await call_async("binary/device/unpark", request)
|
|
778
|
-
|
|
779
|
-
def is_parked(
|
|
780
|
-
self
|
|
781
|
-
) -> bool:
|
|
782
|
-
"""
|
|
783
|
-
Returns bool indicating whether the axis is parked or not.
|
|
784
|
-
Requires at least Firmware 6.06.
|
|
785
|
-
|
|
786
|
-
Returns:
|
|
787
|
-
True if the axis is currently parked. False otherwise.
|
|
788
|
-
"""
|
|
789
|
-
request = dto.DeviceEmptyRequest(
|
|
790
|
-
interface_id=self.connection.interface_id,
|
|
791
|
-
device=self.device_address,
|
|
792
|
-
)
|
|
793
|
-
response = call(
|
|
794
|
-
"binary/device/is_parked",
|
|
795
|
-
request,
|
|
796
|
-
dto.BoolResponse.from_binary)
|
|
797
|
-
return response.value
|
|
798
|
-
|
|
799
|
-
async def is_parked_async(
|
|
800
|
-
self
|
|
801
|
-
) -> bool:
|
|
802
|
-
"""
|
|
803
|
-
Returns bool indicating whether the axis is parked or not.
|
|
804
|
-
Requires at least Firmware 6.06.
|
|
805
|
-
|
|
806
|
-
Returns:
|
|
807
|
-
True if the axis is currently parked. False otherwise.
|
|
808
|
-
"""
|
|
809
|
-
request = dto.DeviceEmptyRequest(
|
|
810
|
-
interface_id=self.connection.interface_id,
|
|
811
|
-
device=self.device_address,
|
|
812
|
-
)
|
|
813
|
-
response = await call_async(
|
|
814
|
-
"binary/device/is_parked",
|
|
815
|
-
request,
|
|
816
|
-
dto.BoolResponse.from_binary)
|
|
817
|
-
return response.value
|
|
818
|
-
|
|
819
|
-
def get_position(
|
|
820
|
-
self,
|
|
821
|
-
unit: LengthUnits = Units.NATIVE
|
|
822
|
-
) -> float:
|
|
823
|
-
"""
|
|
824
|
-
Returns current device position.
|
|
825
|
-
|
|
826
|
-
Args:
|
|
827
|
-
unit: Units of position.
|
|
828
|
-
|
|
829
|
-
Returns:
|
|
830
|
-
Axis position.
|
|
831
|
-
"""
|
|
832
|
-
request = dto.BinaryDeviceGetSettingRequest(
|
|
833
|
-
interface_id=self.connection.interface_id,
|
|
834
|
-
device=self.device_address,
|
|
835
|
-
setting=BinarySettings.CURRENT_POSITION,
|
|
836
|
-
unit=unit,
|
|
837
|
-
)
|
|
838
|
-
response = call(
|
|
839
|
-
"binary/device/get_setting",
|
|
840
|
-
request,
|
|
841
|
-
dto.DoubleResponse.from_binary)
|
|
842
|
-
return response.value
|
|
843
|
-
|
|
844
|
-
async def get_position_async(
|
|
845
|
-
self,
|
|
846
|
-
unit: LengthUnits = Units.NATIVE
|
|
847
|
-
) -> float:
|
|
848
|
-
"""
|
|
849
|
-
Returns current device position.
|
|
850
|
-
|
|
851
|
-
Args:
|
|
852
|
-
unit: Units of position.
|
|
853
|
-
|
|
854
|
-
Returns:
|
|
855
|
-
Axis position.
|
|
856
|
-
"""
|
|
857
|
-
request = dto.BinaryDeviceGetSettingRequest(
|
|
858
|
-
interface_id=self.connection.interface_id,
|
|
859
|
-
device=self.device_address,
|
|
860
|
-
setting=BinarySettings.CURRENT_POSITION,
|
|
861
|
-
unit=unit,
|
|
862
|
-
)
|
|
863
|
-
response = await call_async(
|
|
864
|
-
"binary/device/get_setting",
|
|
865
|
-
request,
|
|
866
|
-
dto.DoubleResponse.from_binary)
|
|
867
|
-
return response.value
|
|
868
|
-
|
|
869
|
-
def __repr__(
|
|
870
|
-
self
|
|
871
|
-
) -> str:
|
|
872
|
-
"""
|
|
873
|
-
Returns a string that represents the device.
|
|
874
|
-
|
|
875
|
-
Returns:
|
|
876
|
-
A string that represents the device.
|
|
877
|
-
"""
|
|
878
|
-
request = dto.DeviceEmptyRequest(
|
|
879
|
-
interface_id=self.connection.interface_id,
|
|
880
|
-
device=self.device_address,
|
|
881
|
-
)
|
|
882
|
-
response = call_sync(
|
|
883
|
-
"binary/device/device_to_string",
|
|
884
|
-
request,
|
|
885
|
-
dto.StringResponse.from_binary)
|
|
886
|
-
return response.value
|
|
887
|
-
|
|
888
|
-
def __retrieve_identity(
|
|
889
|
-
self
|
|
890
|
-
) -> DeviceIdentity:
|
|
891
|
-
"""
|
|
892
|
-
Returns identity.
|
|
893
|
-
|
|
894
|
-
Returns:
|
|
895
|
-
Device identity.
|
|
896
|
-
"""
|
|
897
|
-
request = dto.DeviceEmptyRequest(
|
|
898
|
-
interface_id=self.connection.interface_id,
|
|
899
|
-
device=self.device_address,
|
|
900
|
-
)
|
|
901
|
-
response = call_sync(
|
|
902
|
-
"binary/device/get_identity",
|
|
903
|
-
request,
|
|
904
|
-
DeviceIdentity.from_binary)
|
|
905
|
-
return response
|
|
906
|
-
|
|
907
|
-
def __retrieve_is_identified(
|
|
908
|
-
self
|
|
909
|
-
) -> bool:
|
|
910
|
-
"""
|
|
911
|
-
Returns whether or not the device have been identified.
|
|
912
|
-
|
|
913
|
-
Returns:
|
|
914
|
-
True if the device has already been identified. False otherwise.
|
|
915
|
-
"""
|
|
916
|
-
request = dto.DeviceEmptyRequest(
|
|
917
|
-
interface_id=self.connection.interface_id,
|
|
918
|
-
device=self.device_address,
|
|
919
|
-
)
|
|
920
|
-
response = call_sync(
|
|
921
|
-
"binary/device/get_is_identified",
|
|
922
|
-
request,
|
|
923
|
-
dto.BoolResponse.from_binary)
|
|
924
|
-
return response.value
|
|
1
|
+
# ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
|
|
2
|
+
# ============== DO NOT EDIT DIRECTLY ============== #
|
|
3
|
+
|
|
4
|
+
# pylint: disable=too-many-arguments
|
|
5
|
+
|
|
6
|
+
from typing import TYPE_CHECKING, Optional
|
|
7
|
+
from ..call import call, call_async, call_sync
|
|
8
|
+
|
|
9
|
+
from ..dto import requests as dto
|
|
10
|
+
from ..dto.binary.binary_settings import BinarySettings
|
|
11
|
+
from ..dto.binary.device_identity import DeviceIdentity
|
|
12
|
+
from .device_settings import DeviceSettings
|
|
13
|
+
from ..dto.binary.command_code import CommandCode
|
|
14
|
+
from ..dto.binary.message import Message
|
|
15
|
+
from ..units import UnitsAndLiterals, Units, LengthUnits, VelocityUnits
|
|
16
|
+
from ..dto.binary.device_type import DeviceType
|
|
17
|
+
from ..dto.firmware_version import FirmwareVersion
|
|
18
|
+
|
|
19
|
+
if TYPE_CHECKING:
|
|
20
|
+
from .connection import Connection
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class Device:
|
|
24
|
+
"""
|
|
25
|
+
Represents a device using the binary protocol.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
DEFAULT_MOVEMENT_TIMEOUT = 60
|
|
29
|
+
"""
|
|
30
|
+
Default timeout for move commands in seconds.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def connection(self) -> 'Connection':
|
|
35
|
+
"""
|
|
36
|
+
Connection of this device.
|
|
37
|
+
"""
|
|
38
|
+
return self._connection
|
|
39
|
+
|
|
40
|
+
@property
|
|
41
|
+
def settings(self) -> DeviceSettings:
|
|
42
|
+
"""
|
|
43
|
+
Settings and properties of this axis.
|
|
44
|
+
"""
|
|
45
|
+
return self._settings
|
|
46
|
+
|
|
47
|
+
@property
|
|
48
|
+
def device_address(self) -> int:
|
|
49
|
+
"""
|
|
50
|
+
The device address uniquely identifies the device on the connection.
|
|
51
|
+
It can be configured or automatically assigned by the renumber command.
|
|
52
|
+
"""
|
|
53
|
+
return self._device_address
|
|
54
|
+
|
|
55
|
+
@property
|
|
56
|
+
def identity(self) -> DeviceIdentity:
|
|
57
|
+
"""
|
|
58
|
+
Identity of the device.
|
|
59
|
+
"""
|
|
60
|
+
return self.__retrieve_identity()
|
|
61
|
+
|
|
62
|
+
@property
|
|
63
|
+
def is_identified(self) -> bool:
|
|
64
|
+
"""
|
|
65
|
+
Indicates whether or not the device has been identified.
|
|
66
|
+
"""
|
|
67
|
+
return self.__retrieve_is_identified()
|
|
68
|
+
|
|
69
|
+
@property
|
|
70
|
+
def device_id(self) -> int:
|
|
71
|
+
"""
|
|
72
|
+
Unique ID of the device hardware.
|
|
73
|
+
"""
|
|
74
|
+
return self.identity.device_id
|
|
75
|
+
|
|
76
|
+
@property
|
|
77
|
+
def serial_number(self) -> int:
|
|
78
|
+
"""
|
|
79
|
+
Serial number of the device.
|
|
80
|
+
Requires at least Firmware 6.15 for devices or 6.24 for peripherals.
|
|
81
|
+
"""
|
|
82
|
+
return self.identity.serial_number
|
|
83
|
+
|
|
84
|
+
@property
|
|
85
|
+
def name(self) -> str:
|
|
86
|
+
"""
|
|
87
|
+
Name of the product.
|
|
88
|
+
"""
|
|
89
|
+
return self.identity.name
|
|
90
|
+
|
|
91
|
+
@property
|
|
92
|
+
def firmware_version(self) -> FirmwareVersion:
|
|
93
|
+
"""
|
|
94
|
+
Version of the firmware.
|
|
95
|
+
"""
|
|
96
|
+
return self.identity.firmware_version
|
|
97
|
+
|
|
98
|
+
@property
|
|
99
|
+
def is_peripheral(self) -> bool:
|
|
100
|
+
"""
|
|
101
|
+
Indicates whether the device is a peripheral or part of an integrated device.
|
|
102
|
+
"""
|
|
103
|
+
return self.identity.is_peripheral
|
|
104
|
+
|
|
105
|
+
@property
|
|
106
|
+
def peripheral_id(self) -> int:
|
|
107
|
+
"""
|
|
108
|
+
Unique ID of the peripheral hardware.
|
|
109
|
+
"""
|
|
110
|
+
return self.identity.peripheral_id
|
|
111
|
+
|
|
112
|
+
@property
|
|
113
|
+
def peripheral_name(self) -> str:
|
|
114
|
+
"""
|
|
115
|
+
Name of the peripheral hardware.
|
|
116
|
+
"""
|
|
117
|
+
return self.identity.peripheral_name
|
|
118
|
+
|
|
119
|
+
@property
|
|
120
|
+
def device_type(self) -> DeviceType:
|
|
121
|
+
"""
|
|
122
|
+
Determines the type of an device and units it accepts.
|
|
123
|
+
"""
|
|
124
|
+
return self.identity.device_type
|
|
125
|
+
|
|
126
|
+
def __init__(self, connection: 'Connection', device_address: int):
|
|
127
|
+
self._connection: 'Connection' = connection
|
|
128
|
+
self._settings: DeviceSettings = DeviceSettings(self)
|
|
129
|
+
self._device_address: int = device_address
|
|
130
|
+
|
|
131
|
+
def generic_command(
|
|
132
|
+
self,
|
|
133
|
+
command: CommandCode,
|
|
134
|
+
data: int = 0,
|
|
135
|
+
timeout: float = 0.0,
|
|
136
|
+
check_errors: bool = True
|
|
137
|
+
) -> Message:
|
|
138
|
+
"""
|
|
139
|
+
Sends a generic Binary command to this device.
|
|
140
|
+
For more information please refer to the
|
|
141
|
+
[Binary Protocol Manual](https://www.zaber.com/protocol-manual?protocol=Binary#topic_quick_command_reference).
|
|
142
|
+
|
|
143
|
+
Args:
|
|
144
|
+
command: Command to send.
|
|
145
|
+
data: Optional data argument to the command. Defaults to zero.
|
|
146
|
+
timeout: Number of seconds to wait for a response from the device. 0 or negative defaults to 0.5s.
|
|
147
|
+
check_errors: Controls whether to throw an exception when the device rejects the command.
|
|
148
|
+
|
|
149
|
+
Returns:
|
|
150
|
+
A response to the command.
|
|
151
|
+
"""
|
|
152
|
+
request = dto.GenericBinaryRequest(
|
|
153
|
+
interface_id=self.connection.interface_id,
|
|
154
|
+
device=self.device_address,
|
|
155
|
+
command=command,
|
|
156
|
+
data=data,
|
|
157
|
+
timeout=timeout,
|
|
158
|
+
check_errors=check_errors,
|
|
159
|
+
)
|
|
160
|
+
response = call(
|
|
161
|
+
"binary/interface/generic_command",
|
|
162
|
+
request,
|
|
163
|
+
Message.from_binary)
|
|
164
|
+
return response
|
|
165
|
+
|
|
166
|
+
async def generic_command_async(
|
|
167
|
+
self,
|
|
168
|
+
command: CommandCode,
|
|
169
|
+
data: int = 0,
|
|
170
|
+
timeout: float = 0.0,
|
|
171
|
+
check_errors: bool = True
|
|
172
|
+
) -> Message:
|
|
173
|
+
"""
|
|
174
|
+
Sends a generic Binary command to this device.
|
|
175
|
+
For more information please refer to the
|
|
176
|
+
[Binary Protocol Manual](https://www.zaber.com/protocol-manual?protocol=Binary#topic_quick_command_reference).
|
|
177
|
+
|
|
178
|
+
Args:
|
|
179
|
+
command: Command to send.
|
|
180
|
+
data: Optional data argument to the command. Defaults to zero.
|
|
181
|
+
timeout: Number of seconds to wait for a response from the device. 0 or negative defaults to 0.5s.
|
|
182
|
+
check_errors: Controls whether to throw an exception when the device rejects the command.
|
|
183
|
+
|
|
184
|
+
Returns:
|
|
185
|
+
A response to the command.
|
|
186
|
+
"""
|
|
187
|
+
request = dto.GenericBinaryRequest(
|
|
188
|
+
interface_id=self.connection.interface_id,
|
|
189
|
+
device=self.device_address,
|
|
190
|
+
command=command,
|
|
191
|
+
data=data,
|
|
192
|
+
timeout=timeout,
|
|
193
|
+
check_errors=check_errors,
|
|
194
|
+
)
|
|
195
|
+
response = await call_async(
|
|
196
|
+
"binary/interface/generic_command",
|
|
197
|
+
request,
|
|
198
|
+
Message.from_binary)
|
|
199
|
+
return response
|
|
200
|
+
|
|
201
|
+
def generic_command_no_response(
|
|
202
|
+
self,
|
|
203
|
+
command: CommandCode,
|
|
204
|
+
data: int = 0
|
|
205
|
+
) -> None:
|
|
206
|
+
"""
|
|
207
|
+
Sends a generic Binary command to this device without expecting a response.
|
|
208
|
+
For more information please refer to the
|
|
209
|
+
[Binary Protocol Manual](https://www.zaber.com/protocol-manual?protocol=Binary#topic_quick_command_reference).
|
|
210
|
+
|
|
211
|
+
Args:
|
|
212
|
+
command: Command to send.
|
|
213
|
+
data: Optional data argument to the command. Defaults to zero.
|
|
214
|
+
"""
|
|
215
|
+
request = dto.GenericBinaryRequest(
|
|
216
|
+
interface_id=self.connection.interface_id,
|
|
217
|
+
device=self.device_address,
|
|
218
|
+
command=command,
|
|
219
|
+
data=data,
|
|
220
|
+
)
|
|
221
|
+
call("binary/interface/generic_command_no_response", request)
|
|
222
|
+
|
|
223
|
+
async def generic_command_no_response_async(
|
|
224
|
+
self,
|
|
225
|
+
command: CommandCode,
|
|
226
|
+
data: int = 0
|
|
227
|
+
) -> None:
|
|
228
|
+
"""
|
|
229
|
+
Sends a generic Binary command to this device without expecting a response.
|
|
230
|
+
For more information please refer to the
|
|
231
|
+
[Binary Protocol Manual](https://www.zaber.com/protocol-manual?protocol=Binary#topic_quick_command_reference).
|
|
232
|
+
|
|
233
|
+
Args:
|
|
234
|
+
command: Command to send.
|
|
235
|
+
data: Optional data argument to the command. Defaults to zero.
|
|
236
|
+
"""
|
|
237
|
+
request = dto.GenericBinaryRequest(
|
|
238
|
+
interface_id=self.connection.interface_id,
|
|
239
|
+
device=self.device_address,
|
|
240
|
+
command=command,
|
|
241
|
+
data=data,
|
|
242
|
+
)
|
|
243
|
+
await call_async("binary/interface/generic_command_no_response", request)
|
|
244
|
+
|
|
245
|
+
def generic_command_with_units(
|
|
246
|
+
self,
|
|
247
|
+
command: CommandCode,
|
|
248
|
+
data: float = 0,
|
|
249
|
+
from_unit: UnitsAndLiterals = Units.NATIVE,
|
|
250
|
+
to_unit: UnitsAndLiterals = Units.NATIVE,
|
|
251
|
+
timeout: float = 0.0
|
|
252
|
+
) -> float:
|
|
253
|
+
"""
|
|
254
|
+
Sends a generic Binary command to this device with unit conversions for both sent data and retrieved data.
|
|
255
|
+
|
|
256
|
+
Args:
|
|
257
|
+
command: Command to send.
|
|
258
|
+
data: Data argument to the command. Defaults to zero.
|
|
259
|
+
from_unit: Unit to convert sent data from.
|
|
260
|
+
to_unit: Unit to convert retrieved data to.
|
|
261
|
+
timeout: Number of seconds to wait for a response from the device. 0 or negative defaults to 0.5s.
|
|
262
|
+
|
|
263
|
+
Returns:
|
|
264
|
+
Data that has been converted to the provided unit.
|
|
265
|
+
"""
|
|
266
|
+
request = dto.BinaryGenericWithUnitsRequest(
|
|
267
|
+
interface_id=self.connection.interface_id,
|
|
268
|
+
device=self.device_address,
|
|
269
|
+
command=command,
|
|
270
|
+
data=data,
|
|
271
|
+
from_unit=from_unit,
|
|
272
|
+
to_unit=to_unit,
|
|
273
|
+
timeout=timeout,
|
|
274
|
+
)
|
|
275
|
+
response = call(
|
|
276
|
+
"binary/device/generic_command_with_units",
|
|
277
|
+
request,
|
|
278
|
+
dto.DoubleResponse.from_binary)
|
|
279
|
+
return response.value
|
|
280
|
+
|
|
281
|
+
async def generic_command_with_units_async(
|
|
282
|
+
self,
|
|
283
|
+
command: CommandCode,
|
|
284
|
+
data: float = 0,
|
|
285
|
+
from_unit: UnitsAndLiterals = Units.NATIVE,
|
|
286
|
+
to_unit: UnitsAndLiterals = Units.NATIVE,
|
|
287
|
+
timeout: float = 0.0
|
|
288
|
+
) -> float:
|
|
289
|
+
"""
|
|
290
|
+
Sends a generic Binary command to this device with unit conversions for both sent data and retrieved data.
|
|
291
|
+
|
|
292
|
+
Args:
|
|
293
|
+
command: Command to send.
|
|
294
|
+
data: Data argument to the command. Defaults to zero.
|
|
295
|
+
from_unit: Unit to convert sent data from.
|
|
296
|
+
to_unit: Unit to convert retrieved data to.
|
|
297
|
+
timeout: Number of seconds to wait for a response from the device. 0 or negative defaults to 0.5s.
|
|
298
|
+
|
|
299
|
+
Returns:
|
|
300
|
+
Data that has been converted to the provided unit.
|
|
301
|
+
"""
|
|
302
|
+
request = dto.BinaryGenericWithUnitsRequest(
|
|
303
|
+
interface_id=self.connection.interface_id,
|
|
304
|
+
device=self.device_address,
|
|
305
|
+
command=command,
|
|
306
|
+
data=data,
|
|
307
|
+
from_unit=from_unit,
|
|
308
|
+
to_unit=to_unit,
|
|
309
|
+
timeout=timeout,
|
|
310
|
+
)
|
|
311
|
+
response = await call_async(
|
|
312
|
+
"binary/device/generic_command_with_units",
|
|
313
|
+
request,
|
|
314
|
+
dto.DoubleResponse.from_binary)
|
|
315
|
+
return response.value
|
|
316
|
+
|
|
317
|
+
def home(
|
|
318
|
+
self,
|
|
319
|
+
unit: LengthUnits = Units.NATIVE,
|
|
320
|
+
timeout: float = DEFAULT_MOVEMENT_TIMEOUT
|
|
321
|
+
) -> float:
|
|
322
|
+
"""
|
|
323
|
+
Homes device. Device returns to its homing position.
|
|
324
|
+
|
|
325
|
+
Args:
|
|
326
|
+
unit: Unit to convert returned position to.
|
|
327
|
+
timeout: Number of seconds to wait for response from the device chain (defaults to 60s).
|
|
328
|
+
|
|
329
|
+
Returns:
|
|
330
|
+
Current position that has been converted to the provided unit.
|
|
331
|
+
"""
|
|
332
|
+
request = dto.BinaryDeviceHomeRequest(
|
|
333
|
+
interface_id=self.connection.interface_id,
|
|
334
|
+
device=self.device_address,
|
|
335
|
+
unit=unit,
|
|
336
|
+
timeout=timeout,
|
|
337
|
+
)
|
|
338
|
+
response = call(
|
|
339
|
+
"binary/device/home",
|
|
340
|
+
request,
|
|
341
|
+
dto.DoubleResponse.from_binary)
|
|
342
|
+
return response.value
|
|
343
|
+
|
|
344
|
+
async def home_async(
|
|
345
|
+
self,
|
|
346
|
+
unit: LengthUnits = Units.NATIVE,
|
|
347
|
+
timeout: float = DEFAULT_MOVEMENT_TIMEOUT
|
|
348
|
+
) -> float:
|
|
349
|
+
"""
|
|
350
|
+
Homes device. Device returns to its homing position.
|
|
351
|
+
|
|
352
|
+
Args:
|
|
353
|
+
unit: Unit to convert returned position to.
|
|
354
|
+
timeout: Number of seconds to wait for response from the device chain (defaults to 60s).
|
|
355
|
+
|
|
356
|
+
Returns:
|
|
357
|
+
Current position that has been converted to the provided unit.
|
|
358
|
+
"""
|
|
359
|
+
request = dto.BinaryDeviceHomeRequest(
|
|
360
|
+
interface_id=self.connection.interface_id,
|
|
361
|
+
device=self.device_address,
|
|
362
|
+
unit=unit,
|
|
363
|
+
timeout=timeout,
|
|
364
|
+
)
|
|
365
|
+
response = await call_async(
|
|
366
|
+
"binary/device/home",
|
|
367
|
+
request,
|
|
368
|
+
dto.DoubleResponse.from_binary)
|
|
369
|
+
return response.value
|
|
370
|
+
|
|
371
|
+
def stop(
|
|
372
|
+
self,
|
|
373
|
+
unit: LengthUnits = Units.NATIVE,
|
|
374
|
+
timeout: float = DEFAULT_MOVEMENT_TIMEOUT
|
|
375
|
+
) -> float:
|
|
376
|
+
"""
|
|
377
|
+
Stops ongoing device movement. Decelerates until zero speed.
|
|
378
|
+
|
|
379
|
+
Args:
|
|
380
|
+
unit: Unit to convert returned position to.
|
|
381
|
+
timeout: Number of seconds to wait for response from the device chain (defaults to 60s).
|
|
382
|
+
|
|
383
|
+
Returns:
|
|
384
|
+
Current position that has been converted to the provided unit.
|
|
385
|
+
"""
|
|
386
|
+
request = dto.BinaryDeviceStopRequest(
|
|
387
|
+
interface_id=self.connection.interface_id,
|
|
388
|
+
device=self.device_address,
|
|
389
|
+
unit=unit,
|
|
390
|
+
timeout=timeout,
|
|
391
|
+
)
|
|
392
|
+
response = call(
|
|
393
|
+
"binary/device/stop",
|
|
394
|
+
request,
|
|
395
|
+
dto.DoubleResponse.from_binary)
|
|
396
|
+
return response.value
|
|
397
|
+
|
|
398
|
+
async def stop_async(
|
|
399
|
+
self,
|
|
400
|
+
unit: LengthUnits = Units.NATIVE,
|
|
401
|
+
timeout: float = DEFAULT_MOVEMENT_TIMEOUT
|
|
402
|
+
) -> float:
|
|
403
|
+
"""
|
|
404
|
+
Stops ongoing device movement. Decelerates until zero speed.
|
|
405
|
+
|
|
406
|
+
Args:
|
|
407
|
+
unit: Unit to convert returned position to.
|
|
408
|
+
timeout: Number of seconds to wait for response from the device chain (defaults to 60s).
|
|
409
|
+
|
|
410
|
+
Returns:
|
|
411
|
+
Current position that has been converted to the provided unit.
|
|
412
|
+
"""
|
|
413
|
+
request = dto.BinaryDeviceStopRequest(
|
|
414
|
+
interface_id=self.connection.interface_id,
|
|
415
|
+
device=self.device_address,
|
|
416
|
+
unit=unit,
|
|
417
|
+
timeout=timeout,
|
|
418
|
+
)
|
|
419
|
+
response = await call_async(
|
|
420
|
+
"binary/device/stop",
|
|
421
|
+
request,
|
|
422
|
+
dto.DoubleResponse.from_binary)
|
|
423
|
+
return response.value
|
|
424
|
+
|
|
425
|
+
def move_absolute(
|
|
426
|
+
self,
|
|
427
|
+
position: float,
|
|
428
|
+
unit: LengthUnits = Units.NATIVE,
|
|
429
|
+
timeout: float = DEFAULT_MOVEMENT_TIMEOUT
|
|
430
|
+
) -> float:
|
|
431
|
+
"""
|
|
432
|
+
Move device to absolute position.
|
|
433
|
+
|
|
434
|
+
Args:
|
|
435
|
+
position: Absolute position.
|
|
436
|
+
unit: Unit for the provided position as well as position returned by the device.
|
|
437
|
+
timeout: Number of seconds to wait for response from the device chain (defaults to 60s).
|
|
438
|
+
|
|
439
|
+
Returns:
|
|
440
|
+
Current position that has been converted to the provided unit.
|
|
441
|
+
"""
|
|
442
|
+
request = dto.BinaryDeviceMoveRequest(
|
|
443
|
+
interface_id=self.connection.interface_id,
|
|
444
|
+
device=self.device_address,
|
|
445
|
+
type=dto.AxisMoveType.ABS,
|
|
446
|
+
arg=position,
|
|
447
|
+
unit=unit,
|
|
448
|
+
timeout=timeout,
|
|
449
|
+
)
|
|
450
|
+
response = call(
|
|
451
|
+
"binary/device/move",
|
|
452
|
+
request,
|
|
453
|
+
dto.DoubleResponse.from_binary)
|
|
454
|
+
return response.value
|
|
455
|
+
|
|
456
|
+
async def move_absolute_async(
|
|
457
|
+
self,
|
|
458
|
+
position: float,
|
|
459
|
+
unit: LengthUnits = Units.NATIVE,
|
|
460
|
+
timeout: float = DEFAULT_MOVEMENT_TIMEOUT
|
|
461
|
+
) -> float:
|
|
462
|
+
"""
|
|
463
|
+
Move device to absolute position.
|
|
464
|
+
|
|
465
|
+
Args:
|
|
466
|
+
position: Absolute position.
|
|
467
|
+
unit: Unit for the provided position as well as position returned by the device.
|
|
468
|
+
timeout: Number of seconds to wait for response from the device chain (defaults to 60s).
|
|
469
|
+
|
|
470
|
+
Returns:
|
|
471
|
+
Current position that has been converted to the provided unit.
|
|
472
|
+
"""
|
|
473
|
+
request = dto.BinaryDeviceMoveRequest(
|
|
474
|
+
interface_id=self.connection.interface_id,
|
|
475
|
+
device=self.device_address,
|
|
476
|
+
type=dto.AxisMoveType.ABS,
|
|
477
|
+
arg=position,
|
|
478
|
+
unit=unit,
|
|
479
|
+
timeout=timeout,
|
|
480
|
+
)
|
|
481
|
+
response = await call_async(
|
|
482
|
+
"binary/device/move",
|
|
483
|
+
request,
|
|
484
|
+
dto.DoubleResponse.from_binary)
|
|
485
|
+
return response.value
|
|
486
|
+
|
|
487
|
+
def move_relative(
|
|
488
|
+
self,
|
|
489
|
+
position: float,
|
|
490
|
+
unit: LengthUnits = Units.NATIVE,
|
|
491
|
+
timeout: float = DEFAULT_MOVEMENT_TIMEOUT
|
|
492
|
+
) -> float:
|
|
493
|
+
"""
|
|
494
|
+
Move device to position relative to current position.
|
|
495
|
+
|
|
496
|
+
Args:
|
|
497
|
+
position: Relative position.
|
|
498
|
+
unit: Unit for the provided position as well as position returned by the device.
|
|
499
|
+
timeout: Number of seconds to wait for response from the device chain (defaults to 60s).
|
|
500
|
+
|
|
501
|
+
Returns:
|
|
502
|
+
Current position that has been converted to the provided unit.
|
|
503
|
+
"""
|
|
504
|
+
request = dto.BinaryDeviceMoveRequest(
|
|
505
|
+
interface_id=self.connection.interface_id,
|
|
506
|
+
device=self.device_address,
|
|
507
|
+
type=dto.AxisMoveType.REL,
|
|
508
|
+
arg=position,
|
|
509
|
+
unit=unit,
|
|
510
|
+
timeout=timeout,
|
|
511
|
+
)
|
|
512
|
+
response = call(
|
|
513
|
+
"binary/device/move",
|
|
514
|
+
request,
|
|
515
|
+
dto.DoubleResponse.from_binary)
|
|
516
|
+
return response.value
|
|
517
|
+
|
|
518
|
+
async def move_relative_async(
|
|
519
|
+
self,
|
|
520
|
+
position: float,
|
|
521
|
+
unit: LengthUnits = Units.NATIVE,
|
|
522
|
+
timeout: float = DEFAULT_MOVEMENT_TIMEOUT
|
|
523
|
+
) -> float:
|
|
524
|
+
"""
|
|
525
|
+
Move device to position relative to current position.
|
|
526
|
+
|
|
527
|
+
Args:
|
|
528
|
+
position: Relative position.
|
|
529
|
+
unit: Unit for the provided position as well as position returned by the device.
|
|
530
|
+
timeout: Number of seconds to wait for response from the device chain (defaults to 60s).
|
|
531
|
+
|
|
532
|
+
Returns:
|
|
533
|
+
Current position that has been converted to the provided unit.
|
|
534
|
+
"""
|
|
535
|
+
request = dto.BinaryDeviceMoveRequest(
|
|
536
|
+
interface_id=self.connection.interface_id,
|
|
537
|
+
device=self.device_address,
|
|
538
|
+
type=dto.AxisMoveType.REL,
|
|
539
|
+
arg=position,
|
|
540
|
+
unit=unit,
|
|
541
|
+
timeout=timeout,
|
|
542
|
+
)
|
|
543
|
+
response = await call_async(
|
|
544
|
+
"binary/device/move",
|
|
545
|
+
request,
|
|
546
|
+
dto.DoubleResponse.from_binary)
|
|
547
|
+
return response.value
|
|
548
|
+
|
|
549
|
+
def move_velocity(
|
|
550
|
+
self,
|
|
551
|
+
velocity: float,
|
|
552
|
+
unit: VelocityUnits = Units.NATIVE
|
|
553
|
+
) -> float:
|
|
554
|
+
"""
|
|
555
|
+
Begins to move device at specified speed.
|
|
556
|
+
|
|
557
|
+
Args:
|
|
558
|
+
velocity: Movement velocity.
|
|
559
|
+
unit: Unit to convert returned velocity to.
|
|
560
|
+
|
|
561
|
+
Returns:
|
|
562
|
+
Device velocity that has been converted to the provided unit.
|
|
563
|
+
"""
|
|
564
|
+
request = dto.BinaryDeviceMoveRequest(
|
|
565
|
+
interface_id=self.connection.interface_id,
|
|
566
|
+
device=self.device_address,
|
|
567
|
+
type=dto.AxisMoveType.VEL,
|
|
568
|
+
arg=velocity,
|
|
569
|
+
unit=unit,
|
|
570
|
+
)
|
|
571
|
+
response = call(
|
|
572
|
+
"binary/device/move",
|
|
573
|
+
request,
|
|
574
|
+
dto.DoubleResponse.from_binary)
|
|
575
|
+
return response.value
|
|
576
|
+
|
|
577
|
+
async def move_velocity_async(
|
|
578
|
+
self,
|
|
579
|
+
velocity: float,
|
|
580
|
+
unit: VelocityUnits = Units.NATIVE
|
|
581
|
+
) -> float:
|
|
582
|
+
"""
|
|
583
|
+
Begins to move device at specified speed.
|
|
584
|
+
|
|
585
|
+
Args:
|
|
586
|
+
velocity: Movement velocity.
|
|
587
|
+
unit: Unit to convert returned velocity to.
|
|
588
|
+
|
|
589
|
+
Returns:
|
|
590
|
+
Device velocity that has been converted to the provided unit.
|
|
591
|
+
"""
|
|
592
|
+
request = dto.BinaryDeviceMoveRequest(
|
|
593
|
+
interface_id=self.connection.interface_id,
|
|
594
|
+
device=self.device_address,
|
|
595
|
+
type=dto.AxisMoveType.VEL,
|
|
596
|
+
arg=velocity,
|
|
597
|
+
unit=unit,
|
|
598
|
+
)
|
|
599
|
+
response = await call_async(
|
|
600
|
+
"binary/device/move",
|
|
601
|
+
request,
|
|
602
|
+
dto.DoubleResponse.from_binary)
|
|
603
|
+
return response.value
|
|
604
|
+
|
|
605
|
+
def wait_until_idle(
|
|
606
|
+
self
|
|
607
|
+
) -> None:
|
|
608
|
+
"""
|
|
609
|
+
Waits until device stops moving.
|
|
610
|
+
"""
|
|
611
|
+
request = dto.DeviceEmptyRequest(
|
|
612
|
+
interface_id=self.connection.interface_id,
|
|
613
|
+
device=self.device_address,
|
|
614
|
+
)
|
|
615
|
+
call("binary/device/wait_until_idle", request)
|
|
616
|
+
|
|
617
|
+
async def wait_until_idle_async(
|
|
618
|
+
self
|
|
619
|
+
) -> None:
|
|
620
|
+
"""
|
|
621
|
+
Waits until device stops moving.
|
|
622
|
+
"""
|
|
623
|
+
request = dto.DeviceEmptyRequest(
|
|
624
|
+
interface_id=self.connection.interface_id,
|
|
625
|
+
device=self.device_address,
|
|
626
|
+
)
|
|
627
|
+
await call_async("binary/device/wait_until_idle", request)
|
|
628
|
+
|
|
629
|
+
def is_busy(
|
|
630
|
+
self
|
|
631
|
+
) -> bool:
|
|
632
|
+
"""
|
|
633
|
+
Check whether the device is moving.
|
|
634
|
+
|
|
635
|
+
Returns:
|
|
636
|
+
True if the device is currently executing a motion command.
|
|
637
|
+
"""
|
|
638
|
+
request = dto.DeviceEmptyRequest(
|
|
639
|
+
interface_id=self.connection.interface_id,
|
|
640
|
+
device=self.device_address,
|
|
641
|
+
)
|
|
642
|
+
response = call(
|
|
643
|
+
"binary/device/is_busy",
|
|
644
|
+
request,
|
|
645
|
+
dto.BoolResponse.from_binary)
|
|
646
|
+
return response.value
|
|
647
|
+
|
|
648
|
+
async def is_busy_async(
|
|
649
|
+
self
|
|
650
|
+
) -> bool:
|
|
651
|
+
"""
|
|
652
|
+
Check whether the device is moving.
|
|
653
|
+
|
|
654
|
+
Returns:
|
|
655
|
+
True if the device is currently executing a motion command.
|
|
656
|
+
"""
|
|
657
|
+
request = dto.DeviceEmptyRequest(
|
|
658
|
+
interface_id=self.connection.interface_id,
|
|
659
|
+
device=self.device_address,
|
|
660
|
+
)
|
|
661
|
+
response = await call_async(
|
|
662
|
+
"binary/device/is_busy",
|
|
663
|
+
request,
|
|
664
|
+
dto.BoolResponse.from_binary)
|
|
665
|
+
return response.value
|
|
666
|
+
|
|
667
|
+
def identify(
|
|
668
|
+
self,
|
|
669
|
+
assume_version: Optional[FirmwareVersion] = None
|
|
670
|
+
) -> DeviceIdentity:
|
|
671
|
+
"""
|
|
672
|
+
Queries the device and the database, gathering information about the product.
|
|
673
|
+
Without this information features such as unit conversions will not work.
|
|
674
|
+
Usually, called automatically by detect devices method.
|
|
675
|
+
|
|
676
|
+
Args:
|
|
677
|
+
assume_version: The identification assumes the specified firmware version
|
|
678
|
+
instead of the version queried from the device.
|
|
679
|
+
Providing this argument can lead to unexpected compatibility issues.
|
|
680
|
+
|
|
681
|
+
Returns:
|
|
682
|
+
Device identification data.
|
|
683
|
+
"""
|
|
684
|
+
request = dto.DeviceIdentifyRequest(
|
|
685
|
+
interface_id=self.connection.interface_id,
|
|
686
|
+
device=self.device_address,
|
|
687
|
+
assume_version=assume_version,
|
|
688
|
+
)
|
|
689
|
+
response = call(
|
|
690
|
+
"binary/device/identify",
|
|
691
|
+
request,
|
|
692
|
+
DeviceIdentity.from_binary)
|
|
693
|
+
return response
|
|
694
|
+
|
|
695
|
+
async def identify_async(
|
|
696
|
+
self,
|
|
697
|
+
assume_version: Optional[FirmwareVersion] = None
|
|
698
|
+
) -> DeviceIdentity:
|
|
699
|
+
"""
|
|
700
|
+
Queries the device and the database, gathering information about the product.
|
|
701
|
+
Without this information features such as unit conversions will not work.
|
|
702
|
+
Usually, called automatically by detect devices method.
|
|
703
|
+
|
|
704
|
+
Args:
|
|
705
|
+
assume_version: The identification assumes the specified firmware version
|
|
706
|
+
instead of the version queried from the device.
|
|
707
|
+
Providing this argument can lead to unexpected compatibility issues.
|
|
708
|
+
|
|
709
|
+
Returns:
|
|
710
|
+
Device identification data.
|
|
711
|
+
"""
|
|
712
|
+
request = dto.DeviceIdentifyRequest(
|
|
713
|
+
interface_id=self.connection.interface_id,
|
|
714
|
+
device=self.device_address,
|
|
715
|
+
assume_version=assume_version,
|
|
716
|
+
)
|
|
717
|
+
response = await call_async(
|
|
718
|
+
"binary/device/identify",
|
|
719
|
+
request,
|
|
720
|
+
DeviceIdentity.from_binary)
|
|
721
|
+
return response
|
|
722
|
+
|
|
723
|
+
def park(
|
|
724
|
+
self
|
|
725
|
+
) -> None:
|
|
726
|
+
"""
|
|
727
|
+
Parks the axis.
|
|
728
|
+
Motor drivers remain enabled and hold current continues to be applied until the device is powered off.
|
|
729
|
+
It can later be unparked and moved without first having to home it.
|
|
730
|
+
Requires at least Firmware 6.06.
|
|
731
|
+
"""
|
|
732
|
+
request = dto.DeviceEmptyRequest(
|
|
733
|
+
interface_id=self.connection.interface_id,
|
|
734
|
+
device=self.device_address,
|
|
735
|
+
)
|
|
736
|
+
call("binary/device/park", request)
|
|
737
|
+
|
|
738
|
+
async def park_async(
|
|
739
|
+
self
|
|
740
|
+
) -> None:
|
|
741
|
+
"""
|
|
742
|
+
Parks the axis.
|
|
743
|
+
Motor drivers remain enabled and hold current continues to be applied until the device is powered off.
|
|
744
|
+
It can later be unparked and moved without first having to home it.
|
|
745
|
+
Requires at least Firmware 6.06.
|
|
746
|
+
"""
|
|
747
|
+
request = dto.DeviceEmptyRequest(
|
|
748
|
+
interface_id=self.connection.interface_id,
|
|
749
|
+
device=self.device_address,
|
|
750
|
+
)
|
|
751
|
+
await call_async("binary/device/park", request)
|
|
752
|
+
|
|
753
|
+
def unpark(
|
|
754
|
+
self
|
|
755
|
+
) -> None:
|
|
756
|
+
"""
|
|
757
|
+
Unparks axis. Axis will now be able to move.
|
|
758
|
+
Requires at least Firmware 6.06.
|
|
759
|
+
"""
|
|
760
|
+
request = dto.DeviceEmptyRequest(
|
|
761
|
+
interface_id=self.connection.interface_id,
|
|
762
|
+
device=self.device_address,
|
|
763
|
+
)
|
|
764
|
+
call("binary/device/unpark", request)
|
|
765
|
+
|
|
766
|
+
async def unpark_async(
|
|
767
|
+
self
|
|
768
|
+
) -> None:
|
|
769
|
+
"""
|
|
770
|
+
Unparks axis. Axis will now be able to move.
|
|
771
|
+
Requires at least Firmware 6.06.
|
|
772
|
+
"""
|
|
773
|
+
request = dto.DeviceEmptyRequest(
|
|
774
|
+
interface_id=self.connection.interface_id,
|
|
775
|
+
device=self.device_address,
|
|
776
|
+
)
|
|
777
|
+
await call_async("binary/device/unpark", request)
|
|
778
|
+
|
|
779
|
+
def is_parked(
|
|
780
|
+
self
|
|
781
|
+
) -> bool:
|
|
782
|
+
"""
|
|
783
|
+
Returns bool indicating whether the axis is parked or not.
|
|
784
|
+
Requires at least Firmware 6.06.
|
|
785
|
+
|
|
786
|
+
Returns:
|
|
787
|
+
True if the axis is currently parked. False otherwise.
|
|
788
|
+
"""
|
|
789
|
+
request = dto.DeviceEmptyRequest(
|
|
790
|
+
interface_id=self.connection.interface_id,
|
|
791
|
+
device=self.device_address,
|
|
792
|
+
)
|
|
793
|
+
response = call(
|
|
794
|
+
"binary/device/is_parked",
|
|
795
|
+
request,
|
|
796
|
+
dto.BoolResponse.from_binary)
|
|
797
|
+
return response.value
|
|
798
|
+
|
|
799
|
+
async def is_parked_async(
|
|
800
|
+
self
|
|
801
|
+
) -> bool:
|
|
802
|
+
"""
|
|
803
|
+
Returns bool indicating whether the axis is parked or not.
|
|
804
|
+
Requires at least Firmware 6.06.
|
|
805
|
+
|
|
806
|
+
Returns:
|
|
807
|
+
True if the axis is currently parked. False otherwise.
|
|
808
|
+
"""
|
|
809
|
+
request = dto.DeviceEmptyRequest(
|
|
810
|
+
interface_id=self.connection.interface_id,
|
|
811
|
+
device=self.device_address,
|
|
812
|
+
)
|
|
813
|
+
response = await call_async(
|
|
814
|
+
"binary/device/is_parked",
|
|
815
|
+
request,
|
|
816
|
+
dto.BoolResponse.from_binary)
|
|
817
|
+
return response.value
|
|
818
|
+
|
|
819
|
+
def get_position(
|
|
820
|
+
self,
|
|
821
|
+
unit: LengthUnits = Units.NATIVE
|
|
822
|
+
) -> float:
|
|
823
|
+
"""
|
|
824
|
+
Returns current device position.
|
|
825
|
+
|
|
826
|
+
Args:
|
|
827
|
+
unit: Units of position.
|
|
828
|
+
|
|
829
|
+
Returns:
|
|
830
|
+
Axis position.
|
|
831
|
+
"""
|
|
832
|
+
request = dto.BinaryDeviceGetSettingRequest(
|
|
833
|
+
interface_id=self.connection.interface_id,
|
|
834
|
+
device=self.device_address,
|
|
835
|
+
setting=BinarySettings.CURRENT_POSITION,
|
|
836
|
+
unit=unit,
|
|
837
|
+
)
|
|
838
|
+
response = call(
|
|
839
|
+
"binary/device/get_setting",
|
|
840
|
+
request,
|
|
841
|
+
dto.DoubleResponse.from_binary)
|
|
842
|
+
return response.value
|
|
843
|
+
|
|
844
|
+
async def get_position_async(
|
|
845
|
+
self,
|
|
846
|
+
unit: LengthUnits = Units.NATIVE
|
|
847
|
+
) -> float:
|
|
848
|
+
"""
|
|
849
|
+
Returns current device position.
|
|
850
|
+
|
|
851
|
+
Args:
|
|
852
|
+
unit: Units of position.
|
|
853
|
+
|
|
854
|
+
Returns:
|
|
855
|
+
Axis position.
|
|
856
|
+
"""
|
|
857
|
+
request = dto.BinaryDeviceGetSettingRequest(
|
|
858
|
+
interface_id=self.connection.interface_id,
|
|
859
|
+
device=self.device_address,
|
|
860
|
+
setting=BinarySettings.CURRENT_POSITION,
|
|
861
|
+
unit=unit,
|
|
862
|
+
)
|
|
863
|
+
response = await call_async(
|
|
864
|
+
"binary/device/get_setting",
|
|
865
|
+
request,
|
|
866
|
+
dto.DoubleResponse.from_binary)
|
|
867
|
+
return response.value
|
|
868
|
+
|
|
869
|
+
def __repr__(
|
|
870
|
+
self
|
|
871
|
+
) -> str:
|
|
872
|
+
"""
|
|
873
|
+
Returns a string that represents the device.
|
|
874
|
+
|
|
875
|
+
Returns:
|
|
876
|
+
A string that represents the device.
|
|
877
|
+
"""
|
|
878
|
+
request = dto.DeviceEmptyRequest(
|
|
879
|
+
interface_id=self.connection.interface_id,
|
|
880
|
+
device=self.device_address,
|
|
881
|
+
)
|
|
882
|
+
response = call_sync(
|
|
883
|
+
"binary/device/device_to_string",
|
|
884
|
+
request,
|
|
885
|
+
dto.StringResponse.from_binary)
|
|
886
|
+
return response.value
|
|
887
|
+
|
|
888
|
+
def __retrieve_identity(
|
|
889
|
+
self
|
|
890
|
+
) -> DeviceIdentity:
|
|
891
|
+
"""
|
|
892
|
+
Returns identity.
|
|
893
|
+
|
|
894
|
+
Returns:
|
|
895
|
+
Device identity.
|
|
896
|
+
"""
|
|
897
|
+
request = dto.DeviceEmptyRequest(
|
|
898
|
+
interface_id=self.connection.interface_id,
|
|
899
|
+
device=self.device_address,
|
|
900
|
+
)
|
|
901
|
+
response = call_sync(
|
|
902
|
+
"binary/device/get_identity",
|
|
903
|
+
request,
|
|
904
|
+
DeviceIdentity.from_binary)
|
|
905
|
+
return response
|
|
906
|
+
|
|
907
|
+
def __retrieve_is_identified(
|
|
908
|
+
self
|
|
909
|
+
) -> bool:
|
|
910
|
+
"""
|
|
911
|
+
Returns whether or not the device have been identified.
|
|
912
|
+
|
|
913
|
+
Returns:
|
|
914
|
+
True if the device has already been identified. False otherwise.
|
|
915
|
+
"""
|
|
916
|
+
request = dto.DeviceEmptyRequest(
|
|
917
|
+
interface_id=self.connection.interface_id,
|
|
918
|
+
device=self.device_address,
|
|
919
|
+
)
|
|
920
|
+
response = call_sync(
|
|
921
|
+
"binary/device/get_is_identified",
|
|
922
|
+
request,
|
|
923
|
+
dto.BoolResponse.from_binary)
|
|
924
|
+
return response.value
|