Articles of pi

在树莓派上的node.js上运行node_mdns时发生未知错误

我一直在尝试创build一个node.js应用程序,在networking上执行一些ZeroConf发现,并运行在Raspberry Pi上。 虽然该应用程序在我的开发机器上工作正常,但在Raspberry Pi上运行时出现错误。 树莓pi运行节点0.10.5,node_mdns作为包进行zeroconf发现。 在node_mdns安装页面上提及的所需库已经安装并且是最新的。 该应用程序启动正确,但是当一个设备被发现时,我得到以下错误。 { [Error: dns service error: unknown] errorCode: -65537 } events.js:72 throw er; // Unhandled 'error' event ^ Error: dns service error: unknown at MDNSService.on_resolver_done (/home/pi/projects/test/node_modules/mdns/lib/resolver_sequence_tasks.js:19:30) at SocketWatcher.MDNSService.self.watcher.callback (/home/pi/projects/test/node_modules/mdns/lib/mdns_service.js:17:38) 这似乎不是一个networking问题,因为它只发生在树莓派,而不是networking上的其他设备。 如果有人有同样的问题,并设法解决这个问题,将不胜感激。

在这种情况下recursion是否好? (JavaScript的/的node.js)

我正尝试用树莓派制作一个电视,用javascript,一次又一次播放相同的播放列表。 播放文件不是问题,但我坚持在javascript的asynchronous部分这里的代码极其困扰我: function play (file) { exec('home/pi/play.sh', [file], function (error, stdout, stderr){ if (PIndice != Playlist.length-1){ PIndice=PIndice+1; }else{ PIndice=0; } play(Playlist[PIndice]); }); 当我确定其中有一个path名时,另一个函数用播放列表[0]调用它。 我的问题是:安全吗? 不会recursion最终会杀死CPU? 我虽然关于使用setTimeOut,但我没有find任何方式来获得video的持续时间。 我已经尝试过在循环中调用播放,但是我只是在同一时间播放整个播放列表。 我不要求一个全function的解决scheme,只是暗示我在哪里可以find一个方法来做到这一点是否有一种方法等待播放结束再次调用之前,即使JavaScript是asynchronous? 编辑:所有的文件在MPEG4,播放列表只是一个string数组,至less包含播放video文件的path名。 它应该没有互联网播放,所以没有浏览器,我不能使用HTML请求,让video的元数据得到它的持续时间。 编辑2:我忘记告诉play.sh只是启动播放器,如果没有其他实例,它只是一个以前的版本,我不知道execFile的callback

带树莓派的可编址LED灯条

我一直在研究这一点,并没有发现任何结论。 我想用我的树莓派,可能与node.js(npm gpio)或python使用可寻址的LED。 我不太了解电路,但是我有一种感觉,树莓派没有数字写入能力。 该条有4个input(5V,SDI,CKI,GND)我正在使用这个: http ://www.amazon.com/gp/product/B008F05N54/ref=oh_details_o01_s00_i00?ie=UTF8&psc =1 这是我的一个单一的LED工作,但不是为了带: var gpio = require("gpio"); var gpio22, gpio4, intervalTimer; // Flashing lights if LED connected to GPIO22 gpio22 = gpio.export(22, { ready: function() { inervalTimer = setInterval(function() { gpio22.set(); setTimeout(function() { gpio22.reset(); }, 500); }, 1000); } }); // Lets assume a different LED is hooked up […]

npm无法安装node-hid(faild安装最新版本的Nodejs)

我正在尝试在我的Raspberry Pi(Raspbian)上安装node-hid。 但node-hid需要高版本的Nodej才能工作(> = 0.8),我的版本只有0.6.19。 所以,我试着用nvm安装Nodejs v0.10.26 … Nvm安装成功了nodejs v0.10.26,但是npm仍然使用旧版本的Nodejs。 如何在整个系统中使用v0.10.26版本的Nodejs? 我怎样才能安装node-hid? 感谢您的帮助 这里是我试图安装node-hid时得到的代码: pi@raspberrypi ~ $ sudo npm install -g node-hid npm http GET https://registry.npmjs.org/node-hid npm ERR! Error: failed to fetch from registry: node-hid npm ERR! at /usr/share/npm/lib/utils/npm-registry-client/get.js:139:12 npm ERR! at cb (/usr/share/npm/lib/utils/npm-registry-client/request.js:31:9) npm ERR! at Request._callback (/usr/share/npm/lib/utils/npm-registry-client/request.js:136:18) npm ERR! at Request.callback (/usr/lib/nodejs/request/main.js:119:22) npm […]

无法使用Lighttpd访问Raspberry Pi上的socket.io.js

自从昨天以来,我对Node.JS和Socket.IO完全陌生。 我尝试使Node.JS和Socket.IO在我的Raspberry Pi上工作,但似乎没有。 我无法访问<myip>:1337/socket.io/socket.io.js 。 我遵循这个教程,所以我的Lighttpd.conf文件看起来像这样: $HTTP["host"] == "<myURLtomywebsite>" { proxy.server = (" " => (( "host" => "<myIP>", "port" => 1337) ) ) 我的server.js看起来像这样: var http = require('http'); httpServer = http.createServer(function(req, res) { res.end('Hello World!'); }); httpServer.listen(1337); var io = require('socket.io').listen(httpServer); var clients = 0; io.sockets.on('connection', function(socket) { ++clients; socket.on('disconnect', function(data) { –clients; io.sockets.emit('disusr', […]

在树莓派上的node.js exec使用gphoto2制作图片

拍完一张照片后,我的相机卡住了。 我只是试图使用exec命令,因为它似乎是最简单的方法。 我使用了canon eos 400d,覆盆子pi模型B和node.js版本0.10.28。 谢谢你的帮助! var Camera = function(){ } Camera.prototype = { sys: require('sys'), exec: require('child_process').exec } Camera.prototype.takePicture = function(imageCount, nextImagePosition, callback){ this.exec("gphoto2 –capture-image-and-download –filename '%Y%m%d%H%M%S.jpg' ", function(error, stdout, stderr){ console.log('stdout: ' + stdout); console.log('stderr: ' + stderr); if (error !== null) { console.log('exec error: ' + error); } }); };

Raspberry + socket.io在本地networking上工作,但不在外部工作

我有一个Raspberry Pi服务通过一个server.js文件的HTML页面。 主线(不是所有的代码)是: var app = require('http').createServer(handler); var io = require('socket.io').listen(app); … app.listen(8000); … fucntion handler(req,res) { fs.readFile(__dirname+'/../index.html' function(err,data) { … io.sockets.on('connection', function (socket) { setInterval(function(){ … socket.emit('tempUpd',date,temp); }, 2000); }); 在index.html上: <head> … <script src="/socket.io/socket.io.js"></script> … </head> <body> <div id="info"></div> — <script> var socket = io.connect('http://192.168.1.6:8000'); socket.on('tempUpd', function(date, temp){ document.getElementById("info").textContent = temp; }); … […]

如何在node.js服务器上使用AnnYang语音重组?

更新日志: ws@0.5.0 install /Users/matthew.harwood/workspace/akqa/insights/tts/node-pocketsphinx/node_modules/socket.io/node_modules/engine.io/node_modules/ws > (node-gyp rebuild 2> builderror.log) || (exit 0) CXX(target) Release/obj.target/bufferutil/src/bufferutil.o SOLINK_MODULE(target) Release/bufferutil.node SOLINK_MODULE(target) Release/bufferutil.node: Finished CXX(target) Release/obj.target/validation/src/validation.o SOLINK_MODULE(target) Release/validation.node SOLINK_MODULE(target) Release/validation.node: Finished > ws@0.4.31 install /Users/matthew.harwood/workspace/akqa/insights/tts/node-pocketsphinx/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws > (node-gyp rebuild 2> builderror.log) || (exit 0) CXX(target) Release/obj.target/bufferutil/src/bufferutil.o SOLINK_MODULE(target) Release/bufferutil.node SOLINK_MODULE(target) Release/bufferutil.node: Finished CXX(target) Release/obj.target/validation/src/validation.o SOLINK_MODULE(target) Release/validation.node SOLINK_MODULE(target) Release/validation.node: Finished > pocketsphinx@1.0.1 install […]

使用非ASCII字符从wchar_t创buildv8 :: String的安全方法是什么?

我正在为DAB开发板编写Node.js前端,后者最终将运行在Raspberry Pi上。 我是一个Java和Web开发人员,我正在努力与C ++和不同types的string之间转换。 DAB板带有一个C ++ SDK,有许多方便的function。 它允许我用GetTotalProgram()获得可用程序的数量。 对于每个程序,我可以调用GetProgramName来获取程序的名称: GetProgramName(char mode, long dabIndex, char namemode, wchar_t * programName) … mode意味着FM或DAB , namemode意味着长名或短名。 该程序的名称将在programName中返回。 为了将wchar_t *programName转换为v8::String ,我find了我正在使用的这个片段,并且理解了以下基本知识: wchar_t buff[300]; char cbuff[600]; GetProgramName(0, i, 1, buff); wcstombs( cbuff, buff, wcslen(buff) ); Local<String> str = String::NewFromUtf8(isolate, (const char *) cbuff, v8::String::kNormalString, wcslen(buff)); 我遍历可用的程序,并build立一个v8::Array : void GetPrograms(const FunctionCallbackInfo<Value>& args) […]

节点应用程序获取“错误:EACCES:权限被拒绝,mkdir'.tmp'

我在我的覆盆子pi上运行node-red,并试图find一个我自己编写的节点。 该节点在我的Windows PC上工作正常,但我还没有能够得到它在我的pi工作。 我的节点使用mailin来设置SMTP服务器,但我不认为这是该包的问题。 邮件试图创build一个临时文件夹,但它显然没有权限。 我如何给节点的权限,它需要能够创build此文件夹? 完整的错误: 5 Apr 20:06:22 – [info] Starting flows shell.js: internal error Error: EACCES: permission denied, mkdir '.tmp' at Error (native) at Object.fs.mkdirSync (fs.js:794:18) at mkdirSyncRecursive (/home/pi/.node-red/node_modules/node-red-contrib-mailin-smtp/node_modules/mailin/node_modules/shelljs/src/mkdir.js:11:8) at /home/pi/.node-red/node_modules/node-red-contrib-mailin-smtp/node_modules/mailin/node_modules/shelljs/src/mkdir.js:63:7 at Array.forEach (native) at Object._mkdir (/home/pi/.node-red/node_modules/node-red-contrib-mailin-smtp/node_modules/mailin/node_modules/shelljs/src/mkdir.js:48:8) at Object.mkdir (/home/pi/.node-red/node_modules/node-red-contrib-mailin-smtp/node_modules/mailin/node_modules/shelljs/src/common.js:186:23) at Mailin.start (/home/pi/.node-red/node_modules/node-red-contrib-mailin-smtp/node_modules/mailin/lib/mailin.js:73:15) at new MailinSMTP (/home/pi/.node-red/node_modules/node-red-contrib-mailin-smtp/mailinSMTP.js:15:10) at createNode (/usr/lib/node_modules/node-red/red/runtime/nodes/flows/Flow.js:276:18) at Flow.start […]