zaber-motion 7.13.0__py3-none-win32.whl → 7.14.0__py3-none-win32.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (492) hide show
  1. zaber_motion/__init__.py +103 -103
  2. zaber_motion/ascii/__init__.py +73 -73
  3. zaber_motion/ascii/all_axes.py +352 -352
  4. zaber_motion/ascii/axis.py +1673 -1673
  5. zaber_motion/ascii/axis_group.py +391 -391
  6. zaber_motion/ascii/axis_settings.py +752 -752
  7. zaber_motion/ascii/connection.py +1174 -1174
  8. zaber_motion/ascii/device.py +908 -908
  9. zaber_motion/ascii/device_io.py +1170 -1170
  10. zaber_motion/ascii/device_settings.py +735 -735
  11. zaber_motion/ascii/lockstep.py +1184 -1184
  12. zaber_motion/ascii/oscilloscope.py +635 -635
  13. zaber_motion/ascii/oscilloscope_data.py +240 -240
  14. zaber_motion/ascii/pvt.py +105 -105
  15. zaber_motion/ascii/pvt_buffer.py +146 -146
  16. zaber_motion/ascii/pvt_io.py +630 -630
  17. zaber_motion/ascii/pvt_sequence.py +1530 -1530
  18. zaber_motion/ascii/servo_tuner.py +637 -637
  19. zaber_motion/ascii/setting_constants.py +1755 -1755
  20. zaber_motion/ascii/storage.py +905 -905
  21. zaber_motion/ascii/stream.py +2182 -2182
  22. zaber_motion/ascii/stream_buffer.py +101 -101
  23. zaber_motion/ascii/stream_io.py +700 -700
  24. zaber_motion/ascii/streams.py +105 -105
  25. zaber_motion/ascii/transport.py +202 -202
  26. zaber_motion/ascii/trigger.py +886 -886
  27. zaber_motion/ascii/triggers.py +241 -241
  28. zaber_motion/ascii/warning_flags.py +178 -178
  29. zaber_motion/ascii/warnings.py +152 -152
  30. zaber_motion/async_utils.py +46 -46
  31. zaber_motion/binary/__init__.py +14 -14
  32. zaber_motion/binary/connection.py +648 -648
  33. zaber_motion/binary/device.py +924 -924
  34. zaber_motion/binary/device_settings.py +121 -121
  35. zaber_motion/bindings.py +50 -50
  36. zaber_motion/call.py +198 -198
  37. zaber_motion/convert_exception.py +138 -138
  38. zaber_motion/dto/__init__.py +11 -11
  39. zaber_motion/dto/ascii/__init__.py +46 -46
  40. zaber_motion/dto/ascii/alert_event.py +110 -110
  41. zaber_motion/dto/ascii/axis_identity.py +134 -134
  42. zaber_motion/dto/ascii/axis_type.py +14 -14
  43. zaber_motion/dto/ascii/can_set_state_axis_response.py +69 -69
  44. zaber_motion/dto/ascii/can_set_state_device_response.py +75 -75
  45. zaber_motion/dto/ascii/conversion_factor.py +81 -81
  46. zaber_motion/dto/ascii/device_identity.py +136 -136
  47. zaber_motion/dto/ascii/device_io_info.py +108 -108
  48. zaber_motion/dto/ascii/digital_output_action.py +13 -13
  49. zaber_motion/dto/ascii/get_axis_setting.py +64 -64
  50. zaber_motion/dto/ascii/get_axis_setting_result.py +81 -81
  51. zaber_motion/dto/ascii/get_setting.py +88 -88
  52. zaber_motion/dto/ascii/get_setting_result.py +87 -87
  53. zaber_motion/dto/ascii/io_port_label.py +84 -84
  54. zaber_motion/dto/ascii/io_port_type.py +14 -14
  55. zaber_motion/dto/ascii/lockstep_axes.py +108 -108
  56. zaber_motion/dto/ascii/measurement_sequence.py +73 -73
  57. zaber_motion/dto/ascii/message_type.py +14 -14
  58. zaber_motion/dto/ascii/optional_measurement_sequence.py +71 -71
  59. zaber_motion/dto/ascii/oscilloscope_capture_properties.py +116 -116
  60. zaber_motion/dto/ascii/oscilloscope_data_source.py +11 -11
  61. zaber_motion/dto/ascii/paramset_info.py +92 -92
  62. zaber_motion/dto/ascii/pid_tuning.py +125 -125
  63. zaber_motion/dto/ascii/pvt_axis_definition.py +70 -70
  64. zaber_motion/dto/ascii/pvt_axis_type.py +11 -11
  65. zaber_motion/dto/ascii/pvt_csv_data.py +75 -75
  66. zaber_motion/dto/ascii/pvt_mode.py +12 -12
  67. zaber_motion/dto/ascii/pvt_sequence_data.py +99 -99
  68. zaber_motion/dto/ascii/response.py +137 -137
  69. zaber_motion/dto/ascii/servo_tuning_param.py +66 -66
  70. zaber_motion/dto/ascii/servo_tuning_paramset.py +21 -21
  71. zaber_motion/dto/ascii/set_state_axis_response.py +75 -75
  72. zaber_motion/dto/ascii/set_state_device_response.py +80 -80
  73. zaber_motion/dto/ascii/simple_tuning.py +118 -118
  74. zaber_motion/dto/ascii/simple_tuning_param_definition.py +100 -100
  75. zaber_motion/dto/ascii/stream_axis_definition.py +70 -70
  76. zaber_motion/dto/ascii/stream_axis_type.py +11 -11
  77. zaber_motion/dto/ascii/stream_mode.py +13 -13
  78. zaber_motion/dto/ascii/trigger_action.py +12 -12
  79. zaber_motion/dto/ascii/trigger_condition.py +15 -15
  80. zaber_motion/dto/ascii/trigger_enabled_state.py +68 -68
  81. zaber_motion/dto/ascii/trigger_operation.py +12 -12
  82. zaber_motion/dto/ascii/trigger_state.py +114 -114
  83. zaber_motion/dto/ascii/unknown_response_event.py +137 -137
  84. zaber_motion/dto/axis_address.py +74 -74
  85. zaber_motion/dto/binary/__init__.py +11 -11
  86. zaber_motion/dto/binary/binary_settings.py +74 -74
  87. zaber_motion/dto/binary/command_code.py +106 -106
  88. zaber_motion/dto/binary/device_identity.py +156 -156
  89. zaber_motion/dto/binary/device_type.py +12 -12
  90. zaber_motion/dto/binary/error_code.py +101 -101
  91. zaber_motion/dto/binary/message.py +91 -91
  92. zaber_motion/dto/binary/reply_code.py +16 -16
  93. zaber_motion/dto/binary/reply_only_event.py +91 -91
  94. zaber_motion/dto/binary/unknown_response_event.py +91 -91
  95. zaber_motion/dto/channel_address.py +74 -74
  96. zaber_motion/dto/device_db_source.py +66 -66
  97. zaber_motion/dto/device_db_source_type.py +11 -11
  98. zaber_motion/dto/exceptions/__init__.py +24 -24
  99. zaber_motion/dto/exceptions/binary_command_failed_exception_data.py +57 -57
  100. zaber_motion/dto/exceptions/command_failed_exception_data.py +151 -151
  101. zaber_motion/dto/exceptions/command_too_long_exception_data.py +98 -98
  102. zaber_motion/dto/exceptions/device_address_conflict_exception_data.py +63 -63
  103. zaber_motion/dto/exceptions/device_db_failed_exception_data.py +74 -74
  104. zaber_motion/dto/exceptions/device_db_inner_error.py +85 -85
  105. zaber_motion/dto/exceptions/g_code_execution_exception_data.py +75 -75
  106. zaber_motion/dto/exceptions/g_code_syntax_exception_data.py +75 -75
  107. zaber_motion/dto/exceptions/invalid_packet_exception_data.py +63 -63
  108. zaber_motion/dto/exceptions/invalid_pvt_point.py +69 -69
  109. zaber_motion/dto/exceptions/invalid_response_exception_data.py +51 -51
  110. zaber_motion/dto/exceptions/movement_failed_exception_data.py +104 -104
  111. zaber_motion/dto/exceptions/movement_interrupted_exception_data.py +104 -104
  112. zaber_motion/dto/exceptions/operation_failed_exception_data.py +104 -104
  113. zaber_motion/dto/exceptions/pvt_execution_exception_data.py +86 -86
  114. zaber_motion/dto/exceptions/pvt_movement_failed_exception_data.py +69 -69
  115. zaber_motion/dto/exceptions/pvt_movement_interrupted_exception_data.py +69 -69
  116. zaber_motion/dto/exceptions/set_device_state_exception_data.py +176 -176
  117. zaber_motion/dto/exceptions/set_peripheral_state_exception_data.py +121 -121
  118. zaber_motion/dto/exceptions/stream_execution_exception_data.py +63 -63
  119. zaber_motion/dto/exceptions/stream_movement_failed_exception_data.py +69 -69
  120. zaber_motion/dto/exceptions/stream_movement_interrupted_exception_data.py +69 -69
  121. zaber_motion/dto/firmware_version.py +91 -91
  122. zaber_motion/dto/gcode/__init__.py +9 -9
  123. zaber_motion/dto/gcode/axis_definition.py +74 -74
  124. zaber_motion/dto/gcode/axis_mapping.py +69 -69
  125. zaber_motion/dto/gcode/axis_transformation.py +79 -79
  126. zaber_motion/dto/gcode/device_definition.py +99 -99
  127. zaber_motion/dto/gcode/translate_message.py +87 -87
  128. zaber_motion/dto/gcode/translate_result.py +79 -79
  129. zaber_motion/dto/gcode/translator_config.py +84 -84
  130. zaber_motion/dto/log_output_mode.py +13 -13
  131. zaber_motion/dto/measurement.py +67 -67
  132. zaber_motion/dto/microscopy/__init__.py +6 -6
  133. zaber_motion/dto/microscopy/autofocus_status.py +57 -57
  134. zaber_motion/dto/microscopy/microscope_config.py +159 -159
  135. zaber_motion/dto/microscopy/third_party_components.py +55 -55
  136. zaber_motion/dto/microscopy/wdi_autofocus_provider_status.py +57 -57
  137. zaber_motion/dto/named_parameter.py +64 -64
  138. zaber_motion/dto/product/__init__.py +5 -5
  139. zaber_motion/dto/product/process_controller_mode.py +13 -13
  140. zaber_motion/dto/product/process_controller_source.py +72 -72
  141. zaber_motion/dto/product/process_controller_source_sensor.py +11 -11
  142. zaber_motion/dto/requests/__init__.py +256 -254
  143. zaber_motion/dto/requests/alert_event_wrapper.py +82 -82
  144. zaber_motion/dto/requests/autofocus_focus_request.py +131 -131
  145. zaber_motion/dto/requests/autofocus_get_objective_params_request.py +121 -121
  146. zaber_motion/dto/requests/autofocus_get_objective_params_response.py +56 -56
  147. zaber_motion/dto/requests/autofocus_get_status_response.py +50 -50
  148. zaber_motion/dto/requests/autofocus_set_objective_params_request.py +141 -141
  149. zaber_motion/dto/requests/axes_empty_request.py +95 -95
  150. zaber_motion/dto/requests/axes_get_setting_request.py +121 -121
  151. zaber_motion/dto/requests/axes_move_request.py +114 -114
  152. zaber_motion/dto/requests/axis_empty_request.py +79 -79
  153. zaber_motion/dto/requests/axis_move_type.py +12 -12
  154. zaber_motion/dto/requests/axis_to_string_request.py +88 -88
  155. zaber_motion/dto/requests/binary_device_detect_request.py +56 -56
  156. zaber_motion/dto/requests/binary_device_detect_response.py +57 -57
  157. zaber_motion/dto/requests/binary_device_get_setting_request.py +89 -89
  158. zaber_motion/dto/requests/binary_device_home_request.py +88 -88
  159. zaber_motion/dto/requests/binary_device_move_request.py +111 -111
  160. zaber_motion/dto/requests/binary_device_set_setting_request.py +100 -100
  161. zaber_motion/dto/requests/binary_device_stop_request.py +88 -88
  162. zaber_motion/dto/requests/binary_generic_with_units_request.py +122 -122
  163. zaber_motion/dto/requests/binary_message_collection.py +56 -56
  164. zaber_motion/dto/requests/binary_reply_only_event_wrapper.py +82 -82
  165. zaber_motion/dto/requests/bool_response.py +43 -43
  166. zaber_motion/dto/requests/can_set_state_axis_response.py +60 -60
  167. zaber_motion/dto/requests/can_set_state_request.py +100 -100
  168. zaber_motion/dto/requests/channel_on.py +84 -84
  169. zaber_motion/dto/requests/channel_set_intensity.py +90 -90
  170. zaber_motion/dto/requests/check_version_request.py +54 -54
  171. zaber_motion/dto/requests/custom_interface_close_request.py +60 -60
  172. zaber_motion/dto/requests/custom_interface_open_response.py +51 -51
  173. zaber_motion/dto/requests/custom_interface_read_request.py +51 -51
  174. zaber_motion/dto/requests/custom_interface_write_request.py +60 -60
  175. zaber_motion/dto/requests/device_cancel_all_outputs_schedule_request.py +80 -80
  176. zaber_motion/dto/requests/device_cancel_output_schedule_request.py +84 -84
  177. zaber_motion/dto/requests/device_convert_setting_request.py +116 -116
  178. zaber_motion/dto/requests/device_detect_request.py +68 -68
  179. zaber_motion/dto/requests/device_detect_response.py +57 -57
  180. zaber_motion/dto/requests/device_empty_request.py +65 -65
  181. zaber_motion/dto/requests/device_get_all_analog_io_request.py +74 -74
  182. zaber_motion/dto/requests/device_get_all_analog_io_response.py +54 -54
  183. zaber_motion/dto/requests/device_get_all_digital_io_request.py +74 -74
  184. zaber_motion/dto/requests/device_get_all_digital_io_response.py +46 -46
  185. zaber_motion/dto/requests/device_get_analog_io_request.py +88 -88
  186. zaber_motion/dto/requests/device_get_digital_io_request.py +88 -88
  187. zaber_motion/dto/requests/device_get_setting_request.py +100 -100
  188. zaber_motion/dto/requests/device_get_storage_request.py +93 -93
  189. zaber_motion/dto/requests/device_get_warnings_request.py +84 -84
  190. zaber_motion/dto/requests/device_get_warnings_response.py +51 -51
  191. zaber_motion/dto/requests/device_home_request.py +84 -84
  192. zaber_motion/dto/requests/device_identify_request.py +77 -77
  193. zaber_motion/dto/requests/device_move_request.py +177 -177
  194. zaber_motion/dto/requests/device_move_sin_request.py +140 -140
  195. zaber_motion/dto/requests/device_multi_get_setting_request.py +118 -118
  196. zaber_motion/dto/requests/device_on_all_request.py +56 -56
  197. zaber_motion/dto/requests/device_on_all_response.py +57 -57
  198. zaber_motion/dto/requests/device_restore_request.py +84 -84
  199. zaber_motion/dto/requests/device_set_all_analog_outputs_request.py +82 -82
  200. zaber_motion/dto/requests/device_set_all_analog_outputs_schedule_request.py +121 -121
  201. zaber_motion/dto/requests/device_set_all_digital_outputs_request.py +83 -83
  202. zaber_motion/dto/requests/device_set_all_digital_outputs_schedule_request.py +122 -122
  203. zaber_motion/dto/requests/device_set_analog_output_request.py +90 -90
  204. zaber_motion/dto/requests/device_set_analog_output_schedule_request.py +124 -124
  205. zaber_motion/dto/requests/device_set_digital_output_request.py +91 -91
  206. zaber_motion/dto/requests/device_set_digital_output_schedule_request.py +125 -125
  207. zaber_motion/dto/requests/device_set_lowpass_filter_request.py +102 -102
  208. zaber_motion/dto/requests/device_set_setting_bool_request.py +93 -93
  209. zaber_motion/dto/requests/device_set_setting_int_request.py +102 -102
  210. zaber_motion/dto/requests/device_set_setting_request.py +111 -111
  211. zaber_motion/dto/requests/device_set_setting_str_request.py +97 -97
  212. zaber_motion/dto/requests/device_set_storage_bool_request.py +93 -93
  213. zaber_motion/dto/requests/device_set_storage_number_request.py +99 -99
  214. zaber_motion/dto/requests/device_set_storage_request.py +102 -102
  215. zaber_motion/dto/requests/device_set_unit_conversions_request.py +108 -108
  216. zaber_motion/dto/requests/device_stop_request.py +84 -84
  217. zaber_motion/dto/requests/device_storage_list_keys_request.py +88 -88
  218. zaber_motion/dto/requests/device_storage_request.py +88 -88
  219. zaber_motion/dto/requests/device_type.py +8 -8
  220. zaber_motion/dto/requests/device_wait_until_idle_request.py +84 -84
  221. zaber_motion/dto/requests/disconnected_event.py +101 -101
  222. zaber_motion/dto/requests/double_array_response.py +54 -54
  223. zaber_motion/dto/requests/double_response.py +48 -48
  224. zaber_motion/dto/requests/driver_enable_request.py +90 -90
  225. zaber_motion/dto/requests/empty_autofocus_request.py +107 -107
  226. zaber_motion/dto/requests/empty_request.py +38 -38
  227. zaber_motion/dto/requests/errors.py +68 -68
  228. zaber_motion/dto/requests/find_device_request.py +65 -65
  229. zaber_motion/dto/requests/find_device_response.py +51 -51
  230. zaber_motion/dto/requests/forget_devices_request.py +71 -71
  231. zaber_motion/dto/requests/gateway_event.py +45 -45
  232. zaber_motion/dto/requests/gateway_request.py +45 -45
  233. zaber_motion/dto/requests/gateway_response.py +69 -69
  234. zaber_motion/dto/requests/generic_binary_request.py +107 -107
  235. zaber_motion/dto/requests/generic_command_request.py +107 -107
  236. zaber_motion/dto/requests/generic_command_response_collection.py +56 -56
  237. zaber_motion/dto/requests/get_all_io_port_labels_response.py +56 -56
  238. zaber_motion/dto/requests/get_axis_setting_results.py +56 -56
  239. zaber_motion/dto/requests/get_io_port_label_request.py +91 -91
  240. zaber_motion/dto/requests/get_setting_results.py +56 -56
  241. zaber_motion/dto/requests/get_simple_tuning_param_definition_response.py +56 -56
  242. zaber_motion/dto/requests/int_64_response.py +51 -51
  243. zaber_motion/dto/requests/int_array_response.py +57 -57
  244. zaber_motion/dto/requests/int_request.py +51 -51
  245. zaber_motion/dto/requests/int_response.py +51 -51
  246. zaber_motion/dto/requests/interface_empty_request.py +51 -51
  247. zaber_motion/dto/requests/interface_type.py +11 -11
  248. zaber_motion/dto/requests/load_paramset.py +102 -102
  249. zaber_motion/dto/requests/lockstep_disable_request.py +84 -84
  250. zaber_motion/dto/requests/lockstep_empty_request.py +79 -79
  251. zaber_motion/dto/requests/lockstep_enable_request.py +99 -99
  252. zaber_motion/dto/requests/lockstep_get_axis_numbers_response.py +57 -57
  253. zaber_motion/dto/requests/lockstep_get_request.py +91 -91
  254. zaber_motion/dto/requests/lockstep_home_request.py +84 -84
  255. zaber_motion/dto/requests/lockstep_move_request.py +163 -163
  256. zaber_motion/dto/requests/lockstep_move_sin_request.py +140 -140
  257. zaber_motion/dto/requests/lockstep_set_request.py +116 -116
  258. zaber_motion/dto/requests/lockstep_stop_request.py +84 -84
  259. zaber_motion/dto/requests/lockstep_wait_until_idle_request.py +84 -84
  260. zaber_motion/dto/requests/microscope_config_response.py +50 -50
  261. zaber_motion/dto/requests/microscope_empty_request.py +65 -65
  262. zaber_motion/dto/requests/microscope_find_request.py +63 -63
  263. zaber_motion/dto/requests/microscope_init_request.py +70 -70
  264. zaber_motion/dto/requests/microscope_trigger_camera_request.py +107 -107
  265. zaber_motion/dto/requests/objective_changer_change_request.py +119 -119
  266. zaber_motion/dto/requests/objective_changer_create_response.py +79 -79
  267. zaber_motion/dto/requests/objective_changer_get_current_response.py +51 -51
  268. zaber_motion/dto/requests/objective_changer_request.py +93 -93
  269. zaber_motion/dto/requests/objective_changer_set_request.py +116 -116
  270. zaber_motion/dto/requests/open_binary_interface_request.py +100 -100
  271. zaber_motion/dto/requests/open_interface_request.py +159 -159
  272. zaber_motion/dto/requests/open_interface_response.py +51 -51
  273. zaber_motion/dto/requests/oscilloscope_add_io_channel_request.py +91 -91
  274. zaber_motion/dto/requests/oscilloscope_add_setting_channel_request.py +88 -88
  275. zaber_motion/dto/requests/oscilloscope_data_get_request.py +63 -63
  276. zaber_motion/dto/requests/oscilloscope_data_get_sample_time_request.py +77 -77
  277. zaber_motion/dto/requests/oscilloscope_data_get_samples_response.py +54 -54
  278. zaber_motion/dto/requests/oscilloscope_data_identifier.py +51 -51
  279. zaber_motion/dto/requests/oscilloscope_read_response.py +57 -57
  280. zaber_motion/dto/requests/oscilloscope_request.py +65 -65
  281. zaber_motion/dto/requests/oscilloscope_start_request.py +79 -79
  282. zaber_motion/dto/requests/prepare_command_request.py +108 -108
  283. zaber_motion/dto/requests/process_on.py +107 -107
  284. zaber_motion/dto/requests/pvt_buffer_get_sequence_data_request.py +79 -79
  285. zaber_motion/dto/requests/pvt_csv_request.py +59 -59
  286. zaber_motion/dto/requests/pvt_generate_positions_request.py +74 -74
  287. zaber_motion/dto/requests/pvt_generate_velocities_and_times_request.py +96 -96
  288. zaber_motion/dto/requests/pvt_generate_velocities_request.py +93 -93
  289. zaber_motion/dto/requests/pvt_load_csv_request.py +45 -45
  290. zaber_motion/dto/requests/pvt_point_request.py +145 -145
  291. zaber_motion/dto/requests/pvt_points_request.py +147 -147
  292. zaber_motion/dto/requests/pvt_save_csv_request.py +74 -74
  293. zaber_motion/dto/requests/pvt_submit_sequence_data_request.py +93 -93
  294. zaber_motion/dto/requests/renumber_request.py +79 -79
  295. zaber_motion/dto/requests/response_type.py +8 -8
  296. zaber_motion/dto/requests/servo_tuning_paramset_response.py +48 -48
  297. zaber_motion/dto/requests/servo_tuning_request.py +91 -91
  298. zaber_motion/dto/requests/set_device_db_layered_sources_request.py +56 -56
  299. zaber_motion/dto/requests/set_device_db_source_request.py +63 -63
  300. zaber_motion/dto/requests/set_interface_checksum_enabled_request.py +56 -56
  301. zaber_motion/dto/requests/set_interface_timeout_request.py +65 -65
  302. zaber_motion/dto/requests/set_internal_mode_request.py +43 -43
  303. zaber_motion/dto/requests/set_io_port_label_request.py +100 -100
  304. zaber_motion/dto/requests/set_log_output_request.py +57 -57
  305. zaber_motion/dto/requests/set_process_controller_source.py +93 -93
  306. zaber_motion/dto/requests/set_servo_tuning_pid_request.py +135 -135
  307. zaber_motion/dto/requests/set_servo_tuning_request.py +116 -116
  308. zaber_motion/dto/requests/set_simple_tuning.py +174 -174
  309. zaber_motion/dto/requests/set_state_request.py +93 -93
  310. zaber_motion/dto/requests/stream_arc_request.py +199 -199
  311. zaber_motion/dto/requests/stream_buffer_erase_request.py +84 -84
  312. zaber_motion/dto/requests/stream_buffer_get_content_request.py +84 -84
  313. zaber_motion/dto/requests/stream_buffer_get_content_response.py +51 -51
  314. zaber_motion/dto/requests/stream_buffer_list.py +70 -70
  315. zaber_motion/dto/requests/stream_call_request.py +112 -112
  316. zaber_motion/dto/requests/stream_cancel_all_outputs_schedule_request.py +99 -99
  317. zaber_motion/dto/requests/stream_cancel_output_schedule_request.py +103 -103
  318. zaber_motion/dto/requests/stream_circle_request.py +155 -155
  319. zaber_motion/dto/requests/stream_empty_request.py +84 -84
  320. zaber_motion/dto/requests/stream_generic_command_batch_request.py +99 -99
  321. zaber_motion/dto/requests/stream_generic_command_request.py +93 -93
  322. zaber_motion/dto/requests/stream_get_axes_response.py +75 -75
  323. zaber_motion/dto/requests/stream_get_max_centripetal_acceleration_request.py +96 -96
  324. zaber_motion/dto/requests/stream_get_max_speed_request.py +96 -96
  325. zaber_motion/dto/requests/stream_get_max_tangential_acceleration_request.py +96 -96
  326. zaber_motion/dto/requests/stream_line_request.py +135 -135
  327. zaber_motion/dto/requests/stream_mode_response.py +60 -60
  328. zaber_motion/dto/requests/stream_segment_type.py +8 -8
  329. zaber_motion/dto/requests/stream_set_all_analog_outputs_request.py +101 -101
  330. zaber_motion/dto/requests/stream_set_all_analog_outputs_schedule_request.py +140 -140
  331. zaber_motion/dto/requests/stream_set_all_digital_outputs_request.py +102 -102
  332. zaber_motion/dto/requests/stream_set_all_digital_outputs_schedule_request.py +141 -141
  333. zaber_motion/dto/requests/stream_set_analog_output_request.py +109 -109
  334. zaber_motion/dto/requests/stream_set_analog_output_schedule_request.py +143 -143
  335. zaber_motion/dto/requests/stream_set_digital_output_request.py +110 -110
  336. zaber_motion/dto/requests/stream_set_digital_output_schedule_request.py +144 -144
  337. zaber_motion/dto/requests/stream_set_hold_request.py +89 -89
  338. zaber_motion/dto/requests/stream_set_max_centripetal_acceleration_request.py +107 -107
  339. zaber_motion/dto/requests/stream_set_max_speed_request.py +107 -107
  340. zaber_motion/dto/requests/stream_set_max_tangential_acceleration_request.py +107 -107
  341. zaber_motion/dto/requests/stream_setup_live_composite_request.py +123 -123
  342. zaber_motion/dto/requests/stream_setup_live_request.py +104 -104
  343. zaber_motion/dto/requests/stream_setup_store_arbitrary_axes_request.py +126 -126
  344. zaber_motion/dto/requests/stream_setup_store_composite_request.py +151 -151
  345. zaber_motion/dto/requests/stream_setup_store_request.py +132 -132
  346. zaber_motion/dto/requests/stream_wait_analog_input_request.py +118 -118
  347. zaber_motion/dto/requests/stream_wait_digital_input_request.py +103 -103
  348. zaber_motion/dto/requests/stream_wait_request.py +107 -107
  349. zaber_motion/dto/requests/stream_wait_until_idle_request.py +89 -89
  350. zaber_motion/dto/requests/string_array_response.py +51 -51
  351. zaber_motion/dto/requests/string_response.py +45 -45
  352. zaber_motion/dto/requests/test_event.py +45 -45
  353. zaber_motion/dto/requests/test_request.py +55 -55
  354. zaber_motion/dto/requests/test_request_complex.py +57 -0
  355. zaber_motion/dto/requests/test_response.py +45 -45
  356. zaber_motion/dto/requests/test_response_long.py +51 -51
  357. zaber_motion/dto/requests/toggle_device_db_store_request.py +50 -50
  358. zaber_motion/dto/requests/tools_list_serial_ports_response.py +51 -51
  359. zaber_motion/dto/requests/translator_create_from_device_request.py +97 -97
  360. zaber_motion/dto/requests/translator_create_live_request.py +91 -91
  361. zaber_motion/dto/requests/translator_create_request.py +62 -62
  362. zaber_motion/dto/requests/translator_create_response.py +51 -51
  363. zaber_motion/dto/requests/translator_empty_request.py +51 -51
  364. zaber_motion/dto/requests/translator_flush_live_request.py +56 -56
  365. zaber_motion/dto/requests/translator_flush_response.py +51 -51
  366. zaber_motion/dto/requests/translator_get_axis_offset_request.py +81 -81
  367. zaber_motion/dto/requests/translator_get_axis_position_request.py +72 -72
  368. zaber_motion/dto/requests/translator_set_axis_position_request.py +83 -83
  369. zaber_motion/dto/requests/translator_set_feed_rate_override_request.py +62 -62
  370. zaber_motion/dto/requests/translator_set_traverse_rate_request.py +74 -74
  371. zaber_motion/dto/requests/translator_translate_request.py +60 -60
  372. zaber_motion/dto/requests/trigger_clear_action_request.py +91 -91
  373. zaber_motion/dto/requests/trigger_empty_request.py +79 -79
  374. zaber_motion/dto/requests/trigger_enable_request.py +93 -93
  375. zaber_motion/dto/requests/trigger_enabled_states.py +56 -56
  376. zaber_motion/dto/requests/trigger_fire_at_interval_request.py +102 -102
  377. zaber_motion/dto/requests/trigger_fire_when_distance_travelled_request.py +116 -116
  378. zaber_motion/dto/requests/trigger_fire_when_io_request.py +128 -128
  379. zaber_motion/dto/requests/trigger_fire_when_request.py +88 -88
  380. zaber_motion/dto/requests/trigger_fire_when_setting_request.py +137 -137
  381. zaber_motion/dto/requests/trigger_on_fire_request.py +114 -114
  382. zaber_motion/dto/requests/trigger_on_fire_set_request.py +149 -149
  383. zaber_motion/dto/requests/trigger_on_fire_set_to_setting_request.py +149 -149
  384. zaber_motion/dto/requests/trigger_set_label_request.py +88 -88
  385. zaber_motion/dto/requests/trigger_states.py +56 -56
  386. zaber_motion/dto/requests/unit_convert_unit_request.py +71 -71
  387. zaber_motion/dto/requests/unit_get_enum_request.py +45 -45
  388. zaber_motion/dto/requests/unit_get_enum_response.py +48 -48
  389. zaber_motion/dto/requests/unit_get_symbol_request.py +48 -48
  390. zaber_motion/dto/requests/unit_get_symbol_response.py +45 -45
  391. zaber_motion/dto/requests/unknown_binary_response_event_wrapper.py +82 -82
  392. zaber_motion/dto/requests/unknown_response_event_wrapper.py +82 -82
  393. zaber_motion/dto/requests/wait_to_clear_warnings_request.py +105 -105
  394. zaber_motion/dto/requests/wait_to_respond_request.py +76 -76
  395. zaber_motion/dto/requests/wdi_generic_float_request.py +119 -0
  396. zaber_motion/dto/requests/wdi_generic_request.py +136 -136
  397. zaber_motion/dto/requests/wdi_get_status_response.py +50 -50
  398. zaber_motion/dto/rotation_direction.py +13 -13
  399. zaber_motion/dto_object.py +18 -18
  400. zaber_motion/events.py +112 -112
  401. zaber_motion/exceptions/__init__.py +87 -87
  402. zaber_motion/exceptions/bad_command_exception.py +10 -10
  403. zaber_motion/exceptions/bad_data_exception.py +10 -10
  404. zaber_motion/exceptions/binary_command_failed_exception.py +27 -27
  405. zaber_motion/exceptions/command_failed_exception.py +27 -27
  406. zaber_motion/exceptions/command_preempted_exception.py +10 -10
  407. zaber_motion/exceptions/command_too_long_exception.py +27 -27
  408. zaber_motion/exceptions/connection_closed_exception.py +10 -10
  409. zaber_motion/exceptions/connection_failed_exception.py +10 -10
  410. zaber_motion/exceptions/conversion_failed_exception.py +10 -10
  411. zaber_motion/exceptions/device_address_conflict_exception.py +27 -27
  412. zaber_motion/exceptions/device_busy_exception.py +10 -10
  413. zaber_motion/exceptions/device_db_failed_exception.py +27 -27
  414. zaber_motion/exceptions/device_detection_failed_exception.py +10 -10
  415. zaber_motion/exceptions/device_failed_exception.py +11 -11
  416. zaber_motion/exceptions/device_not_identified_exception.py +10 -10
  417. zaber_motion/exceptions/driver_disabled_exception.py +10 -10
  418. zaber_motion/exceptions/g_code_execution_exception.py +27 -27
  419. zaber_motion/exceptions/g_code_syntax_exception.py +27 -27
  420. zaber_motion/exceptions/incompatible_shared_library_exception.py +11 -11
  421. zaber_motion/exceptions/internal_error_exception.py +10 -10
  422. zaber_motion/exceptions/invalid_argument_exception.py +10 -10
  423. zaber_motion/exceptions/invalid_csv_data_exception.py +10 -10
  424. zaber_motion/exceptions/invalid_data_exception.py +10 -10
  425. zaber_motion/exceptions/invalid_operation_exception.py +10 -10
  426. zaber_motion/exceptions/invalid_packet_exception.py +27 -27
  427. zaber_motion/exceptions/invalid_park_state_exception.py +10 -10
  428. zaber_motion/exceptions/invalid_request_data_exception.py +11 -11
  429. zaber_motion/exceptions/invalid_response_exception.py +27 -27
  430. zaber_motion/exceptions/io_channel_out_of_range_exception.py +10 -10
  431. zaber_motion/exceptions/io_failed_exception.py +10 -10
  432. zaber_motion/exceptions/lockstep_enabled_exception.py +10 -10
  433. zaber_motion/exceptions/lockstep_not_enabled_exception.py +10 -10
  434. zaber_motion/exceptions/motion_lib_exception.py +18 -18
  435. zaber_motion/exceptions/movement_failed_exception.py +27 -27
  436. zaber_motion/exceptions/movement_interrupted_exception.py +27 -27
  437. zaber_motion/exceptions/no_device_found_exception.py +10 -10
  438. zaber_motion/exceptions/no_value_for_key_exception.py +10 -10
  439. zaber_motion/exceptions/not_supported_exception.py +10 -10
  440. zaber_motion/exceptions/operation_failed_exception.py +27 -27
  441. zaber_motion/exceptions/os_failed_exception.py +10 -10
  442. zaber_motion/exceptions/out_of_request_ids_exception.py +10 -10
  443. zaber_motion/exceptions/pvt_discontinuity_exception.py +10 -10
  444. zaber_motion/exceptions/pvt_execution_exception.py +27 -27
  445. zaber_motion/exceptions/pvt_mode_exception.py +10 -10
  446. zaber_motion/exceptions/pvt_movement_failed_exception.py +27 -27
  447. zaber_motion/exceptions/pvt_movement_interrupted_exception.py +27 -27
  448. zaber_motion/exceptions/pvt_sequence_generation_failed_exception.py +10 -10
  449. zaber_motion/exceptions/pvt_setup_failed_exception.py +10 -10
  450. zaber_motion/exceptions/remote_mode_exception.py +11 -11
  451. zaber_motion/exceptions/request_timeout_exception.py +10 -10
  452. zaber_motion/exceptions/serial_port_busy_exception.py +10 -10
  453. zaber_motion/exceptions/set_device_state_failed_exception.py +27 -27
  454. zaber_motion/exceptions/set_peripheral_state_failed_exception.py +27 -27
  455. zaber_motion/exceptions/setting_not_found_exception.py +10 -10
  456. zaber_motion/exceptions/stream_discontinuity_exception.py +10 -10
  457. zaber_motion/exceptions/stream_execution_exception.py +27 -27
  458. zaber_motion/exceptions/stream_mode_exception.py +10 -10
  459. zaber_motion/exceptions/stream_movement_failed_exception.py +27 -27
  460. zaber_motion/exceptions/stream_movement_interrupted_exception.py +27 -27
  461. zaber_motion/exceptions/stream_setup_failed_exception.py +10 -10
  462. zaber_motion/exceptions/timeout_exception.py +10 -10
  463. zaber_motion/exceptions/transport_already_used_exception.py +10 -10
  464. zaber_motion/exceptions/unknown_request_exception.py +10 -10
  465. zaber_motion/gcode/__init__.py +11 -11
  466. zaber_motion/gcode/offline_translator.py +401 -401
  467. zaber_motion/gcode/translator.py +424 -424
  468. zaber_motion/library.py +179 -179
  469. zaber_motion/microscopy/__init__.py +14 -14
  470. zaber_motion/microscopy/autofocus.py +645 -645
  471. zaber_motion/microscopy/camera_trigger.py +108 -108
  472. zaber_motion/microscopy/filter_changer.py +167 -167
  473. zaber_motion/microscopy/illuminator.py +139 -139
  474. zaber_motion/microscopy/illuminator_channel.py +616 -616
  475. zaber_motion/microscopy/microscope.py +315 -315
  476. zaber_motion/microscopy/objective_changer.py +403 -403
  477. zaber_motion/microscopy/wdi_autofocus_provider.py +536 -396
  478. zaber_motion/product/__init__.py +7 -7
  479. zaber_motion/product/process.py +818 -818
  480. zaber_motion/product/process_controller.py +134 -134
  481. zaber_motion/serialization.py +32 -32
  482. zaber_motion/tools.py +78 -78
  483. zaber_motion/unit_table.py +86 -86
  484. zaber_motion/units.py +206 -206
  485. zaber_motion/version.py +1 -1
  486. {zaber_motion-7.13.0.dist-info → zaber_motion-7.14.0.dist-info}/LICENSE.txt +2119 -2119
  487. {zaber_motion-7.13.0.dist-info → zaber_motion-7.14.0.dist-info}/METADATA +1 -1
  488. zaber_motion-7.14.0.dist-info/RECORD +496 -0
  489. zaber_motion_bindings/zaber-motion-core-windows-386.dll +0 -0
  490. zaber_motion-7.13.0.dist-info/RECORD +0 -494
  491. {zaber_motion-7.13.0.dist-info → zaber_motion-7.14.0.dist-info}/WHEEL +0 -0
  492. {zaber_motion-7.13.0.dist-info → zaber_motion-7.14.0.dist-info}/top_level.txt +0 -0
