Verfasst am: 16.05.2011, 08:22
Titel: Interfacing Function Problem in Xcos 5.3.1?
Hallo Leute!
Ich hab mir mal ein c file für einen generic_block3 geschrieben - funktioniert auch wunderbar. Nun wollte ich mir eine interfacing function dazu schreiben und als palette laden. Ich hab das mit dem nachfolgenden Skript gemacht (nach der Vorlage aus der Xcos Hilfe).
Code:
loadXcosLibs();
function[x,y,typ]=Offsetblk(job,arg1,arg2)
x=[];y=[];typ=[];
select job
case 'plot' then
standard_draw(arg1) case 'getinputs' then
[x,y,typ]=standard_inputs(arg1) case 'getoutputs' then
[x,y,typ]=standard_outputs(arg1) case 'getorigin' then
[x,y]=standard_origin(arg1) case 'set' then
x=arg1;
graphics=arg1.graphics;exprs=graphics.exprs
model=arg1.model;
// ifsize(exprs,'*')==2 then exprs=exprs(2),end //compatibility
while %t do
[ok,a,exprs]=scicos_getvalue('Block zur Offsetaddition (nur positive Werte)',..
'Offset',list('vec',1),exprs) if ~ok then break,end if a<0 then
message('Zahl muss groesser 0 sein') else if ok then
graphics.exprs=exprs
model.rpar=a
x.graphics=graphics;x.model=model
break end end end case 'define' then
in=1
a=0
model=scicos_model()
model.sim=list('offset_c',4)
model.in=1
model.out=1
model.rpar=a
model.blocktype='c'
model.dep_ut=[%t %f]
exprs='a'
gr_i=['xstringb(orig(1),orig(2),''Offsetadditionsblock'',sz(1),sz(2),''fill'');']
x=standard_define([22],model,exprs,gr_i) end
endfunction
//create an instance of a new block
scs_m = Offsetblk("define");
export_to_hdf5(TMPDIR + "/off.h5","scs_m");
//create a new palette
pal = xcosPal("My palette");
//add block to this palette using e.g. RAMP icon
pal = xcosPalAddBlock(pal,TMPDIR+"/off.h5");
Ich kann das file auch ausführen und dann in Xcos einfügen und verwenden. Will ich das diagram allerdings abspeichern so kommt folgender Fehler:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/xml/serializer/TreeWalker
at org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:821)
at org.scilab.modules.gui.utils.ConfigManager.writeDocument(Unknown Source)
at org.scilab.modules.gui.utils.ConfigManager.saveLastOpenedDirectory(Unknown Source)
at org.scilab.modules.gui.bridge.filechooser.SwingScilabFileChooser.displayAndWait(Unknown Source)
at org.scilab.modules.xcos.graph.XcosDiagram.saveDiagramAs(Unknown Source)
at org.scilab.modules.xcos.actions.SaveAsAction.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.xml.serializer.TreeWalker
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 33 more
Meine Frage: Hab ich da was falsch gemacht oder ist das noch ein bug von xcos. Gibt es einen anderen Weg (also nicht über palette einfügen), damit der Fehler nicht auftritt?
Danke
LG Gerhard
gerhard
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 17.05.2011, 17:29
Titel: Lösung
Hallo. Ich hab mir heute versuchsweise die neueste Version von Scilab installiert (5.3.2). Jetzt funktioniert es ohne die Fehlermeldung
ich wollte deinen Xcos BLock verwenden, leider funktioniert das bei mir nicht.
Ich habe Scilab 5.3.3
Wie muss ich vorgehen um deine Funktion als Block in Xcos zu verwenden?
Ich hab die Funktion als Offsetblk.sic gespeichert
Danach in der Scilab Console "exec Offsetblk.sc" ausgeführt.
Jetzt hatte ich in Xcos eine neue Palette mit dem Offsetblk BLock.
Hier konnte ich auch zb einen Wert eintragen.
Wenn ich ihn allerdings zwischen einen Sinusgenerator und einem Scope hängt, oder eine andere Verschaltung aufbaut, kommt folgende Fehlermeldung:
scicosim : unknown block : offset_c
Kannst du mir weiterhelfen?
mfg
moe69
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.