標籤:print lex ble sizeof 讀取 type end return int
2、node-ffi
1)nodejs從c語言讀取資料
factorial.c
#include <stdint.h>#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <string.h>#if defined(WIN32) || defined(_WIN32)#define EXPORT __declspec(dllexport)#else#define EXPORT#endiftypedef struct{ double lon; double lat;}gps_info_t;gps_info_t* gps;void get_gps_shm_init(void){ gps = (gps_info_t *)malloc(sizeof(gps_info_t));}EXPORT gps_info_t* get_gps_info(void) { get_gps_shm_init(); gps->lon = 55.5; gps->lat = 55.5;return gps;}
factorial.js
var ffi = require(‘../node-ffi-master/‘)var refStruct = require(‘ref-struct‘);var refArray = require(‘ref-array‘);var ref = require(‘ref‘);//gps date structvar gps = refStruct({ ‘lon‘:ref.types.double, ‘lat‘:ref.types.double,});var gpsStructArrayType = refArray(gps);var gps_info = gpsStructArrayType(10);var libfactorial = ffi.Library(‘./libfactorial‘, { ‘get_gps_info‘: [ gpsStructArrayType, [ ‘void‘ ] ],});gps_info = libfactorial.get_gps_info(0)console.log(‘Your output: ‘ + gps_info[0].lon)console.log(‘Your output: ‘ + gps_info[0].lat)
2)nodejs向c語言寫資料
factorial.c
#include <stdint.h>#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <string.h>#if defined(WIN32) || defined(_WIN32)#define EXPORT __declspec(dllexport)#else#define EXPORT#endiftypedef struct{ char *user_name; char *passwd; char *dev_id;}user_info_t;user_info_t* user;void put_user_info_shm_init(void){ user = (user_info_t *)malloc(sizeof(user_info_t)); user->user_name = (char*)malloc(32*sizeof(char)); user->passwd = (char*)malloc(32*sizeof(char)); user->dev_id = (char*)malloc(32*sizeof(char));}EXPORT void put_user_info(user_info_t* user_info) { put_user_info_shm_init(); printf("get userinfo(user_name):%s",user_info->user_name); printf("get userinfo(user_name):%s",user_info->passwd); printf("get userinfo(user_name):%s",user_info->dev_id);}
factorial.js
var ffi = require(‘../node-ffi-master/‘)var refStruct = require(‘ref-struct‘);var refArray = require(‘ref-array‘);var ref = require(‘ref‘);//ui date structvar user = refStruct({ ‘user_name‘:‘string‘, ‘passwd‘:‘string‘, ‘dev_id‘:‘string‘,});var userStructArrayType = refArray(user);var user_info = userStructArrayType(1);user_info[0].user_name = ‘zdd‘;user_info[0].passwd = ‘123‘;user_info[0].dev_id = ‘65535‘;var libfactorial = ffi.Library(‘./libfactorial‘, { ‘put_user_info‘: [ ‘void‘, [ userStructArrayType ] ]});libfactorial.put_user_info(user_info)console.log(‘Your input: ‘ + user_info[0].user_name)console.log(‘Your input: ‘ + user_info[0].passwd)console.log(‘Your input: ‘ + user_info[0].dev_id)
nodejs與c語言深度互動