@@ -1,635 +1,635 @@
1
- # ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
2
- # ============== DO NOT EDIT DIRECTLY ============== #
3
- from typing import TYPE_CHECKING, List
4
- from ..dto import requests as dto
5
- from ..units import Units, TimeUnits, FrequencyUnits
6
- from ..call import call, call_async
7
- from ..dto.ascii.io_port_type import IoPortType
8
- from .oscilloscope_data import OscilloscopeData
9
-
10
- if TYPE_CHECKING:
11
- from .device import Device
12
-
13
-
14
- class Oscilloscope:
15
- """
16
- Provides a convenient way to control the oscilloscope data recording feature of some devices.
17
- The oscilloscope can record the values of some settings over time at high resolution.
18
- Requires at least Firmware 7.00.
19
- """
20
-
21
- @property
22
- def device(self) -> 'Device':
23
- """
24
- Device that this Oscilloscope measures.
25
- """
26
- return self._device
27
-
28
- def __init__(self, device: 'Device'):
29
- self._device: 'Device' = device
30
-
31
- def add_channel(
32
- self,
33
- axis: int,
34
- setting: str
35
- ) -> None:
36
- """
37
- Select a setting to be recorded.
38
-
39
- Args:
40
- axis: The 1-based index of the axis to record the value from.
41
- setting: The name of a setting to record.
42
- """
43
- request = dto.OscilloscopeAddSettingChannelRequest(
44
- interface_id=self.device.connection.interface_id,
45
- device=self.device.device_address,
46
- axis=axis,
47
- setting=setting,
48
- )
49
- call("oscilloscope/add_setting_channel", request)
50
-
51
- async def add_channel_async(
52
- self,
53
- axis: int,
54
- setting: str
55
- ) -> None:
56
- """
57
- Select a setting to be recorded.
58
-
59
- Args:
60
- axis: The 1-based index of the axis to record the value from.
61
- setting: The name of a setting to record.
62
- """
63
- request = dto.OscilloscopeAddSettingChannelRequest(
64
- interface_id=self.device.connection.interface_id,
65
- device=self.device.device_address,
66
- axis=axis,
67
- setting=setting,
68
- )
69
- await call_async("oscilloscope/add_setting_channel", request)
70
-
71
- def add_io_channel(
72
- self,
73
- io_type: IoPortType,
74
- io_channel: int
75
- ) -> None:
76
- """
77
- Select an I/O pin to be recorded.
78
- Requires at least Firmware 7.33.
79
-
80
- Args:
81
- io_type: The I/O port type to read data from.
82
- io_channel: The 1-based index of the I/O pin to read from.
83
- """
84
- request = dto.OscilloscopeAddIoChannelRequest(
85
- interface_id=self.device.connection.interface_id,
86
- device=self.device.device_address,
87
- io_type=io_type,
88
- io_channel=io_channel,
89
- )
90
- call("oscilloscope/add_io_channel", request)
91
-
92
- async def add_io_channel_async(
93
- self,
94
- io_type: IoPortType,
95
- io_channel: int
96
- ) -> None:
97
- """
98
- Select an I/O pin to be recorded.
99
- Requires at least Firmware 7.33.
100
-
101
- Args:
102
- io_type: The I/O port type to read data from.
103
- io_channel: The 1-based index of the I/O pin to read from.
104
- """
105
- request = dto.OscilloscopeAddIoChannelRequest(
106
- interface_id=self.device.connection.interface_id,
107
- device=self.device.device_address,
108
- io_type=io_type,
109
- io_channel=io_channel,
110
- )
111
- await call_async("oscilloscope/add_io_channel", request)
112
-
113
- def clear(
114
- self
115
- ) -> None:
116
- """
117
- Clear the list of channels to record.
118
- """
119
- request = dto.DeviceEmptyRequest(
120
- interface_id=self.device.connection.interface_id,
121
- device=self.device.device_address,
122
- )
123
- call("oscilloscope/clear_channels", request)
124
-
125
- async def clear_async(
126
- self
127
- ) -> None:
128
- """
129
- Clear the list of channels to record.
130
- """
131
- request = dto.DeviceEmptyRequest(
132
- interface_id=self.device.connection.interface_id,
133
- device=self.device.device_address,
134
- )
135
- await call_async("oscilloscope/clear_channels", request)
136
-
137
- def get_timebase(
138
- self,
139
- unit: TimeUnits = Units.NATIVE
140
- ) -> float:
141
- """
142
- Get the current sampling interval.
143
-
144
- Args:
145
- unit: Unit of measure to represent the timebase in.
146
-
147
- Returns:
148
- The current sampling interval in the selected time units.
149
- """
150
- request = dto.DeviceGetSettingRequest(
151
- interface_id=self.device.connection.interface_id,
152
- device=self.device.device_address,
153
- setting="scope.timebase",
154
- unit=unit,
155
- )
156
- response = call(
157
- "device/get_setting",
158
- request,
159
- dto.DoubleResponse.from_binary)
160
- return response.value
161
-
162
- async def get_timebase_async(
163
- self,
164
- unit: TimeUnits = Units.NATIVE
165
- ) -> float:
166
- """
167
- Get the current sampling interval.
168
-
169
- Args:
170
- unit: Unit of measure to represent the timebase in.
171
-
172
- Returns:
173
- The current sampling interval in the selected time units.
174
- """
175
- request = dto.DeviceGetSettingRequest(
176
- interface_id=self.device.connection.interface_id,
177
- device=self.device.device_address,
178
- setting="scope.timebase",
179
- unit=unit,
180
- )
181
- response = await call_async(
182
- "device/get_setting",
183
- request,
184
- dto.DoubleResponse.from_binary)
185
- return response.value
186
-
187
- def set_timebase(
188
- self,
189
- interval: float,
190
- unit: TimeUnits = Units.NATIVE
191
- ) -> None:
192
- """
193
- Set the sampling interval.
194
-
195
- Args:
196
- interval: Sample interval for the next oscilloscope recording. Minimum value is 100µs.
197
- unit: Unit of measure the timebase is represented in.
198
- """
199
- request = dto.DeviceSetSettingRequest(
200
- interface_id=self.device.connection.interface_id,
201
- device=self.device.device_address,
202
- setting="scope.timebase",
203
- value=interval,
204
- unit=unit,
205
- )
206
- call("device/set_setting", request)
207
-
208
- async def set_timebase_async(
209
- self,
210
- interval: float,
211
- unit: TimeUnits = Units.NATIVE
212
- ) -> None:
213
- """
214
- Set the sampling interval.
215
-
216
- Args:
217
- interval: Sample interval for the next oscilloscope recording. Minimum value is 100µs.
218
- unit: Unit of measure the timebase is represented in.
219
- """
220
- request = dto.DeviceSetSettingRequest(
221
- interface_id=self.device.connection.interface_id,
222
- device=self.device.device_address,
223
- setting="scope.timebase",
224
- value=interval,
225
- unit=unit,
226
- )
227
- await call_async("device/set_setting", request)
228
-
229
- def get_frequency(
230
- self,
231
- unit: FrequencyUnits = Units.NATIVE
232
- ) -> float:
233
- """
234
- Get the current sampling frequency.
235
- The values is calculated as the inverse of the current sampling interval.
236
-
237
- Args:
238
- unit: Unit of measure to represent the frequency in.
239
-
240
- Returns:
241
- The inverse of current sampling interval in the selected units.
242
- """
243
- request = dto.DeviceGetSettingRequest(
244
- interface_id=self.device.connection.interface_id,
245
- device=self.device.device_address,
246
- setting="scope.timebase",
247
- unit=unit,
248
- )
249
- response = call(
250
- "oscilloscope/get_frequency",
251
- request,
252
- dto.DoubleResponse.from_binary)
253
- return response.value
254
-
255
- async def get_frequency_async(
256
- self,
257
- unit: FrequencyUnits = Units.NATIVE
258
- ) -> float:
259
- """
260
- Get the current sampling frequency.
261
- The values is calculated as the inverse of the current sampling interval.
262
-
263
- Args:
264
- unit: Unit of measure to represent the frequency in.
265
-
266
- Returns:
267
- The inverse of current sampling interval in the selected units.
268
- """
269
- request = dto.DeviceGetSettingRequest(
270
- interface_id=self.device.connection.interface_id,
271
- device=self.device.device_address,
272
- setting="scope.timebase",
273
- unit=unit,
274
- )
275
- response = await call_async(
276
- "oscilloscope/get_frequency",
277
- request,
278
- dto.DoubleResponse.from_binary)
279
- return response.value
280
-
281
- def set_frequency(
282
- self,
283
- frequency: float,
284
- unit: FrequencyUnits = Units.NATIVE
285
- ) -> None:
286
- """
287
- Set the sampling frequency (inverse of the sampling interval).
288
- The value is quantized to the next closest value supported by the firmware.
289
-
290
- Args:
291
- frequency: Sample frequency for the next oscilloscope recording.
292
- unit: Unit of measure the frequency is represented in.
293
- """
294
- request = dto.DeviceSetSettingRequest(
295
- interface_id=self.device.connection.interface_id,
296
- device=self.device.device_address,
297
- setting="scope.timebase",
298
- value=frequency,
299
- unit=unit,
300
- )
301
- call("oscilloscope/set_frequency", request)
302
-
303
- async def set_frequency_async(
304
- self,
305
- frequency: float,
306
- unit: FrequencyUnits = Units.NATIVE
307
- ) -> None:
308
- """
309
- Set the sampling frequency (inverse of the sampling interval).
310
- The value is quantized to the next closest value supported by the firmware.
311
-
312
- Args:
313
- frequency: Sample frequency for the next oscilloscope recording.
314
- unit: Unit of measure the frequency is represented in.
315
- """
316
- request = dto.DeviceSetSettingRequest(
317
- interface_id=self.device.connection.interface_id,
318
- device=self.device.device_address,
319
- setting="scope.timebase",
320
- value=frequency,
321
- unit=unit,
322
- )
323
- await call_async("oscilloscope/set_frequency", request)
324
-
325
- def get_delay(
326
- self,
327
- unit: TimeUnits = Units.NATIVE
328
- ) -> float:
329
- """
330
- Get the delay before oscilloscope recording starts.
331
-
332
- Args:
333
- unit: Unit of measure to represent the delay in.
334
-
335
- Returns:
336
- The current start delay in the selected time units.
337
- """
338
- request = dto.DeviceGetSettingRequest(
339
- interface_id=self.device.connection.interface_id,
340
- device=self.device.device_address,
341
- setting="scope.delay",
342
- unit=unit,
343
- )
344
- response = call(
345
- "device/get_setting",
346
- request,
347
- dto.DoubleResponse.from_binary)
348
- return response.value
349
-
350
- async def get_delay_async(
351
- self,
352
- unit: TimeUnits = Units.NATIVE
353
- ) -> float:
354
- """
355
- Get the delay before oscilloscope recording starts.
356
-
357
- Args:
358
- unit: Unit of measure to represent the delay in.
359
-
360
- Returns:
361
- The current start delay in the selected time units.
362
- """
363
- request = dto.DeviceGetSettingRequest(
364
- interface_id=self.device.connection.interface_id,
365
- device=self.device.device_address,
366
- setting="scope.delay",
367
- unit=unit,
368
- )
369
- response = await call_async(
370
- "device/get_setting",
371
- request,
372
- dto.DoubleResponse.from_binary)
373
- return response.value
374
-
375
- def set_delay(
376
- self,
377
- interval: float,
378
- unit: TimeUnits = Units.NATIVE
379
- ) -> None:
380
- """
381
- Set the sampling start delay.
382
-
383
- Args:
384
- interval: Delay time between triggering a recording and the first data point being recorded.
385
- unit: Unit of measure the delay is represented in.
386
- """
387
- request = dto.DeviceSetSettingRequest(
388
- interface_id=self.device.connection.interface_id,
389
- device=self.device.device_address,
390
- setting="scope.delay",
391
- value=interval,
392
- unit=unit,
393
- )
394
- call("device/set_setting", request)
395
-
396
- async def set_delay_async(
397
- self,
398
- interval: float,
399
- unit: TimeUnits = Units.NATIVE
400
- ) -> None:
401
- """
402
- Set the sampling start delay.
403
-
404
- Args:
405
- interval: Delay time between triggering a recording and the first data point being recorded.
406
- unit: Unit of measure the delay is represented in.
407
- """
408
- request = dto.DeviceSetSettingRequest(
409
- interface_id=self.device.connection.interface_id,
410
- device=self.device.device_address,
411
- setting="scope.delay",
412
- value=interval,
413
- unit=unit,
414
- )
415
- await call_async("device/set_setting", request)
416
-
417
- def get_max_channels(
418
- self
419
- ) -> int:
420
- """
421
- Get the maximum number of channels that can be recorded.
422
-
423
- Returns:
424
- The maximum number of channels that can be added to an Oscilloscope recording.
425
- """
426
- request = dto.DeviceGetSettingRequest(
427
- interface_id=self.device.connection.interface_id,
428
- device=self.device.device_address,
429
- setting="scope.numchannels",
430
- )
431
- response = call(
432
- "oscilloscope/get_setting",
433
- request,
434
- dto.IntResponse.from_binary)
435
- return response.value
436
-
437
- async def get_max_channels_async(
438
- self
439
- ) -> int:
440
- """
441
- Get the maximum number of channels that can be recorded.
442
-
443
- Returns:
444
- The maximum number of channels that can be added to an Oscilloscope recording.
445
- """
446
- request = dto.DeviceGetSettingRequest(
447
- interface_id=self.device.connection.interface_id,
448
- device=self.device.device_address,
449
- setting="scope.numchannels",
450
- )
451
- response = await call_async(
452
- "oscilloscope/get_setting",
453
- request,
454
- dto.IntResponse.from_binary)
455
- return response.value
456
-
457
- def get_max_buffer_size(
458
- self
459
- ) -> int:
460
- """
461
- Get the maximum number of samples that can be recorded per Oscilloscope channel.
462
-
463
- Returns:
464
- The maximum number of samples that can be recorded per Oscilloscope channel.
465
- """
466
- request = dto.DeviceGetSettingRequest(
467
- interface_id=self.device.connection.interface_id,
468
- device=self.device.device_address,
469
- setting="scope.channel.size.max",
470
- )
471
- response = call(
472
- "oscilloscope/get_setting",
473
- request,
474
- dto.IntResponse.from_binary)
475
- return response.value
476
-
477
- async def get_max_buffer_size_async(
478
- self
479
- ) -> int:
480
- """
481
- Get the maximum number of samples that can be recorded per Oscilloscope channel.
482
-
483
- Returns:
484
- The maximum number of samples that can be recorded per Oscilloscope channel.
485
- """
486
- request = dto.DeviceGetSettingRequest(
487
- interface_id=self.device.connection.interface_id,
488
- device=self.device.device_address,
489
- setting="scope.channel.size.max",
490
- )
491
- response = await call_async(
492
- "oscilloscope/get_setting",
493
- request,
494
- dto.IntResponse.from_binary)
495
- return response.value
496
-
497
- def get_buffer_size(
498
- self
499
- ) -> int:
500
- """
501
- Get the number of samples that can be recorded per channel given the current number of channels added.
502
-
503
- Returns:
504
- Number of samples that will be recorded per channel with the current channels. Zero if none have been added.
505
- """
506
- request = dto.DeviceGetSettingRequest(
507
- interface_id=self.device.connection.interface_id,
508
- device=self.device.device_address,
509
- setting="scope.channel.size",
510
- )
511
- response = call(
512
- "oscilloscope/get_setting",
513
- request,
514
- dto.IntResponse.from_binary)
515
- return response.value
516
-
517
- async def get_buffer_size_async(
518
- self
519
- ) -> int:
520
- """
521
- Get the number of samples that can be recorded per channel given the current number of channels added.
522
-
523
- Returns:
524
- Number of samples that will be recorded per channel with the current channels. Zero if none have been added.
525
- """
526
- request = dto.DeviceGetSettingRequest(
527
- interface_id=self.device.connection.interface_id,
528
- device=self.device.device_address,
529
- setting="scope.channel.size",
530
- )
531
- response = await call_async(
532
- "oscilloscope/get_setting",
533
- request,
534
- dto.IntResponse.from_binary)
535
- return response.value
536
-
537
- def start(
538
- self,
539
- capture_length: int = 0
540
- ) -> None:
541
- """
542
- Trigger data recording.
543
-
544
- Args:
545
- capture_length: Optional number of samples to record per channel.
546
- If left empty, the device records samples until the buffer fills.
547
- Requires at least Firmware 7.29.
548
- """
549
- request = dto.OscilloscopeStartRequest(
550
- interface_id=self.device.connection.interface_id,
551
- device=self.device.device_address,
552
- capture_length=capture_length,
553
- )
554
- call("oscilloscope/start", request)
555
-
556
- async def start_async(
557
- self,
558
- capture_length: int = 0
559
- ) -> None:
560
- """
561
- Trigger data recording.
562
-
563
- Args:
564
- capture_length: Optional number of samples to record per channel.
565
- If left empty, the device records samples until the buffer fills.
566
- Requires at least Firmware 7.29.
567
- """
568
- request = dto.OscilloscopeStartRequest(
569
- interface_id=self.device.connection.interface_id,
570
- device=self.device.device_address,
571
- capture_length=capture_length,
572
- )
573
- await call_async("oscilloscope/start", request)
574
-
575
- def stop(
576
- self
577
- ) -> None:
578
- """
579
- End data recording if currently in progress.
580
- """
581
- request = dto.OscilloscopeRequest(
582
- interface_id=self.device.connection.interface_id,
583
- device=self.device.device_address,
584
- )
585
- call("oscilloscope/stop", request)
586
-
587
- async def stop_async(
588
- self
589
- ) -> None:
590
- """
591
- End data recording if currently in progress.
592
- """
593
- request = dto.OscilloscopeRequest(
594
- interface_id=self.device.connection.interface_id,
595
- device=self.device.device_address,
596
- )
597
- await call_async("oscilloscope/stop", request)
598
-
599
- def read(
600
- self
601
- ) -> List[OscilloscopeData]:
602
- """
603
- Reads the last-recorded data from the oscilloscope. Will block until any in-progress recording completes.
604
-
605
- Returns:
606
- Array of recorded channel data arrays, in the order added.
607
- """
608
- request = dto.DeviceEmptyRequest(
609
- interface_id=self.device.connection.interface_id,
610
- device=self.device.device_address,
611
- )
612
- response = call(
613
- "oscilloscope/read",
614
- request,
615
- dto.OscilloscopeReadResponse.from_binary)
616
- return list(map(OscilloscopeData, response.data_ids))
617
-
618
- async def read_async(
619
- self
620
- ) -> List[OscilloscopeData]:
621
- """
622
- Reads the last-recorded data from the oscilloscope. Will block until any in-progress recording completes.
623
-
624
- Returns:
625
- Array of recorded channel data arrays, in the order added.
626
- """
627
- request = dto.DeviceEmptyRequest(
628
- interface_id=self.device.connection.interface_id,
629
- device=self.device.device_address,
630
- )
631
- response = await call_async(
632
- "oscilloscope/read",
633
- request,
634
- dto.OscilloscopeReadResponse.from_binary)
635
- return list(map(OscilloscopeData, response.data_ids))
1
+ # ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
2
+ # ============== DO NOT EDIT DIRECTLY ============== #
3
+ from typing import TYPE_CHECKING, List
4
+ from ..dto import requests as dto
5
+ from ..units import Units, TimeUnits, FrequencyUnits
6
+ from ..call import call, call_async
7
+ from ..dto.ascii.io_port_type import IoPortType
8
+ from .oscilloscope_data import OscilloscopeData
9
+
10
+ if TYPE_CHECKING:
11
+ from .device import Device
12
+
13
+
14
+ class Oscilloscope:
15
+ """
16
+ Provides a convenient way to control the oscilloscope data recording feature of some devices.
17
+ The oscilloscope can record the values of some settings over time at high resolution.
18
+ Requires at least Firmware 7.00.
19
+ """
20
+
21
+ @property
22
+ def device(self) -> 'Device':
23
+ """
24
+ Device that this Oscilloscope measures.
25
+ """
26
+ return self._device
27
+
28
+ def __init__(self, device: 'Device'):
29
+ self._device: 'Device' = device
30
+
31
+ def add_channel(
32
+ self,
33
+ axis: int,
34
+ setting: str
35
+ ) -> None:
36
+ """
37
+ Select a setting to be recorded.
38
+
39
+ Args:
40
+ axis: The 1-based index of the axis to record the value from.
41
+ setting: The name of a setting to record.
42
+ """
43
+ request = dto.OscilloscopeAddSettingChannelRequest(
44
+ interface_id=self.device.connection.interface_id,
45
+ device=self.device.device_address,
46
+ axis=axis,
47
+ setting=setting,
48
+ )
49
+ call("oscilloscope/add_setting_channel", request)
50
+
51
+ async def add_channel_async(
52
+ self,
53
+ axis: int,
54
+ setting: str
55
+ ) -> None:
56
+ """
57
+ Select a setting to be recorded.
58
+
59
+ Args:
60
+ axis: The 1-based index of the axis to record the value from.
61
+ setting: The name of a setting to record.
62
+ """
63
+ request = dto.OscilloscopeAddSettingChannelRequest(
64
+ interface_id=self.device.connection.interface_id,
65
+ device=self.device.device_address,
66
+ axis=axis,
67
+ setting=setting,
68
+ )
69
+ await call_async("oscilloscope/add_setting_channel", request)
70
+
71
+ def add_io_channel(
72
+ self,
73
+ io_type: IoPortType,
74
+ io_channel: int
75
+ ) -> None:
76
+ """
77
+ Select an I/O pin to be recorded.
78
+ Requires at least Firmware 7.33.
79
+
80
+ Args:
81
+ io_type: The I/O port type to read data from.
82
+ io_channel: The 1-based index of the I/O pin to read from.
83
+ """
84
+ request = dto.OscilloscopeAddIoChannelRequest(
85
+ interface_id=self.device.connection.interface_id,
86
+ device=self.device.device_address,
87
+ io_type=io_type,
88
+ io_channel=io_channel,
89
+ )
90
+ call("oscilloscope/add_io_channel", request)
91
+
92
+ async def add_io_channel_async(
93
+ self,
94
+ io_type: IoPortType,
95
+ io_channel: int
96
+ ) -> None:
97
+ """
98
+ Select an I/O pin to be recorded.
99
+ Requires at least Firmware 7.33.
100
+
101
+ Args:
102
+ io_type: The I/O port type to read data from.
103
+ io_channel: The 1-based index of the I/O pin to read from.
104
+ """
105
+ request = dto.OscilloscopeAddIoChannelRequest(
106
+ interface_id=self.device.connection.interface_id,
107
+ device=self.device.device_address,
108
+ io_type=io_type,
109
+ io_channel=io_channel,
110
+ )
111
+ await call_async("oscilloscope/add_io_channel", request)
112
+
113
+ def clear(
114
+ self
115
+ ) -> None:
116
+ """
117
+ Clear the list of channels to record.
118
+ """
119
+ request = dto.DeviceEmptyRequest(
120
+ interface_id=self.device.connection.interface_id,
121
+ device=self.device.device_address,
122
+ )
123
+ call("oscilloscope/clear_channels", request)
124
+
125
+ async def clear_async(
126
+ self
127
+ ) -> None:
128
+ """
129
+ Clear the list of channels to record.
130
+ """
131
+ request = dto.DeviceEmptyRequest(
132
+ interface_id=self.device.connection.interface_id,
133
+ device=self.device.device_address,
134
+ )
135
+ await call_async("oscilloscope/clear_channels", request)
136
+
137
+ def get_timebase(
138
+ self,
139
+ unit: TimeUnits = Units.NATIVE
140
+ ) -> float:
141
+ """
142
+ Get the current sampling interval.
143
+
144
+ Args:
145
+ unit: Unit of measure to represent the timebase in.
146
+
147
+ Returns:
148
+ The current sampling interval in the selected time units.
149
+ """
150
+ request = dto.DeviceGetSettingRequest(
151
+ interface_id=self.device.connection.interface_id,
152
+ device=self.device.device_address,
153
+ setting="scope.timebase",
154
+ unit=unit,
155
+ )
156
+ response = call(
157
+ "device/get_setting",
158
+ request,
159
+ dto.DoubleResponse.from_binary)
160
+ return response.value
161
+
162
+ async def get_timebase_async(
163
+ self,
164
+ unit: TimeUnits = Units.NATIVE
165
+ ) -> float:
166
+ """
167
+ Get the current sampling interval.
168
+
169
+ Args:
170
+ unit: Unit of measure to represent the timebase in.
171
+
172
+ Returns:
173
+ The current sampling interval in the selected time units.
174
+ """
175
+ request = dto.DeviceGetSettingRequest(
176
+ interface_id=self.device.connection.interface_id,
177
+ device=self.device.device_address,
178
+ setting="scope.timebase",
179
+ unit=unit,
180
+ )
181
+ response = await call_async(
182
+ "device/get_setting",
183
+ request,
184
+ dto.DoubleResponse.from_binary)
185
+ return response.value
186
+
187
+ def set_timebase(
188
+ self,
189
+ interval: float,
190
+ unit: TimeUnits = Units.NATIVE
191
+ ) -> None:
192
+ """
193
+ Set the sampling interval.
194
+
195
+ Args:
196
+ interval: Sample interval for the next oscilloscope recording. Minimum value is 100µs.
197
+ unit: Unit of measure the timebase is represented in.
198
+ """
199
+ request = dto.DeviceSetSettingRequest(
200
+ interface_id=self.device.connection.interface_id,
201
+ device=self.device.device_address,
202
+ setting="scope.timebase",
203
+ value=interval,
204
+ unit=unit,
205
+ )
206
+ call("device/set_setting", request)
207
+
208
+ async def set_timebase_async(
209
+ self,
210
+ interval: float,
211
+ unit: TimeUnits = Units.NATIVE
212
+ ) -> None:
213
+ """
214
+ Set the sampling interval.
215
+
216
+ Args:
217
+ interval: Sample interval for the next oscilloscope recording. Minimum value is 100µs.
218
+ unit: Unit of measure the timebase is represented in.
219
+ """
220
+ request = dto.DeviceSetSettingRequest(
221
+ interface_id=self.device.connection.interface_id,
222
+ device=self.device.device_address,
223
+ setting="scope.timebase",
224
+ value=interval,
225
+ unit=unit,
226
+ )
227
+ await call_async("device/set_setting", request)
228
+
229
+ def get_frequency(
230
+ self,
231
+ unit: FrequencyUnits = Units.NATIVE
232
+ ) -> float:
233
+ """
234
+ Get the current sampling frequency.
235
+ The values is calculated as the inverse of the current sampling interval.
236
+
237
+ Args:
238
+ unit: Unit of measure to represent the frequency in.
239
+
240
+ Returns:
241
+ The inverse of current sampling interval in the selected units.
242
+ """
243
+ request = dto.DeviceGetSettingRequest(
244
+ interface_id=self.device.connection.interface_id,
245
+ device=self.device.device_address,
246
+ setting="scope.timebase",
247
+ unit=unit,
248
+ )
249
+ response = call(
250
+ "oscilloscope/get_frequency",
251
+ request,
252
+ dto.DoubleResponse.from_binary)
253
+ return response.value
254
+
255
+ async def get_frequency_async(
256
+ self,
257
+ unit: FrequencyUnits = Units.NATIVE
258
+ ) -> float:
259
+ """
260
+ Get the current sampling frequency.
261
+ The values is calculated as the inverse of the current sampling interval.
262
+
263
+ Args:
264
+ unit: Unit of measure to represent the frequency in.
265
+
266
+ Returns:
267
+ The inverse of current sampling interval in the selected units.
268
+ """
269
+ request = dto.DeviceGetSettingRequest(
270
+ interface_id=self.device.connection.interface_id,
271
+ device=self.device.device_address,
272
+ setting="scope.timebase",
273
+ unit=unit,
274
+ )
275
+ response = await call_async(
276
+ "oscilloscope/get_frequency",
277
+ request,
278
+ dto.DoubleResponse.from_binary)
279
+ return response.value
280
+
281
+ def set_frequency(
282
+ self,
283
+ frequency: float,
284
+ unit: FrequencyUnits = Units.NATIVE
285
+ ) -> None:
286
+ """
287
+ Set the sampling frequency (inverse of the sampling interval).
288
+ The value is quantized to the next closest value supported by the firmware.
289
+
290
+ Args:
291
+ frequency: Sample frequency for the next oscilloscope recording.
292
+ unit: Unit of measure the frequency is represented in.
293
+ """
294
+ request = dto.DeviceSetSettingRequest(
295
+ interface_id=self.device.connection.interface_id,
296
+ device=self.device.device_address,
297
+ setting="scope.timebase",
298
+ value=frequency,
299
+ unit=unit,
300
+ )
301
+ call("oscilloscope/set_frequency", request)
302
+
303
+ async def set_frequency_async(
304
+ self,
305
+ frequency: float,
306
+ unit: FrequencyUnits = Units.NATIVE
307
+ ) -> None:
308
+ """
309
+ Set the sampling frequency (inverse of the sampling interval).
310
+ The value is quantized to the next closest value supported by the firmware.
311
+
312
+ Args:
313
+ frequency: Sample frequency for the next oscilloscope recording.
314
+ unit: Unit of measure the frequency is represented in.
315
+ """
316
+ request = dto.DeviceSetSettingRequest(
317
+ interface_id=self.device.connection.interface_id,
318
+ device=self.device.device_address,
319
+ setting="scope.timebase",
320
+ value=frequency,
321
+ unit=unit,
322
+ )
323
+ await call_async("oscilloscope/set_frequency", request)
324
+
325
+ def get_delay(
326
+ self,
327
+ unit: TimeUnits = Units.NATIVE
328
+ ) -> float:
329
+ """
330
+ Get the delay before oscilloscope recording starts.
331
+
332
+ Args:
333
+ unit: Unit of measure to represent the delay in.
334
+
335
+ Returns:
336
+ The current start delay in the selected time units.
337
+ """
338
+ request = dto.DeviceGetSettingRequest(
339
+ interface_id=self.device.connection.interface_id,
340
+ device=self.device.device_address,
341
+ setting="scope.delay",
342
+ unit=unit,
343
+ )
344
+ response = call(
345
+ "device/get_setting",
346
+ request,
347
+ dto.DoubleResponse.from_binary)
348
+ return response.value
349
+
350
+ async def get_delay_async(
351
+ self,
352
+ unit: TimeUnits = Units.NATIVE
353
+ ) -> float:
354
+ """
355
+ Get the delay before oscilloscope recording starts.
356
+
357
+ Args:
358
+ unit: Unit of measure to represent the delay in.
359
+
360
+ Returns:
361
+ The current start delay in the selected time units.
362
+ """
363
+ request = dto.DeviceGetSettingRequest(
364
+ interface_id=self.device.connection.interface_id,
365
+ device=self.device.device_address,
366
+ setting="scope.delay",
367
+ unit=unit,
368
+ )
369
+ response = await call_async(
370
+ "device/get_setting",
371
+ request,
372
+ dto.DoubleResponse.from_binary)
373
+ return response.value
374
+
375
+ def set_delay(
376
+ self,
377
+ interval: float,
378
+ unit: TimeUnits = Units.NATIVE
379
+ ) -> None:
380
+ """
381
+ Set the sampling start delay.
382
+
383
+ Args:
384
+ interval: Delay time between triggering a recording and the first data point being recorded.
385
+ unit: Unit of measure the delay is represented in.
386
+ """
387
+ request = dto.DeviceSetSettingRequest(
388
+ interface_id=self.device.connection.interface_id,
389
+ device=self.device.device_address,
390
+ setting="scope.delay",
391
+ value=interval,
392
+ unit=unit,
393
+ )
394
+ call("device/set_setting", request)
395
+
396
+ async def set_delay_async(
397
+ self,
398
+ interval: float,
399
+ unit: TimeUnits = Units.NATIVE
400
+ ) -> None:
401
+ """
402
+ Set the sampling start delay.
403
+
404
+ Args:
405
+ interval: Delay time between triggering a recording and the first data point being recorded.
406
+ unit: Unit of measure the delay is represented in.
407
+ """
408
+ request = dto.DeviceSetSettingRequest(
409
+ interface_id=self.device.connection.interface_id,
410
+ device=self.device.device_address,
411
+ setting="scope.delay",
412
+ value=interval,
413
+ unit=unit,
414
+ )
415
+ await call_async("device/set_setting", request)
416
+
417
+ def get_max_channels(
418
+ self
419
+ ) -> int:
420
+ """
421
+ Get the maximum number of channels that can be recorded.
422
+
423
+ Returns:
424
+ The maximum number of channels that can be added to an Oscilloscope recording.
425
+ """
426
+ request = dto.DeviceGetSettingRequest(
427
+ interface_id=self.device.connection.interface_id,
428
+ device=self.device.device_address,
429
+ setting="scope.numchannels",
430
+ )
431
+ response = call(
432
+ "oscilloscope/get_setting",
433
+ request,
434
+ dto.IntResponse.from_binary)
435
+ return response.value
436
+
437
+ async def get_max_channels_async(
438
+ self
439
+ ) -> int:
440
+ """
441
+ Get the maximum number of channels that can be recorded.
442
+
443
+ Returns:
444
+ The maximum number of channels that can be added to an Oscilloscope recording.
445
+ """
446
+ request = dto.DeviceGetSettingRequest(
447
+ interface_id=self.device.connection.interface_id,
448
+ device=self.device.device_address,
449
+ setting="scope.numchannels",
450
+ )
451
+ response = await call_async(
452
+ "oscilloscope/get_setting",
453
+ request,
454
+ dto.IntResponse.from_binary)
455
+ return response.value
456
+
457
+ def get_max_buffer_size(
458
+ self
459
+ ) -> int:
460
+ """
461
+ Get the maximum number of samples that can be recorded per Oscilloscope channel.
462
+
463
+ Returns:
464
+ The maximum number of samples that can be recorded per Oscilloscope channel.
465
+ """
466
+ request = dto.DeviceGetSettingRequest(
467
+ interface_id=self.device.connection.interface_id,
468
+ device=self.device.device_address,
469
+ setting="scope.channel.size.max",
470
+ )
471
+ response = call(
472
+ "oscilloscope/get_setting",
473
+ request,
474
+ dto.IntResponse.from_binary)
475
+ return response.value
476
+
477
+ async def get_max_buffer_size_async(
478
+ self
479
+ ) -> int:
480
+ """
481
+ Get the maximum number of samples that can be recorded per Oscilloscope channel.
482
+
483
+ Returns:
484
+ The maximum number of samples that can be recorded per Oscilloscope channel.
485
+ """
486
+ request = dto.DeviceGetSettingRequest(
487
+ interface_id=self.device.connection.interface_id,
488
+ device=self.device.device_address,
489
+ setting="scope.channel.size.max",
490
+ )
491
+ response = await call_async(
492
+ "oscilloscope/get_setting",
493
+ request,
494
+ dto.IntResponse.from_binary)
495
+ return response.value
496
+
497
+ def get_buffer_size(
498
+ self
499
+ ) -> int:
500
+ """
501
+ Get the number of samples that can be recorded per channel given the current number of channels added.
502
+
503
+ Returns:
504
+ Number of samples that will be recorded per channel with the current channels. Zero if none have been added.
505
+ """
506
+ request = dto.DeviceGetSettingRequest(
507
+ interface_id=self.device.connection.interface_id,
508
+ device=self.device.device_address,
509
+ setting="scope.channel.size",
510
+ )
511
+ response = call(
512
+ "oscilloscope/get_setting",
513
+ request,
514
+ dto.IntResponse.from_binary)
515
+ return response.value
516
+
517
+ async def get_buffer_size_async(
518
+ self
519
+ ) -> int:
520
+ """
521
+ Get the number of samples that can be recorded per channel given the current number of channels added.
522
+
523
+ Returns:
524
+ Number of samples that will be recorded per channel with the current channels. Zero if none have been added.
525
+ """
526
+ request = dto.DeviceGetSettingRequest(
527
+ interface_id=self.device.connection.interface_id,
528
+ device=self.device.device_address,
529
+ setting="scope.channel.size",
530
+ )
531
+ response = await call_async(
532
+ "oscilloscope/get_setting",
533
+ request,
534
+ dto.IntResponse.from_binary)
535
+ return response.value
536
+
537
+ def start(
538
+ self,
539
+ capture_length: int = 0
540
+ ) -> None:
541
+ """
542
+ Trigger data recording.
543
+
544
+ Args:
545
+ capture_length: Optional number of samples to record per channel.
546
+ If left empty, the device records samples until the buffer fills.
547
+ Requires at least Firmware 7.29.
548
+ """
549
+ request = dto.OscilloscopeStartRequest(
550
+ interface_id=self.device.connection.interface_id,
551
+ device=self.device.device_address,
552
+ capture_length=capture_length,
553
+ )
554
+ call("oscilloscope/start", request)
555
+
556
+ async def start_async(
557
+ self,
558
+ capture_length: int = 0
559
+ ) -> None:
560
+ """
561
+ Trigger data recording.
562
+
563
+ Args:
564
+ capture_length: Optional number of samples to record per channel.
565
+ If left empty, the device records samples until the buffer fills.
566
+ Requires at least Firmware 7.29.
567
+ """
568
+ request = dto.OscilloscopeStartRequest(
569
+ interface_id=self.device.connection.interface_id,
570
+ device=self.device.device_address,
571
+ capture_length=capture_length,
572
+ )
573
+ await call_async("oscilloscope/start", request)
574
+
575
+ def stop(
576
+ self
577
+ ) -> None:
578
+ """
579
+ End data recording if currently in progress.
580
+ """
581
+ request = dto.OscilloscopeRequest(
582
+ interface_id=self.device.connection.interface_id,
583
+ device=self.device.device_address,
584
+ )
585
+ call("oscilloscope/stop", request)
586
+
587
+ async def stop_async(
588
+ self
589
+ ) -> None:
590
+ """
591
+ End data recording if currently in progress.
592
+ """
593
+ request = dto.OscilloscopeRequest(
594
+ interface_id=self.device.connection.interface_id,
595
+ device=self.device.device_address,
596
+ )
597
+ await call_async("oscilloscope/stop", request)
598
+
599
+ def read(
600
+ self
601
+ ) -> List[OscilloscopeData]:
602
+ """
603
+ Reads the last-recorded data from the oscilloscope. Will block until any in-progress recording completes.
604
+
605
+ Returns:
606
+ Array of recorded channel data arrays, in the order added.
607
+ """
608
+ request = dto.DeviceEmptyRequest(
609
+ interface_id=self.device.connection.interface_id,
610
+ device=self.device.device_address,
611
+ )
612
+ response = call(
613
+ "oscilloscope/read",
614
+ request,
615
+ dto.OscilloscopeReadResponse.from_binary)
616
+ return list(map(OscilloscopeData, response.data_ids))
617
+
618
+ async def read_async(
619
+ self
620
+ ) -> List[OscilloscopeData]:
621
+ """
622
+ Reads the last-recorded data from the oscilloscope. Will block until any in-progress recording completes.
623
+
624
+ Returns:
625
+ Array of recorded channel data arrays, in the order added.
626
+ """
627
+ request = dto.DeviceEmptyRequest(
628
+ interface_id=self.device.connection.interface_id,
629
+ device=self.device.device_address,
630
+ )
631
+ response = await call_async(
632
+ "oscilloscope/read",
633
+ request,
634
+ dto.OscilloscopeReadResponse.from_binary)
635
+ return list(map(OscilloscopeData, response.data_ids))