Send RS-232 output as a stimulus waveform
jtrapani
I have a light source that can be turned on and off by two separate RS-232 command strings using:
VDTWriteBinary2 /TYPE=(0x48) 0x4F, 0x00, 0x50 //Full On
VDTWriteBinary2 /TYPE=(0x48) 0x4F, 0xFF, 0x50 //Full Off
VDTWriteBinary2 /TYPE=(0x48) 0x4F, 0xFF, 0x50 //Full Off
I would like to turn this light source on and off as a square-wave stimulus within an experiment. However, I don't know the best was to control timing within Igor. Currently, my thinking is to use
For(i=0;i<episodes;i+=1)
stimticktime=((stimInterval)*60.15) //converts to 60ths of a second for "ticks" timer
elapsetime = ticks
do
//code to turn light on
while (ticks<=elapsetime + stimticktime)
interticktime=((interInterval)*60.15) //converts to 60ths of a second for "ticks" timer
elapsetime = ticks
do
//code to turn light off
while (ticks<=elapsetime + interticktime)
Endfor
stimticktime=((stimInterval)*60.15) //converts to 60ths of a second for "ticks" timer
elapsetime = ticks
do
//code to turn light on
while (ticks<=elapsetime + stimticktime)
interticktime=((interInterval)*60.15) //converts to 60ths of a second for "ticks" timer
elapsetime = ticks
do
//code to turn light off
while (ticks<=elapsetime + interticktime)
Endfor
I imagine there is a better way to do this with more precise timing. And ideally, the code would allow an input of variables that define the length of a stimulus interval and the frequency of the stimulation.
Many thanks in advance,
Joe
DisplayHelpTopic "Background Tasks"
You might have to run the background task at some fraction of the overall period if the on time and off time are different.
If a high degree of timing accuracy is necessary, you might need to use a hardware solution.
John Weeks
WaveMetrics, Inc.
support@wavemetrics.com
January 24, 2013 at 09:24 am - Permalink