前提
硬件:树莓派+传感器(DTH11)
具体部分:
1.树莓派+传感器+c语言采集数据
2.使用nodejs处理得来的数据
本文记录的部分:让nodejs和测温程序间可进行交互。
故,其中有个环节是:nodejs和c程序进行交互。
已知的有三个方法:源自博客
nodejs与c语言交互应用实例
其中提到了三个方式:
1.addon:尝试了,但是node-gyp安装总是失败,让人抓狂。
2.使用node-ffi模块。使用方法很直白,但其中比较让人抓狂的是node-ffi模块已久未更新,使用最新版的node版本(12)无法跑起来,且无法直接安装。
解决方法:
1)使用n将node版本改成10.21.0(亲测可用)
2)nodeffi的安装:(见下面的链接)
ffi一些常见的错误
3)调用exe文件,这个没试过。
3.ref相关模块的安装
直接:
sudo cnpm install ref-array
sudo cnpm install ref
sudo cnpm install ref-struct
测试程序.
1.生成.so文件
参考博客:Linux动态库生成以及调用
这里有linux下生成并使用.so文件的方法。可根据此链接写出max.c,max.lib,max.h三个文件,同时记得修改一下树莓派的~./bashrc文件。
2.使用ffi模块调用.so文件即可(待做)
测温函数+node读取
根据上面的链接,凑出了下面的例子。
nodejs与c语言交互应用实例
根据此例子做的树莓派测温+nodejs读取函数
/*
* 名称:hum.c:
* Simple test program to test the wiringPi functions
* DHT11 test
*/
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#if defined(WIN32) || defined(_WIN32)
#define EXPORT __declspec(dllexport)
#else
#define EXPORT
#endif
#define MAXTIMINGS 85
#define DHTPIN 0
typedef struct
{
int temz;
int temx;
int humz;
int humx;
}data_info;
data_info* wenshidu;
EXPORT data_info* read_dht11_dat()
{
wenshidu = (data_info *)malloc(