Thread Tools  
akr
Junior Member
 
Join Date: Apr 2008
akr is on a distinguished road Posts: 4
RB-730 with matlab, Posted April 2nd, 2008 #1
Hello All,

I am trying to design a matlab program that can continuously update a horizontal bar graph as the user presses a certain key on the Cedrus box (RB-730).

I was able to get matlab to communicate with the response box using the code found in one of the earlier posts on using matlab with the response box. I was able to get a graph that updated too, but the graph does not update quickly enough when I press the keys at a fast rate.

My question:

Is it possible for the subject to continuously press and hold a key and can matlab keep updating the size of the bar as the key is pressed at a certain rate.

I have posted the code I'm currently using below. cedrusxid refers to the function from one of the previous posts on accessing the Response Box. Any suggestions are greatly appreciated.

Thanks,

Anil.



function [ output_args ] = test
%TEST Summary of this function goes here
% Detailed explanation goes here

maxscale = 55;
tension = 1;
barh([tension maxscale]);
drawnow;
x=0;
while x<100
y = cedrusxid;
if y == 80
tension = tension + 1;
end

if y == 112
tension = tension - 1;
end
if y == 48
x = 100;
end
barh([tension maxscale]);
drawnow;
x=x+1;
end
Reply With Quote
akr
Junior Member
 
Join Date: Apr 2008
akr is on a distinguished road Posts: 4
Some Progress, Posted April 4th, 2008 #2
Hi Folks,

I was able to make some progress but still having trouble on keeping the horizontal bar growing as the subject holds down a key. I've posted the modified code below. Basically, instead of calling cedrusxid again and again, I only call the fopen and fclose once. This makes for a faster response to the bar growth. Any help is greatly appreciated.

Thanks,

Anil.

function [ output_args ] = test
%TEST Summary of this function goes here
% Detailed explanation goes here

maxscale = 120;
tension = 1;
barh([tension maxscale]);
drawnow;
y = 0;

s1 = serial('COM3', 'BaudRate', 115200,'DataBits', 8, 'StopBits', 1, 'FlowControl', 'none', 'Parity', 'none', 'Terminator', 'CR', 'Timeout', 400, 'InputBufferSize', 16000);

fopen(s1);

while y~=48
response = fread(s1,6);
button = (response(2));
y = button;

if y == 80
tension = tension + 5;
end

if y == 112
tension = tension - 5;
end

barh([tension maxscale]);
drawnow;
end

fclose(s1);

end
Reply With Quote
akr
Junior Member
 
Join Date: Apr 2008
akr is on a distinguished road Posts: 4
Posted April 7th, 2008 #3
Hello again Folks,

After trying many different things, I think the best solution to get Matlab to communicate with the cedrus boxes is to use Cogent (a Matlab toolbox, see link below)

http://www.vislab.ucl.ac.uk/Cogent/

It allows any matlab script to effortlessly access responses from I think most cedrus boxes. However, I don't think cogent is very adept at reading bytes send in the xid protocol, so I would recommend that users set their boxes to RB series mode (baud rate shouldn't matter).

I'm almost done with the code I wanted to use (that can continuously draw a graph as the user holds down a button) with the help of cogent and will post it here shortly.

Anil.
Reply With Quote
akr
Junior Member
 
Join Date: Apr 2008
akr is on a distinguished road Posts: 4
Posted April 8th, 2008 #4
Here is the file.

You'll need cogent to run it.
Attached Files
File Type: zip readCog.zip (798 Bytes, 62 views)
Reply With Quote
Thread Tools
Posting Rules
Forum Jump:
Copyright Cedrus Corporation, 1991-2014.
All times are GMT -7. The time now is 06:12 PM.