2013-12-12 76 views
9

我使用USB將Arduino連接到我的筆記本電腦,並且可以使用Processing讀取串行數據。如何從JavaScript讀取串行端口數據

有什麼辦法可以將這些數據實時獲取到本地瀏覽器中嗎?例如,顯示串口值的文本字段?它不必連接到互聯網。

Processing版本的JavaScript不支持以下代碼,這將是理想的解決方案。

處理代碼爲:

myPort = new Serial(this, Serial.list()[0], 9600); 
// read a byte from the serial port 
int inByte = myPort.read(); 
// print it 
println(inByte); 
// now send this value somewhere...? 
// ehm... 
+1

你應該看看這個:https://github.com/rwaldron/johnny-five。也許它可以幫助你。 – kmas

回答

10

有沒有辦法直接從Web瀏覽器訪問本地計算機。出於安全原因,瀏覽器對機器資源的訪問非常有限。

要做到這一點,一個選擇將是爲您選擇的瀏覽器編寫擴展。儘管擴展也有各種限制。

選項二將使用本地服務器來提供您需要的功能。我個人建議使用node.js(它重量輕,實現快速且容易)。您可以使用https://github.com/rwaldron/johnny-five(作爲@kmas建議)或https://github.com/voodootikigod/node-serialport讀取/寫入串行數據,並且您可以使用http://socket.io/創建簡單的服務並通過瀏覽器連接到它。 Socket.io在現代瀏覽器中使用WebSockets,並且可以非常適合實時連接。

+0

謝謝!我已經嘗試過使用瀏覽器擴展(Seriality),但它只適用於OS X上的Safari。看來我再也不能避免查看Node.js! – Kokodoko

+0

...雖然要求有點讓我感到困惑。的XCode?命令行工具?蟒蛇? (但不是最新的?)...對於這樣一個簡單的問題來說,弄清楚這似乎相當多。 – Kokodoko

+1

除了node.js還有其他選項。我只是認爲node.js會非常有用,因爲socket.io模塊在瀏覽器中完成了大部分繁重的工作。如果你決定使用Python,PHP,Ruby等,你將不得不安裝和配置一個web服務器並編寫你自己的WebSocket實現,你將不會有後備。 –

1

我有一個類似的問題需要解決。我的數據採集系統(DAQ)(比如你的arduino)以HTTP,TCP,FTP和串口方式傳輸數據。我必須在服務器上捕獲它,然後將其實時發送到我的網頁。

我寫的黑客在服務器上使用了nodejs,並使用nodejs的「net」模塊使用TCP套接字將DAQ連接到服務器,並使用socket.io將服務器連接到HTML頁面。

代碼和上下文可以在「How to get sensor data over TCP/IP in nodejs?」中找到。

我使用TCP,因爲我想長距離傳輸數據。您需要將套接字協議修改爲串行。

對於串行到TCP重定向,您可以使用來自sensorMonkey for Windows或其* nix/Mac OS的processing sketch的bloom。

+0

我看了一下,但它涉及很多步驟,並嚴重依賴外部服務在線。使用Chrome擴展程序,我基本上可以脫機並仍然可以訪問串行端口。 – Kokodoko