Skip to content

Commit

Permalink
Added some features to the new plotting package
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@3046 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
Henrik Eriksson committed Jan 12, 2008
1 parent 1abe8ca commit 08abbd6
Show file tree
Hide file tree
Showing 12 changed files with 867 additions and 80 deletions.
38 changes: 37 additions & 1 deletion Compiler/Ceval.mo
Expand Up @@ -2241,7 +2241,7 @@ algorithm
then
(cache,Values.STRING("Error reading the simulation result."),st);

case (cache,env,
case (cache,env, //plot2({x,y})
Exp.CALL(
path = Absyn.IDENT(name = "plot2"),
expLst = {Exp.ARRAY(array = vars),
Expand Down Expand Up @@ -2633,6 +2633,42 @@ algorithm
then
(cache,Values.STRING("Unknown error while plotting"),st);

case (cache,env,Exp.CALL(path = Absyn.IDENT(name = "enableSendData"),expLst = {Exp.BCONST(bool = b)}),(st as Interactive.SYMBOLTABLE(ast = p,explodedAst = sp,instClsLst = ic,lstVarVal = iv,compiledFunctions = cf)),msg)
local
Boolean b;
equation
// print("enableSendData\n");
// print(Util.boolString(b));
// print("\n");
System.enableSendData(b);
then
(cache,Values.BOOL(true),st);

case (cache,env,Exp.CALL(path = Absyn.IDENT(name = "setDataPort"),expLst = {Exp.ICONST(integer = i)}),(st as Interactive.SYMBOLTABLE(ast = p,explodedAst = sp,instClsLst = ic,lstVarVal = iv,compiledFunctions = cf)),msg)
local
Integer i;
equation
// print("setDataPort\n");
// print(intString(i));
// print("\n");
System.setDataPort(i);
then
(cache,Values.BOOL(true),st);
//{Exp.ARRAY(array = strings)}
case (cache,env,Exp.CALL(path = Absyn.IDENT(name = "setVariableFilter"),expLst = {Exp.ARRAY(array=strings)}),(st as Interactive.SYMBOLTABLE(ast = p,explodedAst = sp,instClsLst = ic,lstVarVal = iv,compiledFunctions = cf)),msg)
local
list<Exp.Exp> strings;
equation
vars_1 = Util.listMap(strings, Exp.printExpStr);
// print("setVariableFilter\n");
// print(Util.stringAppendList(vars_1));
// print("\n");
// _ = Values.setVariableFilter(vars_1);
_=System.setVariableFilter(Util.stringAppendList(vars_1));
then
(cache,Values.BOOL(true),st);



case (cache,env,Exp.CALL(path = Absyn.IDENT(name = "timing"),expLst = {exp}),st,msg)
equation
Expand Down
4 changes: 2 additions & 2 deletions Compiler/SimCodegen.mo
Expand Up @@ -137,7 +137,7 @@ public function generateMakefile "function: generateMakefile
str = Util.stringAppendList(
{"#Makefile generated by OpenModelica\n\n","CXX=g++\n",
cname,": ",cpp_file,"\n","\t $(CXX) -o ",cname,".exe ",cpp_file," -L\"",
omhome,"/lib/\""," -I. -I\"",omhome,"/include/\" "," -lsim -lc_runtime -lf2c ",
omhome,"/lib/\""," -I. -I\"",omhome,"/include/\" "," -lsim -lc_runtime -lf2c ${SENDDATALIBS} ",
libs_1," ${MODELICAUSERLFLAGS}\n"}) "\".exe\" is needed for a class that is in a package." ;
System.writeFile(filename, str);

Expand All @@ -153,7 +153,7 @@ public function generateMakefile "function: generateMakefile
{"#Makefile generated by OpenModelica\n\n","CXX=g++\n",
cname,": ",cpp_file,"\n","\t $(CXX) -o ",cname,".exe ",cpp_file," -L\"",
omhome,"/lib/\""," -L\"",file_dir,"\""," -I. -I\"",omhome,"/include/\" ",
" -I\"",file_dir,"\""," -lsim -lc_runtime -lf2c ",libs_1," ${MODELICAUSERLFLAGS}\n"}) "\".exe\" is needed for a class that is in a package." ;
" -I\"",file_dir,"\""," -lsim -lc_runtime -lf2c ${SENDDATALIBS} ",libs_1," ${MODELICAUSERLFLAGS}\n"}) "\".exe\" is needed for a class that is in a package." ;
System.writeFile(filename, str);

then
Expand Down
25 changes: 25 additions & 0 deletions Compiler/Static.mo
Expand Up @@ -5512,6 +5512,24 @@ algorithm
(cache,Exp.CALL(Absyn.IDENT("plotParametric2"),
vars_1,false,true,Exp.BOOL()),Types.PROP((Types.T_BOOL({}),NONE),Types.C_VAR()),SOME(st));

case (cache,env,Absyn.CREF_IDENT(name = "enableSendData"),{Absyn.BOOL(value = enabled)},{},impl,SOME(st))
local
Boolean enabled;
then (cache, Exp.CALL(Absyn.IDENT("enableSendData"),{Exp.BCONST(enabled)},false,true,Exp.BOOL()),Types.PROP((Types.T_BOOL({}),NONE),Types.C_VAR()),SOME(st));

case (cache,env,Absyn.CREF_IDENT(name = "setDataPort"),{Absyn.INTEGER(value = port)},{},impl,SOME(st))
local
Integer port;
then (cache, Exp.CALL(Absyn.IDENT("setDataPort"),{Exp.ICONST(port)},false,true,Exp.BOOL()),Types.PROP((Types.T_BOOL({}),NONE),Types.C_VAR()),SOME(st));

case (cache,env,Absyn.CREF_IDENT(name = "setVariableFilter"),{Absyn.ARRAY(arrayExp = strings)},{},impl,SOME(st))
local
list<Absyn.Exp> strings;
equation
vars_1 = elabVariablenames(strings);
// Exp.ARRAY(Exp.OTHER(),false,vars_1)
then (cache, Exp.CALL(Absyn.IDENT("setVariableFilter"),{Exp.ARRAY(Exp.STRING(), false, vars_1)},false,true,Exp.BOOL()),Types.PROP((Types.T_BOOL({}),NONE),Types.C_VAR()),SOME(st));


case (cache,env,Absyn.CREF_IDENT(name = "timing"),{exp},{},impl,SOME(st))
equation
Expand Down Expand Up @@ -5723,6 +5741,13 @@ algorithm
xs_1 = elabVariablenames(xs);
then
(Exp.CODE(Absyn.C_VARIABLENAME(cr),Exp.OTHER()) :: xs_1);

case ((Absyn.STRING(value = str) :: xs))
equation

xs_1 = elabVariablenames(xs);
then
(Exp.SCONST(str) :: xs_1);
end matchcontinue;
end elabVariablenames;

Expand Down
18 changes: 18 additions & 0 deletions Compiler/System.mo
Expand Up @@ -152,6 +152,24 @@ public function sendData
external "C" ;
end sendData;

public function enableSendData
input Boolean enable;
external "C";
end enableSendData;

public function setDataPort
input Integer port;
external "C";
end setDataPort;

public function setVariableFilter
input String variables;
output Boolean b;
external "C";

end setVariableFilter;


public function writeFile
input String inString1;
input String inString2;
Expand Down
2 changes: 2 additions & 0 deletions Compiler/Values.mo
Expand Up @@ -1423,6 +1423,8 @@ algorithm
end matchcontinue;
end sendPtolemyplotDataset;



protected function unparsePtolemyValues "function: unparsePtolemyValues
Helper function to write_ptolemyplot_dataset.
Expand Down
99 changes: 94 additions & 5 deletions Compiler/runtime/systemimpl.c
Expand Up @@ -174,6 +174,7 @@ void System_5finit(void)
char* newPath;
char* omhome;
char* mingwpath;
char* qthome;
set_cc("gcc");
set_cflags("-I%OPENMODELICAHOME%\\include -L%OPENMODELICAHOME%\\lib -lc_runtime %MODELICAUSERCFLAGS%");
path = getenv("PATH");
Expand All @@ -189,6 +190,19 @@ void System_5finit(void)
}
free(mingwpath);
}



