[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [TRNSYS-users] c++ type: call utility subroutine “Messages()”
Thanks a lot!
I didn`t know how to pass the string length… now it works!
Regards,
Gernot
> Gesendet: Mittwoch, 18. Februar 2015 um 23:44 Uhr
> Von: Sergio.Pintaldi@csiro.au
> An: trnsys-users@lists.onebuilding.org
> Betreff: Re: [TRNSYS-users] c++ type: call utility subroutine “Messages()”
>
> Hi,
>
> You have to define it in TRNSYS.h like this (I renamed the function in my case, otherwise you can use the default name in capitals letters):
>
> extern "C" __declspec(dllimport) void _cdecl MESSAGES(int* errorCode,char* message, char* severity, int* unitNo, int* typeNo, int n, int m);
> #define Messages MESSAGES
>
> Then you have to declare in your code:
>
> int errCode = 0;
> char Severity0[10],Message0[800];
> strcpy_s(Message0,"Hot water temperature out of boundaries!");
> strcpy_s(Severity0,"NOTICE");
>
> when you want your error code to pop up in the simulation list:
>
> if(condition)
> {
> errCode = 1;
> Messages(&errCode,Message0,Severity0,&iunit,&itype,strlen(Message0),strlen(Severity0));
> }
>
> Of course you call message with the severity ERROR (see manual) the simulation will stop!
>
> Regards,
>
> Sergio Pintaldi
>
> -----Original Message-----
> From: gernot.steindl@gmx.at [mailto:gernot.steindl@gmx.at]
> Sent: Tuesday, 17 February 2015 1:46 AM
> To: trnsys-users@lists.onebuilding.org
> Subject: [TRNSYS-users] c++ type: call utility subroutine “Messages()”
>
> Hello,
> I have some trouble using the utility subroutine Messages() in a type programmed in C++.
> I edited the TRNSYS.h and added a declaration as it is done for TYPECK():
>
> extern "C" __declspec(dllimport) void _cdecl MESSAGES(int *errorCode,char *message, char *serverity, int *unitNo, int *typeNo);
>
>
> If the messages function is called in the code I get a stack overflow error. I think the reason for this is passing of the char array.
> Here is the code how the message function is called:
>
> int error=1, unitNo=222, typeNo=222;
> char mes[800]="message";
> char serverity[800]="Fatal";
> MESSAGES(&error, *mes, serverity, &unitNo, &typeNo);
>
> My first attempt was to define the char arrays like ‘char *mes="message"’ but I got the same error and I read that the default maxMessageLength is set to 800, so I tired this too.
> Has anyone used the function in C++ and can show me an example.
> Thank you very much!
>
> _______________________________________________
> TRNSYS-users mailing list
> TRNSYS-users@lists.onebuilding.org
> http://lists.onebuilding.org/listinfo.cgi/trnsys-users-onebuilding.org
>