2016-11-14 87 views
0

問題:我需要從一個Beaglebone穿過以太網到另一個Beaglebone,這將根據第一Beaglebone提供的信息啓動光源。不過,我的背景大多隻是硬件,所以我不知道這是否可行。我想有一種方法可以直接向/從IP地址傳輸信息,但這主要是猜測 - 不知道該怎麼做。我也無法在Google上找到任何有關此方面的信息。通過以太網連接2個Beaglebone黑色設備

我的使命是有效地推動一個房間的按鈕,並點亮另一個房間的LED。我可以使用的工具有兩個BBB,一個本地網絡,幾個Arduino Unos和一些PIC。 BBB似乎最適合這份工作。以任何方式在它們之間運行直接連線是不可行的。如果有更好的方式去執行這個任務,我們將會感激你的意見(也許作爲一個評論,然後我會用這個想法開始一個新的,適當的職位)?

回答

1

我建議你使用Node.js和bonescript,它是專門爲BBB創建的庫。在我看來,這是使兩個BBB通過TCP/IP彼此對話的最快速和最簡單的方式。默認情況下,BBB已經安裝了node.js和bonescript。作爲最簡單的IDE,您可以使用可在您的BBB上的端口3000上訪問的Cloud9。

  1. 爲您設置BBB的靜態IP地址。要這樣做,follow Derek Molloy instructions
  2. 看看你如何管理buttonsLEDs與bonescript。

  3. 爲服務器(將接收命令並打開LED/etc)創建一個JavaScript文件,例如將其命名爲「server.js」,然後使用命令「node server」從控制檯運行它。 JS」,這裏是簡單的例子:

// I am server.js 
var net = require('net'); 

var server = net.createServer(function(c) { 
    console.log('client connected'); 

    c.on('data',function(data) { 
     console.log("Received data is: " + data); 
     var reponse = "Hello form BBB Server!"; 
     // Do something more 
     c.write(reponse); 
    }); 

    c.on('end', function() { 
     console.log('client disconnected'); 
    }); 
}); 


server.listen(8124, function() { 
    console.log('Server is launched.'); 
}); 
  • 創建用於所述客戶端的JavaScript文件(將發送命令按鈕被按下時),例如「client.js」,並使用命令從控制檯運行它「節點client.js」,這裏是一個簡單的客戶端的例子
  • // I am client.js 
    var net = require('net'); 
    
    var server_ip = '192.168.7.2';  // here enter your BBB-server IP address 
    var client = net.connect(8124, server_ip, function() { 
        console.log('connected to server!'); 
        client.write('Hello from BBB client'); 
    }); 
    
    client.on('data', function(data) { 
        console.log(data.toString()); 
        client.end(); 
    }); 
    
    client.on('end', function() { 
        console.log('disconnected from server'); 
    }); 
    

    結合這些步驟,你會得到你想要的東西。

    +0

    完美答案!它的清晰度和樂於助人讓我印象深刻。一旦我完成這個工作,我會發布更新並(希望)將您的答案標記爲「已接受」。 –

    +0

    祝你好運!順便說一下,一個簡單的服務器/客戶端示例甚至可以在單個BBB上測試,您必須打開兩個控制檯並同時運行這兩個文件,您還應該(在這種情況下)完全省略IP地址(僅傳遞端口),因爲它默認到'localhost'。 – Gattuso