7

我正在使用twitter streaming api&johnny-five与其他一些模块httpexpress&socket.ioarduino uno

我的脚本在笔记本电脑上运行良好。但我的作品将在平板电脑上进行。我有两台平板电脑,两者的反应不同。在hp omni平板电脑上我收到以下错误

在此处输入图像描述

我也arduino-uno连接了端口COM3,但它的显示设备已连接COM1

据我所知,这个错误是standard firmata在arduino中没有上传时引起的。我已经上传了这个程序,它在笔记本电脑上运行良好

Acer平板电脑上,我没有收到任何错误,程序启动得很好,没有任何问题,但我没有收到推文twitter streaming api

我已经检查了很多次,每次我运行它时它都在笔记本电脑上运行得很好,但是给出了两个不同的问题tablets

这是我正在使用的代码

var Twitter = require('twitter');
var five = require("johnny-five");
var express = require('express')
  , app = express()
  , http = require('http')
  , server = http.createServer(app)  
  , io = require('socket.io').listen(server);

server.listen(8080);

// routing
app.use(express.static(__dirname + '/http'));
app.use(function (req, res, next) {
        res.setHeader('Access-Control-Allow-Origin', "http://"+req.headers.host+':80');

        res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
        res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
        next();
    }
);

var client = new Twitter({
  consumer_key: 'abc',
  consumer_secret: 'abc',
  access_token_key: 'abc',
  access_token_secret: 'abc'
});

var board = new five.Board();

board.on("ready", function() {
    this.pinMode(5, five.Pin.OUTPUT);
    this.pinMode(10, five.Pin.INPUT);
      //Ask to visit url
      console.log("Visit http://localhost:8080");
    var randomHashtag = Math.floor((Math.random() * 10000) +1);
    var count = 0;//Initialize counter
    io.sockets.on('connection', function (socket) {     
        console.log('Ready to recieve tweets');//Prints Message when Socket.io is ready to recieve tweets
        io.emit('stream',{number:randomHashtag});//Send random no when socket initzilize
        client.stream('statuses/filter', {track: '#tweetMe'}, function(stream) {
            stream.on('data', function(tweet) {
                if(tweet.text.search(randomHashtag) > 0){
                    count++;//Increment pending tweets              
                    randomHashtag  = Math.floor((Math.random() * 10000) +1);                
                    io.emit('stream',{number:randomHashtag});                   
                    board.digitalWrite(5,1);
                    console.log(tweet.text);                    
                }
                else{
                    console.log("Tweet Without random No");
                }
            });

        stream.on('error', function(error) {
            throw error;
        });
        });
    });
});
4

2 回答 2

1

正如您所说,它可以与其他设备完美配合,并且还设法解决了其他平板电脑的问题,我能想到的可能原因是您正在使用的nodejs其他设备的安装损坏modules

尝试清理重新安装 Nodejs和所有modules. 可能是您的模块中存在一些问题,而不是您的代码中。

您遇到以下问题的另一个原因是nodejs维护两个不同的版本,它们都以不同的方式处理模块的安装。

使用与笔记本电脑相同的版本。

于 2015-12-07T14:52:23.167 回答
0

HP OMNI我通过手动告诉johnny-five我的arduino连接到哪个端口解决了平板电脑的问题,如官方文档中所述

new five.Board({ port: "COM3" });//FOR WINDOWS ONLY

我还必须重新安装所有模块才能使其工作

(虽然仍然不能与 Acer 平板电脑一起使用)

于 2015-11-29T09:34:08.953 回答