// qthome = getenv("QTHOME");
// if(qthome && strlen(qthome))
if(1)
{
// char senddatalibs[] = "SENDDATALIBS= -lsendData -lQtNetwork -lQtCore -lQtGui -luuid -lole32 -lws2_32";
_putenv("SENDDATALIBS=-lsendData -lQtNetwork -lQtCore -lQtGui -luuid -lole32 -lws2_32");
// _putenv(senddatalibs);
}


}


Expand Down Expand Up @@ -1266,6 +1280,46 @@ RML_BEGIN_LABEL(System__sendData)
}
RML_END_LABEL

RML_BEGIN_LABEL(System__enableSendData)
{
int enable = RML_UNTAGFIXNUM(rmlA0);
if(enable)
_putenv("enableSendData=1");
else
_putenv("enableSendData=0");


// enableSendData(enable);
RML_TAILCALLK(rmlSC);
}
RML_END_LABEL

RML_BEGIN_LABEL(System__setDataPort)
{
int port = RML_UNTAGFIXNUM(rmlA0);

char* dataport = malloc(25);
sprintf(dataport,"sendDataPort=%s", port);
_putenv(dataport);
free(dataport);
// setDataPort(port);
RML_TAILCALLK(rmlSC);
}
RML_END_LABEL
RML_BEGIN_LABEL(System__setVariableFilter)
{
char * variables = RML_STRINGDATA(rmlA0);
char* filter=malloc(strlen(variables)+20);
sprintf(filter, "sendDataFilter=%s",variables);
_putenv(filter);
free(filter);
// setVariableFilter(variables);
RML_TAILCALLK(rmlSC);
}
RML_END_LABEL



