Rather than using "string" type for those fixed-length strings, use this
little Type that I whipped up
(FixedString: https://gist.github.com/TooTallNate/0fe04681493a3c32da51).
That way, the resulting struct size/alignment will match what it would be
in C.
On top of that, you're going to need to pass in a reference to the TINData
and TOUTData structs. The way you have it defined right now you're passing
the structs in by value, which is wrong. So do `var TINDataPtr =
ref.refType(TINDataPtr);` and use that for the first argument. Do the same
thing for the OUT one. And then instead of passing myTINData directly in,
you would call `myTINData.ref()` to pass a pointer to the struct rather
than the value.
Hope that helps. Cheers!
On Thursday, September 24, 2015 at 8:24:08 AM UTC-7, Leopoldo Belmonte
wrote:
>
> Could anyone help me to solve a problem with nodejs and C library (call to
> some dll methods)?
>
>
> My dll have these methods:
>
> void Open(char *Path);int Execute(TINData *InData,TOUData *OutData);void
> Close(void);
>
> with these data structures:
>
> typedef struct {
> char Value[8+1];
> char Type [1+1];
> int Id;
> unsigned char Parity;} TINData
> typedef struct {
> char Cash[8+1];
> char Telephone[11+1];
> char CallType[3+1];
> char CallResult[2+1];
> char Description[24+1];} TOUTData
>
> My nodejs code:
>
> var ffi = require('ffi');var ref = require('ref');var StructType =
> require('ref-struct');
>
>
> var TINData = StructType({
> 'Value': 'string',
> 'Type': 'string',
> 'Id': 'int',
> 'Parity': 'string'});
> var TOUTData = StructType({
> 'Cash': 'string',
> 'Telephone': 'string',
> 'CallType': 'string',
> 'CallResult': 'string',
> 'Description': 'string'});
>
>
>
> var mylibrary = ffi.Library('OurLib.dll', {
> 'Open' : ['void', ['string']],
> 'Execute' : ['void', [TINData, TOUTData]],
> 'Close' : ['void', ['void']]});
>
> myLibrary.Open('myConnection');
> var myTINData = new TINData();
> myTINData.Value = '00000010';
> myTINData.Type = '1';
> myTINData.Id = 123;
> myTINData.Parity = '0';
>
>
--
Job board: http://jobs.nodejs.org/
New group rules:
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules:
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
---
You received this message because you are subscribed to the Google Groups
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/nodejs/ebc7c39a-f009-4a6a-acd1-db295d6ad750%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.