@@ -21,7 +21,26 import numpy as np | |||
|
21 | 21 | |
|
22 | 22 | |
|
23 | 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 | 45 | DECIAnalogInChannelCount = c_int(1) |
|
27 | 46 | DECIAnalogOutChannelCount = c_int(2) |
@@ -308,10 +327,11 class Discovery(object): | |||
|
308 | 327 | ############################################################# |
|
309 | 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 | 331 | self.__libdwf.FDwfAnalogOutConfigure(self.__hdwf, c_int(channel), c_bool(False)) |
|
313 | 332 | self.__libdwf.FDwfAnalogOutNodeEnableSet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_bool(True)) |
|
314 | 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 | 335 | if shape!="DC": |
|
316 | 336 | self.__libdwf.FDwfAnalogOutNodeFrequencySet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_double(self.__limits.genFreq(frequency))) |
|
317 | 337 | self.__libdwf.FDwfAnalogOutNodeAmplitudeSet(self.__hdwf, c_int(channel), AnalogOutNodeCarrier, c_double(self.__limits.genAmplitude(amplitude))) |
@@ -320,12 +340,10 class Discovery(object): | |||
|
320 | 340 | if syncOnTrigger: |
|
321 | 341 | self.analog_out_set_trigger(channel) |
|
322 | 342 | self.__libdwf.FDwfAnalogOutRepeatSet(self.__hdwf, c_int(channel),c_int(0)) |
|
323 | # if frequency >= triggerFrq: | |
|
324 | runDuration = triggerFrq | |
|
325 | # Doesn't work! try with triggerFrq=1 and frequency=0.8 | |
|
326 | # else: | |
|
327 | # runDuration = triggerFrq/frequency | |
|
343 | if runDuration is None: | |
|
344 | runDuration = triggerFrq | |
|
328 | 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 | 347 | self.__libdwf.FDwfAnalogOutConfigure(self.__hdwf, c_int(channel), c_bool(True)) |
|
330 | 348 | |
|
331 | 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 | 364 | self.__libdwf.FDwfAnalogOutTriggerSourceSet(self.__hdwf, c_int(channel), trigSrc) |
|
347 | 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 | 406 | def __del__(self): |
|
350 | 407 | if self.__opened: |
|
351 | 408 | self.__libdwf.FDwfDeviceClose(self.__hdwf) |
General Comments 0
You need to be logged in to leave comments.
Login now