diff options
author | Sunil Shetye | 2018-06-07 17:48:55 +0530 |
---|---|---|
committer | Sunil Shetye | 2018-06-07 17:48:55 +0530 |
commit | 75a3a91595f06a1ac7d8ccc0a1ca0b5cd9552abf (patch) | |
tree | 2b584d8b6062684bd18beab96c5de019bd9c81c9 /macros/Sources/READC_f.sci | |
parent | f97e60278c61e42308c32047109fcb983ded8dcd (diff) | |
download | sci2js-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.sci | 212 |
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 |