1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
3
<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4
original version by: Nikos Drakos, CBLU, University of Leeds
5
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
6
* with significant contributions from:
7
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
10
<TITLE>Multi display scope </TITLE>
11
<META NAME="description" CONTENT="Multi display scope ">
12
<META NAME="keywords" CONTENT="main">
13
<META NAME="resource-type" CONTENT="document">
14
<META NAME="distribution" CONTENT="global">
16
<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
17
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19
<LINK REL="STYLESHEET" HREF="main.css">
23
<BODY bgcolor="#FFFFFF">
25
<!--Table of Child-Links-->
26
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
29
<LI><A NAME="tex2html3168"
30
HREF="CMSCOPE.htm#SECTION00522100000000000000">Library</A>
31
<LI><A NAME="tex2html3169"
32
HREF="CMSCOPE.htm#SECTION00522200000000000000">Description</A>
33
<LI><A NAME="tex2html3170"
34
HREF="CMSCOPE.htm#SECTION00522300000000000000">Dialog Box</A>
35
<LI><A NAME="tex2html3171"
36
HREF="CMSCOPE.htm#SECTION00522400000000000000">Default properties</A>
37
<LI><A NAME="tex2html3172"
38
HREF="CMSCOPE.htm#SECTION00522500000000000000">Interfacing function</A>
39
<LI><A NAME="tex2html3173"
40
HREF="CMSCOPE.htm#SECTION00522600000000000000">Computational function (type 4)</A>
42
<!--End of Table of Child-Links-->
45
<H2><A NAME="SECTION00522000000000000000"></A><A NAME="CMSCOPE"></A>
51
$\epsfig{file=CMSCOPE.eps,width=90.00pt}$
54
WIDTH="143" HEIGHT="161" ALIGN="BOTTOM" BORDER="0"
56
ALT="\epsfig{file=CMSCOPE.eps,width=90.00pt}">
58
<H3><font color="blue"><A NAME="SECTION00522100000000000000">
63
<H3><font color="blue"><A NAME="SECTION00522200000000000000">
66
When you start a simulation, Scicos open Scope windows. The Scope
67
block displays its input with respect to simulation time. The Scope
68
block can have multiple axes (one per port); all axes have a common
69
time range with independent y-axes. The Scope allows you to adjust the
70
amount of time and the range of input values displayed.
72
<H3><font color="blue"><A NAME="SECTION00522300000000000000">
76
<TABLE CELLPADDING=3 BORDER="1">
77
<TR><TD ALIGN="CENTER">Set Scope parameters</TD>
80
<TR><TD ALIGN="CENTER">Input ports sizes</TD>
81
<TD ALIGN="CENTER">1 1</TD>
83
<TR><TD ALIGN="CENTER">Drawing colors (<IMG
84
WIDTH="18" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
86
ALT="$ >$">0) or mark (<IMG
87
WIDTH="18" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
90
<TD ALIGN="CENTER">1 3 5 7 9 11 13 15</TD>
92
<TR><TD ALIGN="CENTER">Output window number</TD>
93
<TD ALIGN="CENTER">1</TD>
95
<TR><TD ALIGN="CENTER">Output window position</TD>
96
<TD ALIGN="CENTER">[]</TD>
98
<TR><TD ALIGN="CENTER">Output window sizes</TD>
99
<TD ALIGN="CENTER">[]</TD>
101
<TR><TD ALIGN="CENTER">Ymin vector</TD>
102
<TD ALIGN="CENTER">-1 -5</TD>
104
<TR><TD ALIGN="CENTER">Ymax vector</TD>
105
<TD ALIGN="CENTER">1 5</TD>
107
<TR><TD ALIGN="CENTER">Refresh period</TD>
108
<TD ALIGN="CENTER">30</TD>
110
<TR><TD ALIGN="CENTER">Buffer size</TD>
111
<TD ALIGN="CENTER">2</TD>
113
<TR><TD ALIGN="CENTER">Accept herited events 0/1</TD>
114
<TD ALIGN="CENTER">0</TD>
116
<TR><TD ALIGN="CENTER">Name of Scope (label&Id)</TD>
117
<TD ALIGN="CENTER"> </TD>
123
<LI>Input ports sizes: It allows multiple input ports.
125
<LI>Drawing colors : a vector of integers. The i-th element is the color
127
WIDTH="31" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
129
ALT="$ >0$">) or dash type (<IMG
130
WIDTH="31" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
132
ALT="$ <0$">) used to draw the evolution of the i-th
133
input port signal. See <B>plot2d</B> for color (dash type) definitions.
135
<LI>Output window number: The number of graphic window used for
136
the display. It is often good to use high values to avoid conflict
137
with palettes and Super Block windows. If default value is used <B> (1)</B>, Scicos define the output window number.
139
<LI>Output window position: a 2 vector specifying the coordinates
140
of the upper left corner of the graphic window. Answer [] for
141
default window position.
143
<LI>Output window sizes:a 2 vector specifying the coordinates of
144
the upper left corner of the graphic window. Answer [] for default
147
<LI>Ymin vector: Minimum values of the input; used to set up the Y-axis
148
of the plot in the graphics window.
150
<LI>Ymax vector: Maximum values of the input; used to set up the Y-axis
151
of the plot in the graphics window.
153
<LI>Refresh period: Maximum value on the X-axis (time). The plot
154
is redrawn when time reaches a multiple of this value.
156
<LI>Buffer size: To improve efficiency it is possible to buffer the
157
input data. The drawing is only done after each <B>Buffer size</B>
160
<LI>Accept herited events 0/1:if 0 <B>CSCOPE_f</B> draws a new point
161
only when an event occurs on its event input port. if 1 <B>CSCOPE_f</B>
162
draws a new point when an event occurs on its event input port and
163
when it's regular input changes due to an event on an other upstrem
164
block (herited events).
166
<LI>Name of Scope : Name/label of the block.
170
<H3><font color="blue"><A NAME="SECTION00522400000000000000">
171
Default properties</A>
175
<LI>always active: no
177
<LI>direct-feedthrough: yes
179
<LI>zero-crossing: no
183
<LI>number/sizes of inputs: 2 / 1 1
185
<LI>number/sizes of outputs: 0 /
187
<LI>number/sizes of activation inputs: 1 / 1
189
<LI>number/sizes of activation outputs: 0 /
191
<LI>continuous-time state: no
193
<LI>discrete-time state: yes
195
<LI>name of computational function: <EM>cmscope</EM>
198
<H3><font color="blue"><A NAME="SECTION00522500000000000000">
199
Interfacing function</A>
201
<TT>scilab/macros/scicos_blocks/sinks/CMSCOPE.sci</TT>
203
<H3><font color="blue"><A NAME="SECTION00522600000000000000">
204
Computational function (type 4)</A>
207
<PRE>#include "scicos_block.h"
208
#include <math.h>
209
#include "../machine.h"
217
static int c_n1 = -1;
219
static double c_b103 = 0.;
221
void cmscope(scicos_block *block,int flag)
233
int i__1, i__2, i__3,nwid,kk,i,j,sum;
237
static double rect[4];
239
extern int C2F(getlabel)();
240
extern int C2F(dset)();
241
static int i__, k, n, v;
242
static double frect[4], tsave;
244
extern int C2F(plot2d)(), C2F(setscale2d)();
246
extern int C2F(dr)();
247
static double dt, dv;
248
static int it, nxname;
249
extern int C2F(sciwin)(), C2F(dr1)(), C2F(scicosclip)();
253
static int nax[4], ilt, iwp;
255
/* Scicos block simulator */
256
/* ipar(1) = win_num */
257
/* ipar(2) = number of subwindows (input ports) */
258
/* ipar(3) = buffer size */
259
/* ipar(4:5) : window position */
260
/* ipar(6:7) : window dimension */
261
/* ipar(8:7+ipar(2)) = input port sizes */
262
/* ipar(8+ipar(2):7+ipar(2)+nu) = line type for ith curve */
264
/* rpar(2)=periode */
268
/* rpar(2*k+1)=ymin_k */
269
/* rpar(2*k+2)=ymax_k */
271
nu=block->insz[0];
274
nipar=block->nipar;
282
wid=20000+get_block_number();
294
n1 = (int) (z__[k + 1] / per);
295
if (z__[k + 1] < 0.) {
307
n2 = (int) (t / per);
312
/* add new point to the buffer */
316
for (i=0;i<block->nin;++i){
317
for (j = 0; j <block->insz[i] ; ++j) {
318
z__[n + 1 + kk * n + k] =block->inptr[i][j] ;
323
if (n1 == n2 && k < n) {
328
/* plot 1:K points of the buffer */
329
C2F(dr1)("xget\000", "window\000", &verb, &cur, &na, &v, &v, &v, &dv, &dv,
332
C2F(dr1)("xset\000", "window\000", &wid, &v, &v, &v, &v, &v, &dv, &dv,
335
C2F(dr1)("xset\000", "use color\000", &c__1, &c__0, &c__0, &c__0, &c__0, &
336
v, &dv, &dv, &dv, &dv);
337
C2F(dr1)("xset\000", "dashes\000", &c__0, &c__0, &c__0, &c__0, &c__0, &v,
338
&dv, &dv, &dv, &dv);
339
C2F(dr1)("xsetdr\000", "Rec\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
343
/* loop on input ports */
346
for (kwid = 1; kwid <= i__1; ++kwid) {
348
rect[1] = rpar[(kwid << 1) + 1];
349
rect[2] = per * (n1 + 1);
350
rect[3] = rpar[(kwid << 1) + 2];
352
frect[1] = (kwid - 1) * (1. / nwid);
354
frect[3] = 1. / nwid;
355
C2F(setscale2d)(frect, rect, "nn\000");
356
C2F(scicosclip)(&c__1);
357
/* loop on input port elements */
358
i__2 = ipar[kwid + 7];
359
for (i__ = 1; i__ <= i__2; ++i__) {
360
C2F(dr1)("xpolys\000", "v\000", &v, &v, &ipar[ilt + it], &
361
c__1, &k, &v, &z__[2], &z__[n + 2 + it * n], &dv,
365
C2F(scicosclip)(&c__0);
368
/* shift buffer left */
371
for (i=0;i<block->nin;++i){
372
sum=sum+block->insz[i];
374
for (i__ = 1; i__ <= i__1; ++i__) {
375
z__[n + 1 + (i__ - 1) * n + 1] = z__[n + 1 + (i__ - 1) * n + k];
384
C2F(dr1)("xclear\000", "v\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv,
386
C2F(dr1)("xset\000", "use color\000", &c__1, &c__0, &c__0, &c__0, &
387
c__0, &v, &dv, &dv, &dv, &dv);
388
C2F(dr)("xstart\000", "v\000", &wid, &v, &v, &v, &v, &v, &dv, &dv, &
390
C2F(dr1)("xset\000", "dashes\000", &c__0, &c__0, &c__0, &c__0, &c__0,
391
&v, &dv, &dv, &dv, &dv);
393
for (kwid = 1; kwid <= i__1; ++kwid) {
394
rect[0] = per * (n1 + 1);
395
rect[1] = rpar[(kwid << 1) + 1];
396
rect[2] = per * (n1 + 2);
397
rect[3] = rpar[(kwid << 1) + 2];
399
frect[1] = (kwid - 1) * (1. / nwid);
401
frect[3] = 1. / nwid;
402
C2F(setscale2d)(frect, rect, "nn\000");
403
C2F(plot2d)(rect, &rect[1], &c__1, &c__1, &c_n1, "011", "xlines", rect,
409
} else if (flag == 4) {
411
for (i=0;i<block->nin;++i){
412
sum=sum+block->insz[i];
414
if ((*block->work=
415
scicos_malloc(sizeof(double)*(1+ipar[3]*(1+sum))))== NULL ) {
416
set_block_error(-16);
426
n1 = (int) (t / per);
431
C2F(dr1)("xget\000", "window\000", &verb, &cur, &na, &v, &v, &v, &dv, &dv,
434
C2F(dr1)("xset\000", "window\000", &wid, &v, &v, &v, &v, &v, &dv, &dv,
438
if (ipar[iwp] >= 0) {
439
C2F(dr1)("xset\000", "wpos\000", &ipar[iwp], &ipar[iwp + 1], &v, &v, &
440
v, &v, &dv, &dv, &dv, &dv);
443
if (ipar[iwd] >= 0) {
444
C2F(dr1)("xset\000", "wdim\000", &ipar[iwd], &ipar[iwd + 1], &v, &v, &
445
v, &v, &dv, &dv, &dv, &dv);
447
C2F(dr1)("xsetdr\000", "Rec\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
449
C2F(dr1)("xset\000", "use color\000", &c__1, &c__0, &c__0, &c__0, &c__0, &
450
v, &dv, &dv, &dv, &dv);
451
C2F(dr1)("xset\000", "alufunction\000", &c__3, &c__0, &c__0, &c__0, &c__0,
452
&v, &dv, &dv, &dv, &dv);
453
C2F(dr1)("xclear\000", "v\000", &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
455
C2F(dr)("xstart\000", "v\000", &wid, &v, &v, &v, &v, &v, &dv, &dv, &dv, &
457
C2F(dr1)("xset\000", "dashes\000", &c__0, &c__0, &c__0, &c__0, &c__0, &v,
458
&dv, &dv, &dv, &dv);
460
kfun=get_block_number();
461
C2F(getlabel)(&kfun, buf, &nxname);
462
if (nxname > 39) {
467
if ((nxname == 1 && *(unsigned char *)buf == ' ') || nxname == 0) {
469
C2F(dr)("xname\000", buf, &v, &v, &v, &v, &v, &v, &dv, &dv, &dv, &dv);
472
for (kwid = 1; kwid <= i__1; ++kwid) {
473
rect[0] = per * (n1 + 1);
474
rect[1] = rpar[(kwid << 1) + 1];
475
rect[2] = per * (n1 + 2);
476
rect[3] = rpar[(kwid << 1) + 2];
478
frect[1] = (kwid - 1) * (1. / nwid);
480
frect[3] = 1. / nwid;
481
C2F(setscale2d)(frect, rect, "nn\000");
482
C2F(plot2d)(rect, &rect[1], &c__1, &c__1, &c_n1, "011", buf, rect, nax);
488
C2F(dset)(&i__1, &c_b103, &z__[3], &c__1);
489
} else if (flag == 5) {
494
scicos_free(*block->work);
497
C2F(dr1)("xget\000", "window\000", &verb, &cur, &na, &v, &v, &v, &dv, &dv,
500
C2F(dr1)("xset\000", "window\000", &wid, &v, &v, &v, &v, &v, &dv, &dv,
503
C2F(dr1)("xset\000", "use color\000", &c__1, &c__0, &c__0, &c__0, &c__0, &
504
v, &dv, &dv, &dv, &dv);
508
n1 = (int) (t / per);
512
/* loop on input ports */
514
for (kwid = 1; kwid <= i__1; ++kwid) {
515
rect[0] = per * (n1 + 1);
516
rect[1] = rpar[(kwid << 1) + 1];
517
rect[2] = per * (n1 + 2);
518
rect[3] = rpar[(kwid << 1) + 2];
520
frect[1] = (kwid - 1) * (1. / nwid);
522
frect[3] = 1. / nwid;
523
F2C(setscale2d)(frect, rect, "nn\000");
524
F2C(scicosclip)(&c__1);
525
/* loop on input port elements */
526
i__2 = ipar[kwid + 7];
527
for (i__ = 1; i__ <= i__2; ++i__) {
529
C2F(dr1)("xpolys\000", "v\000", &v, &v, &ipar[ilt + it], &c__1, &
530
i__3, &v, &z__[2], &z__[n + 2 + it * n], &dv, &dv);
533
C2F(scicosclip)(&c__0);
535
scicos_free(*block->work);