@@ -21,7 +21,26 import numpy as np | |||||
21 |
|
21 | |||
22 |
|
22 | |||
23 | nodev = c_int(0) |
|
23 | nodev = c_int(0) | |
24 | DwfStateDone = c_int(2) |
|
24 | ||
|
25 | DwfStateReady = c_byte(0) | |||
|
26 | DwfStateConfig = c_byte(4) | |||
|
27 | DwfStatePrefill = c_byte(5) | |||
|
28 | DwfStateArmed = c_byte(1) | |||
|
29 | DwfStateWait = c_byte(7) | |||
|
30 | DwfStateTriggered = c_byte(3) | |||
|
31 | DwfStateRunning = c_byte(3) | |||
|
32 | DwfStateDone = c_byte(2) | |||
|
33 | ||||
|
34 | DwfStateDict={ | |||
|
35 | DwfStateReady.value:"Ready", | |||
|
36 | DwfStateConfig.value:"Config", | |||
|
37 | DwfStatePrefill.value:"Prefill", | |||
|
38 | DwfStateArmed.value:"Armed", | |||
|
39 | DwfStateWait.value:"Wait", | |||
|
40 | DwfStateTriggered.value:"Triggered", | |||
|
41 | DwfStateRunning.value:"Running", | |||
|
42 | DwfStateDone.value:"Done" | |||
|
43 | } | |||
25 |
|
44 | |||
26 | DECIAnalogInChannelCount = c_int(1) |
|
45 | DECIAnalogInChannelCount = c_int(1) | |
27 | DECIAnalogOutChannelCount = c_int(2) |
|
46 | DECIAnalogOutChannelCount = c_int(2) | |
@@ -308,10 +327,11 class Discovery(object): | |||||
308 | ############################################################# |
|
327 | ############################################################# | |
309 | # AnalogOut |
|
328 | # AnalogOut | |
310 | ############################################################# |
|
329 | ############################################################# | |
311 | def analog_out_gen(self,frequency=1000, shape='Sine', channel=0, amplitude=1.0, offset=0.0,phase=0.0, syncOnTrigger=False, triggerFrq=1.0): |
|
330 | def analog_out_gen(self,frequency=1000, symmetry=50.0, shape='Sine', channel=0, amplitude=1.0, offset=0.0,phase=0.0, syncOnTrigger=False, triggerFrq=1.0, wait=0.0, runDuration=None): | |
312 | self.__libdwf.FDwfAnalogOutConfigure(self.__hdwf, c_int(channel), c_bool(False)) |
|
331 | self.__libdwf.FDwfAnalogOutConfigure(self.__hdwf, c_int(channel), c_bool(False)) | |
313 | self.__libdwf.FDwfAnalogOutNodeEnableSet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_bool(True)) |
|
332 | self.__libdwf.FDwfAnalogOutNodeEnableSet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_bool(True)) | |
314 | self.__libdwf.FDwfAnalogOutNodeFunctionSet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_int(shapes.get(shape))) |
|
333 | self.__libdwf.FDwfAnalogOutNodeFunctionSet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_int(shapes.get(shape))) | |
|
334 | self.__libdwf.FDwfAnalogOutNodeSymmetrySet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_double(symmetry)) | |||
315 | if shape!="DC": |
|
335 | if shape!="DC": | |
316 | self.__libdwf.FDwfAnalogOutNodeFrequencySet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_double(self.__limits.genFreq(frequency))) |
|
336 | self.__libdwf.FDwfAnalogOutNodeFrequencySet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_double(self.__limits.genFreq(frequency))) | |
317 | self.__libdwf.FDwfAnalogOutNodeAmplitudeSet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_double(self.__limits.genAmplitude(amplitude))) |
|
337 | self.__libdwf.FDwfAnalogOutNodeAmplitudeSet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_double(self.__limits.genAmplitude(amplitude))) | |
@@ -320,12 +340,10 class Discovery(object): | |||||
320 | if syncOnTrigger: |
|
340 | if syncOnTrigger: | |
321 | self.analog_out_set_trigger(channel) |
|
341 | self.analog_out_set_trigger(channel) | |
322 | self.__libdwf.FDwfAnalogOutRepeatSet(self.__hdwf, c_int(channel),c_int(0)) |
|
342 | self.__libdwf.FDwfAnalogOutRepeatSet(self.__hdwf, c_int(channel),c_int(0)) | |
323 | # if frequency >= triggerFrq: |
|
343 | if runDuration is None: | |
324 | runDuration = triggerFrq |
|
344 | runDuration = triggerFrq | |
325 | # Doesn't work! try with triggerFrq=1 and frequency=0.8 |
|
|||
326 | # else: |
|
|||
327 | # runDuration = triggerFrq/frequency |
|
|||
328 | self.__libdwf.FDwfAnalogOutRunSet(self.__hdwf, c_int(channel),c_double(runDuration)) |
|
345 | self.__libdwf.FDwfAnalogOutRunSet(self.__hdwf, c_int(channel),c_double(runDuration)) | |
|
346 | self.__libdwf.FDwfAnalogOutWaitSet(self.__hdwf, c_int(channel), c_double(wait)) | |||
329 | self.__libdwf.FDwfAnalogOutConfigure(self.__hdwf, c_int(channel), c_bool(True)) |
|
347 | self.__libdwf.FDwfAnalogOutConfigure(self.__hdwf, c_int(channel), c_bool(True)) | |
330 |
|
348 | |||
331 | def analog_out_gen_arbit(self,samplesBuffer ,repeatingFrequency=100, channel=0, amplitude=1.0, offset=0.0): |
|
349 | def analog_out_gen_arbit(self,samplesBuffer ,repeatingFrequency=100, channel=0, amplitude=1.0, offset=0.0): | |
@@ -346,6 +364,45 class Discovery(object): | |||||
346 | self.__libdwf.FDwfAnalogOutTriggerSourceSet(self.__hdwf, c_int(channel), trigSrc) |
|
364 | self.__libdwf.FDwfAnalogOutTriggerSourceSet(self.__hdwf, c_int(channel), trigSrc) | |
347 | self.__libdwf.FDwfAnalogOutRepeatTriggerSet(self.__hdwf, c_int(channel), c_bool(trigRepeat)) |
|
365 | self.__libdwf.FDwfAnalogOutRepeatTriggerSet(self.__hdwf, c_int(channel), c_bool(trigRepeat)) | |
348 |
|
366 | |||
|
367 | ||||
|
368 | def analog_out_status(self, channel=0): | |||
|
369 | status = c_byte(DwfStateDone.value) | |||
|
370 | self.__libdwf.FDwfAnalogOutStatus(self.__hdwf, c_int(channel), byref(status)) | |||
|
371 | return status | |||
|
372 | # def analog_out_modulation(self, channel=0, | |||
|
373 | # carrier_frequency=10, carrier_shape='Sine', carrier_amplitude=1.0, carrier_offset=0.0, carrier_phase=0.0, carrier_symmetry=0.5, | |||
|
374 | # AM_frequency=0.2857, AM_shape='Square', AM_amplitude=100.0, AM_offset=0.0, AM_phase=0.0, AM_percentageSymmetry=0.2857, | |||
|
375 | # syncOnTrigger=trigsrcExternal1, triggerFrq=1.0, wait=0.0, runDuration=None): | |||
|
376 | # self.__libdwf.FDwfAnalogOutConfigure(self.__hdwf, c_int(channel), c_bool(False)) | |||
|
377 | # self.__libdwf.FDwfAnalogOutNodeEnableSet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_bool(True)) | |||
|
378 | # | |||
|
379 | # self.__libdwf.FDwfAnalogOutNodeFunctionSet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_int(shapes.get(carrier_shape))) | |||
|
380 | # self.__libdwf.FDwfAnalogOutNodeFrequencySet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_double(self.__limits.genFreq(carrier_frequency))) | |||
|
381 | # self.__libdwf.FDwfAnalogOutNodeAmplitudeSet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_double(self.__limits.genAmplitude(carrier_amplitude))) | |||
|
382 | # self.__libdwf.FDwfAnalogOutNodeOffsetSet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_double(self.__limits.genOffset(carrier_offset))) | |||
|
383 | # self.__libdwf.FDwfAnalogOutNodePhaseSet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_double(carrier_phase)) | |||
|
384 | # self.__libdwf.FDwfAnalogOutNodeSymmetrySet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_double(carrier_percentageSymmetry)) | |||
|
385 | # | |||
|
386 | # self.__libdwf.FDwfAnalogOutNodeEnableSet(self.__hdwf, c_int(channel), AnalogOutNodeAM, c_bool(True)) | |||
|
387 | # self.__libdwf.FDwfAnalogOutNodeFunctionSet(self.__hdwf, c_int(channel), AnalogOutNodeAM, c_int(shapes.get(AM_shape))) | |||
|
388 | # self.__libdwf.FDwfAnalogOutNodeFrequencySet(self.__hdwf, c_int(channel), AnalogOutNodeAM, c_double(self.__limits.genFreqAM_frequency))) | |||
|
389 | # self.__libdwf.FDwfAnalogOutNodeAmplitudeSet(self.__hdwf, c_int(channel), AnalogOutNodeAM, c_double(self.__limits.genAmplitude(AM_amplitude))) | |||
|
390 | # self.__libdwf.FDwfAnalogOutNodeOffsetSet(self.__hdwf, c_int(channel), AnalogOutNodeAM, c_double(self.__limits.genOffset(AM_offset))) | |||
|
391 | # self.__libdwf.FDwfAnalogOutNodePhaseSet(self.__hdwf, c_int(channel), AnalogOutNodeAM, c_double(AM_phase)) | |||
|
392 | # self.__libdwf.FDwfAnalogOutNodeSymmetrySet(self.__hdwf, c_int(channel), AnalogOutNodeAM, c_double(AM_percentageSymmetry)) | |||
|
393 | # | |||
|
394 | # if syncOnTrigger: | |||
|
395 | # self.analog_out_set_trigger(channel) | |||
|
396 | # self.__libdwf.FDwfAnalogOutRepeatSet(self.__hdwf, c_int(channel),c_int(0)) | |||
|
397 | # if runDuration is None: | |||
|
398 | # runDuration = triggerFrq | |||
|
399 | # self.__libdwf.FDwfAnalogOutRunSet(self.__hdwf, c_int(channel),c_double(runDuration)) | |||
|
400 | # self.__libdwf.FDwfAnalogOutWaitSet(self.__hdwf, c_int(channel), c_double(wait)) | |||
|
401 | # self.__libdwf.FDwfAnalogOutConfigure(self.__hdwf, c_int(channel), c_bool(True)) | |||
|
402 | ||||
|
403 | ||||
|
404 | ||||
|
405 | ||||
349 | def __del__(self): |
|
406 | def __del__(self): | |
350 | if self.__opened: |
|
407 | if self.__opened: | |
351 | self.__libdwf.FDwfDeviceClose(self.__hdwf) |
|
408 | self.__libdwf.FDwfDeviceClose(self.__hdwf) |
General Comments 0
You need to be logged in to leave comments.
Login now