From Friday, January 17th 11 PM CDT (January 18th 5 AM UTC) through Saturday, January 18th 11:30 AM CDT (January 18th 5:30 PM UTC), ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Multifunction DAQ

cancel
Showing results for 
Search instead for 
Did you mean: 

Two channel scan using single task Daqmx with multiple output signals

Hello, 

 

I am using NI-USB-6211 DAQ to control the X-Y Galvanometers and I want to input multiple angle signals. The code only move to one position and stop. I am not sure if this is the problem with my code and are there any ways to check the problems? Thanks. 

 

import numpy as np
from PyDAQmx import *
import PyDAQmx

class Galvo:

def __init__(self):

print("initialized Galvo")

# State variables
self.x_mirror_volt = [0.0] # Initialize to origin
self.y_mirror_volt = [0.0]
self.writeFrequency = 120000.

# Initialize the Galvo setting
self.Galvo_MoveTask = Task()
self.Galvo_MoveTask.CreateAOVoltageChan("Dev1/ao0", "X_Out", -10., 10., DAQmx_Val_Volts, None)
self.Galvo_MoveTask.CreateAOVoltageChan("Dev1/ao1", "Y_Out", -10., 10., DAQmx_Val_Volts, None)
data_init = np.array(np.append(self.x_mirror_volt, self.y_mirror_volt), dtype = np.float64) # Initial the data with the (0.0, 0.0) pulses
self.Galvo_MoveTask.WriteAnalogF64(1, 1, -1, DAQmx_Val_GroupByChannel, data_init, None, None)

def raster_region(self, x_volt, y_volt):

# taskHandle.WriteAnalogF64(number of samples per channel, automatically start task,
# seconds before timeout (-1 means don't timeout), grouping of samples
# (by channel or by scan), data array, array size,
# number of samples actually read, None)
data = np.array(np.append(x_volt, y_volt), dtype = float64)

self.Galvo_MoveTask.CfgSampClkTiming(None, self.writeFrequency, DAQmx_Val_Rising, DAQmx_Val_FiniteSamps, np.size(x_volt))
self.Galvo_MoveTask.WriteAnalogF64(np.size(x_volt), 1, 10, DAQmx_Val_GroupByChannel, data, None, None)
self.Galvo_MoveTask.WaitUntilTaskDone(-1)
self.Galvo_MoveTask.StopTask()
self.Galvo_MoveTask.ClearTask()

if __name__ == "__main__":

test = Galvo()

x_volt = [0.5, 1.0, 1.5]
y_volt = [1.5, 0.5, 1.5]
print(x_volt)
print(y_volt)
test.raster_region(x_volt, y_volt)

 

0 Kudos
Message 1 of 1
(1,754 Views)