<< Chapter < Page | Chapter >> Page > |
To read data from the DSP, a read channel must be set up. This is done using the invoke open command with an 'R' parameter.
invoke(h,'Open','ochan','R');
Reading data from the DSP board is a little more complicated. It seems that the DSP board buffers all the data. To get the latest piece of data, you must first 'Seek' to the current message.
[status,nummsgs] = invoke(h,'GetNumMsgs');status = invoke(h,'Seek',nummsgs);
Once at the correct message, the actual reading can be done.
[status, values] = invoke(h,'ReadI2');
As with writing, the port should be closed after reading.
MATLAB has some nice Graphical User Interface (GUI) features which can be used to control the flow of data to and from the RTDX port. The basic implementation consists of a blank window (figure) which can have differentinterface elements placed on it. These elements can be sliders, buttons, text boxes, etc...
When an element is accessed (for instance, a slider is moved, or a button is pushed), MATLAB will execute a "callback routine" which is a MATLAB function defined by the user. Desgining these interfacesis simple.
1 % rtdx_sliders - initializes RTDX port and sets up three sliders
23 h = actxserver('RTDX');
45 % open a blank figure for the slider
6 Fig = figure(1);7 % open sliders
8 % first slider9 sld1 = uicontrol(Fig,'units','normal','pos',[.2,.7,.5,.05],...10 'style','slider','value',4,'max',254,'min',0,'callback','rtdx_wrt_sliders');
1112 % second slider
13 sld2 = uicontrol(Fig,'units','normal','pos',[.2,.5,.5,.05],...
14 'style','slider','value',4,'max',254,'min',0,'callback','rtdx_wrt_sliders');15
16 % third slider17 sld3 = uicontrol(Fig,'units','normal','pos',[.2,.3,.5,.05],...18 'style','slider','value',4,'max',254,'min',0,'callback','rtdx_wrt_sliders');
Lines 9 through the end create the three sliders for the user interface. Several parameters are used to specify the behavior of each slider. The first parameter,Fig, tells the slider to create itself in the window we created in Line 6. The rest of the parameters are property/value pairs:
units
: Normal tells Matlab to use positioning relative to the window boundaries.pos
: Tells Matlab where to place the control.style
: Tells Matlab what type of control to place. slider creates a slider control.value
: Tells Matlab the default value for the control.max
: Tells Matlab the maximum value for the control.min
: Tells Matlab the maximum value for the control.callback
: Tells Matlab what script to call when the control is manipulated. rtdx_wrt_sliders is a Matlab file that writes the values of the controls to the RTDX port.1 % rtdx_wrt_sliders : writes values of sliders out to rtdx
23 % open rtdx port for data transfer
4 status = invoke(h,'Open','ichan','W');5
6 % send valuefrom sld1
7 v1 = round(get(sld1,'value'));8 status = invoke(h,'Write',int16(v1));
910 % send value from sld2
11 v2 = round(get(sld2,'value'));12 status = invoke(h,'Write',int16(v2));
1314 % send value from sld3
15 v3 = round(get(sld3,'value'));16 status = invoke(h,'Write',int16(v3));
1718 % send reset pulse
19 status = invoke(h,'Write',int16(2989));20
21 % close rtdx port22 status = invoke(h,'Close');
Line 7 retrieves the value from the slider using the get function to retrieve the value property. The value is then rounded off to create an integer, and the integeris sent as an 16-bit quantity to the DSP in Line 8. The other two sliders are sent in the same way. Line 19 sends 2989 to the DSP, which can be used toindicate that the three previously-transmitted values represent a complete set of data points. ( You can use whatever value you want. ) This can be used to prevent the DSP and Matlab from losing synchronization if a transmittedcharacter is not received by the DSP and provides some error detection.
The slider example shows some basic features of the gui tools. The handle for the RTDX server is generated into the workspace so that it can be used for writing. But other elements, such as text boxescannot be dealt with as easily. The Parameters from these can be accessed through their returned handles. Some examples:
Notification Switch
Would you like to follow the 'Digital signal processing laboratory (ece 420 55x)' conversation and receive update notifications?