summaryrefslogtreecommitdiff
path: root/macros/Sources/READC_f.sci
diff options
context:
space:
mode:
authorSunil Shetye2018-06-07 17:48:55 +0530
committerSunil Shetye2018-06-07 17:48:55 +0530
commit75a3a91595f06a1ac7d8ccc0a1ca0b5cd9552abf (patch)
tree2b584d8b6062684bd18beab96c5de019bd9c81c9 /macros/Sources/READC_f.sci
parentf97e60278c61e42308c32047109fcb983ded8dcd (diff)
downloadsci2js-75a3a91595f06a1ac7d8ccc0a1ca0b5cd9552abf.tar.gz
sci2js-75a3a91595f06a1ac7d8ccc0a1ca0b5cd9552abf.tar.bz2
sci2js-75a3a91595f06a1ac7d8ccc0a1ca0b5cd9552abf.zip
add macros from scicos_blocks from scilab 5.5.2
Diffstat (limited to 'macros/Sources/READC_f.sci')
-rw-r--r--macros/Sources/READC_f.sci212
1 files changed, 212 insertions, 0 deletions
diff --git a/macros/Sources/READC_f.sci b/macros/Sources/READC_f.sci
new file mode 100644
index 00000000..b47d5272
--- /dev/null
+++ b/macros/Sources/READC_f.sci
@@ -0,0 +1,212 @@
+// Xcos
+//
+// Copyright (C) INRIA - METALAU Project <scicos@inria.fr>
+// Copyright 2011 - Bernard DUJARDIN <bernard.dujardin@contrib.scilab.org>
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// See the file ../license.txt
+//
+
+function [x,y,typ] = READC_f(job,arg1,arg2)
+
+ x=[];
+ y=[];
+ typ=[];
+
+ select job
+
+ case "set" then
+ x = arg1;
+ model = x.model;
+ graphics = arg1.graphics;
+ exprs = graphics.exprs
+ out = model.out
+ dstate = model.dstate
+ ipar = model.ipar
+ imask = 9+ipar(1)
+ tmask = ipar(imask)
+ lunit = dstate(3)
+ fname = exprs(3)
+ frmt = exprs(4)
+
+ while %t do
+ [ok,tmask1,outmask,fname1,frmt1,M,N,offset,swap,exprs] = scicos_getvalue([msprintf(gettext("Set %s block parameters"), "READC_f" );
+ " "; gettext("Read from C binary file")], [gettext("Time Record Selection"); gettext("Outputs Record Selection"); ..
+ gettext("Input File Name"); gettext("Input Format"); gettext("Record Size"); gettext("Buffer Size"); ..
+ gettext("Initial Record Index"); gettext("Swap Mode (0:No, 1:Yes)")], ..
+ list("vec", -1, "vec", -1, "str", 1, "str", 1, "vec", 1, "vec", 1,"vec", 1, "vec", 1), exprs);
+
+ if ~ok then
+ break
+ end //user cancel modification
+
+ fname1 = pathconvert(stripblanks(fname1), %f, %t)
+ frmt1 = stripblanks(frmt1)
+ fmts = [ "s","l","d","f","c","us","ul","uc","ull","uls","ubl","ubs","dl","fl","ll","sl","db","fb","lb","sb"];
+
+ nout = size(outmask,"*")
+
+ if prod(size( tmask1 )) > 1 then
+ block_parameter_error(msprintf(gettext("Wrong value for ''%s'' parameter."), gettext("Time Record Selection")), ..
+ gettext("Must be a scalar or an empty matrix."))
+
+ elseif and(frmt1 <> fmts) then
+ block_parameter_error(msprintf(gettext("Wrong value for ''%s'' parameter: %s."), gettext("Input Format"), frmt1), ..
+ gettext("Valid formats are: " + strcat(fmts,", ")));
+
+ elseif alreadyran & fname1 <> fname then
+ block_parameter_error(msprintf(gettext("You cannot modify ''%s'' when running"), gettext("Input File Name")), ..
+ gettext("End current simulation first."));
+
+ elseif N <> ipar(6) & alreadyran then
+ block_parameter_error(msprintf(gettext("You cannot modify ''%s'' when running."), gettext("Buffer Size")), ..
+ gettext("End current simulation first"));
+
+ elseif alreadyran & size(tmask1) <> size(tmask) then
+ block_parameter_error(msprintf(gettext("You cannot modify ''%s'' when running."), gettext("Time Record Selection")), ..
+ gettext("End current simulation first."));
+
+ elseif fname1 == "" then
+ block_parameter_error(msprintf(gettext("Wrong value for ''%s'' parameter."), gettext("Input File Name")), ..
+ gettext("You must provide a file name."));
+ elseif M < 1 then
+ block_parameter_error(msprintf(gettext("Wrong value for ''%s'' parameter: %d."), gettext("Record Size"), M), ..
+ gettext("Strictly positive integer expected."));
+
+ elseif tmask1 ~= [] & (tmask1 < 1 | tmask1 > M) then
+ block_parameter_error(msprintf(gettext("Wrong value for ''%s'' parameter: %d."), gettext("Time Record Selection"), tmask1), ..
+ msprintf(gettext("Must be in the interval %s."), gettext("[1, Record Size = ") + string (M)+"]"));
+
+ elseif nout == 0 then
+ block_parameter_error(msprintf(gettext("Wrong value for ''%s'' parameter: %d."), gettext("Outputs Record Selection"), nout), ..
+ gettext("Strictly positive integer expected."));
+
+ elseif nout > M then
+ block_parameter_error(msprintf(gettext("Wrong value for ''%s'' parameter: %d."), gettext("Outputs Record Selection"), nout), ..
+ msprintf(gettext("Must be in the interval %s."), gettext("[1, Record Size = ") + string (M)+"]"));
+
+ elseif max(outmask) > M | min(outmask) < 1 then
+ block_parameter_error(msprintf(gettext("Wrong value for indexes in ''%s'' parameter: %s."), gettext("Outputs Record Selection"), strcat(string(outmask(:))," ")), ..
+ msprintf(gettext("Must be in the interval %s."), gettext("[1, Record Size = ") + string (M)+"]"));
+
+ elseif N < 1 then
+ block_parameter_error(msprintf(gettext("Wrong value for ''%s'' parameter: %d."), gettext("Buffer Size"), N), ..
+ gettext("Strictly positive integer expected."));
+
+ elseif swap <> 0 & swap <> 1 then
+ block_parameter_error(msprintf(gettext("Wrong value for ''%s'' parameter: %d."), gettext("Swap Mode"), swap), ..
+ msprintf(gettext("Must be in the interval %s."), "[0, 1]"));
+
+ elseif offset < 1 then
+ block_parameter_error(msprintf(gettext("Wrong value for ''%s'' parameter: %d."), gettext("Initial Record Index"), offset), ..
+ gettext("Strictly positive integer expected."));
+ else
+ if tmask1 == [] then
+ ievt = 0;
+ tmask1 = 0;
+ outpt = [];
+ else
+ ievt = 1;
+ outpt = 1;
+ end
+
+ out = size(outmask,"*")
+ [model,graphics,ok] = check_io(model,graphics,[],out,1,outpt)
+ frmt1 = part(frmt1,1:3);
+
+ if ok then
+ if ievt == 0 then
+ model.firing = -1
+ else
+ model.firing = 0
+ end
+
+ ipar = [ ...
+ length(fname1); ...
+ _str2code(frmt1); ...
+ ievt; ...
+ N; ...
+ M; ...
+ swap; ...
+ offset; ...
+ _str2code(fname1); ...
+ tmask1; ...
+ outmask(:) ...
+ ];
+
+ if prod(size(dstate)) <> (N*M) + 3 then
+ dstate = [-1; -1; lunit; zeros(N*M, 1)]
+ end
+
+ model.dstate = dstate;
+ model.ipar = ipar
+ graphics.exprs = exprs;
+ x.graphics = graphics;
+ x.model = model
+ break
+
+ end
+
+ end
+
+ end
+
+ case "define" then
+ frmt = "d "
+ fname = "foo"
+ lunit = 0
+ N = 20;
+ M = 1
+ rpar = []
+ tmask = 0
+ swap = 0
+ offset = 1
+ outmask = 1
+ ievt = 0
+ nout = size(outmask,"*")
+
+ ipar = [ ...
+ length(fname); _str2code(frmt); ievt; N; M; ...
+ swap;offset; _str2code(fname); tmask; outmask ...
+ ];
+
+ model = scicos_model()
+ model.sim = list("readc",2)
+ model.out = nout
+ model.evtin = 1
+ model.evtout = []
+ model.dstate = [1; 1; lunit; zeros(N*M,1)]
+ model.ipar = [ ...
+ length(fname); _str2code(frmt); ievt; N; M; ...
+ swap; offset;_str2code(fname); ...
+ tmask; outmask ...
+ ];
+
+ model.blocktype = "d"
+ model.firing = -1
+ model.dep_ut = [%f %f]
+
+ exprs = [ ...
+ "[]"; sci2exp(outmask); fname; frmt; string(M); ...
+ string(N); string(offset);string(swap) ...
+ ];
+
+ gr_i = [];
+
+ x = standard_define([4 2],model,exprs,gr_i)
+ end
+
+endfunction