RML_BEGIN_LABEL(System__getFileModificationTime)
{
char* fileName = RML_STRINGDATA(rmlA0);
Expand Down Expand Up @@ -1529,6 +1583,12 @@ void System_5finit(void)

set_cflags("-I$OPENMODELICAHOME/include -L$OPENMODELICAHOME/lib -lc_runtime -lm $MODELICAUSERCFLAGS");

qthome = getenv("QTHOME");
if(qthome && strlen(qthome))
{
char senddatalibs[] = "SENDDATALIBS= -lsendData -lQtNetwork -lQtCore -lQtGui -luuid";
_putenv(senddatalibs);
}

}

Expand Down Expand Up @@ -2575,11 +2635,7 @@ RML_END_LABEL

RML_BEGIN_LABEL(System__sendData)
{






char* data = RML_STRINGDATA(rmlA0);
char* interpolation = RML_STRINGDATA(rmlA1);
char* title = RML_STRINGDATA(rmlA2);
Expand All @@ -2606,6 +2662,39 @@ RML_BEGIN_LABEL(System__sendData)
}
RML_END_LABEL

RML_BEGIN_LABEL(System__enableSendData)
{
int enable = RML_UNTAGFIXNUM(rmlA0);
if(enable)
setenv("enableSendData", "1");
else
setenv("enableSendData", "0");
// enableSendData(enable);
RML_TAILCALLK(rmlSC);
}
RML_END_LABEL

RML_BEGIN_LABEL(System__setDataPort)
{
int port = RML_UNTAGFIXNUM(rmlA0);
char* p = malloc(10);
sprintf(p, "%s", port);
setenv("sendDataPort", p);
free(p);
setDataPort(port);
RML_TAILCALLK(rmlSC);
}
RML_END_LABEL
RML_BEGIN_LABEL(System__setVariableFilter)
{
char * variables = RML_STRINGDATA(A0);

setenv("sendDataFilter", variables);
// setVariableFilter(variables);
RML_TAILCALLK(rmlSC);
}
RML_END_LABEL


RML_BEGIN_LABEL(System__getFileModificationTime)
{
Expand Down
2 changes: 1 addition & 1 deletion c_runtime/Makefile
Expand Up @@ -65,7 +65,7 @@ libsim.a : $(SIMOBJS)
libf2c.a :
cd libf2c && $(MAKE) -f makefile.u

libsendData.a : sendData/sendData.cpp sendData/sendData.h sendData/sendData.pro
libsendData.a : sendData/sendData.cpp sendData/sendData.h sendData/sendData.pro sendData/humbug.h sendData/humbug.cpp
# cd ./sendData && \
# $(QTHOME)/bin/qmake && \
# sed -e's/QtNetwork /QtNetwork4 /' -e's/QtGui /QtGui4 /' -e's/QtCore /QtCore4 /' Makefile.Release > Makefile && \
Expand Down
50 changes: 50 additions & 0 deletions c_runtime/sendData/humbug.cpp
Expand Up @@ -57,6 +57,7 @@ void errmsg()
cerr << "OMC is compiled without Qt. Check the QTHOME environment variable and recompile." << endl;
}

bool Static::enabled_ = false;

bool ellipse(double x0, double y0, double x1, double y1, const char* color, int colorR, int colorG, int colorB, const char* fillColor, int fillColorR, int fillColorG, int fillColorB)
{
Expand Down Expand Up @@ -105,3 +106,52 @@ bool plt(const char* var, const char* model, const char* title, const char* xLab
errmsg();
return true;
}

void setVariableFilter(const char* variables)
{
errmsg();
return;
}

void setDataPort(int port)
{
errmsg();
return;
}

void enableSendData(int enable)
{
errmsg();
return;
}

//void initSendData(int variableCount, const char* variableNames);
void initSendData(int variableCount1, int variableCount2, char** statesNames, char** stateDerivativesNames, char** algebraicsNames)
{
errmsg();
return;
}

void sendPacket(const char* data)
{
errmsg();
return;
}


void closeSendData()
{
errmsg();
return;
}

bool pltTable(double*, size_t r, size_t c) //, const char*, int size);
{
errmsg();
return true;
}

bool Static::enabled()
{
return false;
}

0 comments on commit 08abbd6

Please sign in to comment.