这两个工具都在这里可用:https ://github.com/ninjablocks/433Utils/tree/master/RPi_utils
我真的想要一个简单的界面来管理我的 433mhz 设备。但我找不到一个好的。
所以我现在整天工作,试图为 RCSwitch 类制作 nodejs 的包装器。使用 2 个简单的方法 - 发送 [代码] - 接收 [回调 [代码]]
当我尝试创建 RCSwitch 类的新实例时出现此错误。
node: symbol lookup error:
/root/nodemodule/example/build/Release/kaku.node:
undefined symbol: _ZN8RCSwitchC1Ev
它与 node-gyp 完美编译,但是当我执行 node 时它失败了。
现在我使用 exec 来执行带有代码的 sendCommand 。(丑陋我知道)
我试图让 RFSniffer 像这样工作:
- ./RFSniffer > rfsniffer.log
- .然后tail -f rfsniffer.log
但 RFSniffer 不会给我任何数据。
所以我的问题是任何人都可以帮助我让 RFsniffer 使用 tail -f 甚至更好的人可以帮助我修复 nodejs 的 c++ 插件:)
这是包装器代码:
#include "RCSwitch.h"
#include <node.h>
#include <v8.h>
using namespace v8;
Handle<Value> CodeSend(const Arguments& args) {
HandleScope scope;
int PIN = 0;
RCSwitch mySwitch = RCSwitch();
mySwitch.enableTransmit(PIN);
mySwitch.send(args[0]->IntegerValue(), 24);
return scope.Close(True());
}
Handle<Value> CodeRecieve(const Arguments& args) {
HandleScope scope;
// Entry check
if (args.Length() != 2) {
ThrowException(Exception::TypeError(String::New("Wrong number of arguments")));
return scope.Close(Undefined());
}
Local<String> name= args[0]->ToString();
Local<String> msg = name;
Local<Function> cb = Local<Function>::Cast(args[1]);
const unsigned argc = 1;
Local<Value> argv[argc] = { Local<Value>::New(msg) };
cb->Call(Context::GetCurrent()->Global(), argc, argv);
return scope.Close(Undefined());
}
extern "C" {
static void init(Handle<Object> target) {
if( wiringPiSetup() == -1 ) {
ThrowException( Exception::TypeError( String::New( "rcswitch: GPIO initialization failed" ) ) );
return;
}
NODE_SET_METHOD(target, "Send", CodeSend);
NODE_SET_METHOD(target, "Recieve", CodeRecieve);
}
NODE_MODULE(kaku, init);
}
节点代码:
var addon = require('./build/Release/kaku');
console.log(addon.Send(1234));
addon.Recieve(1234, function (val) {
console.log(val);
});