2013-12-12 4 views
9

私はUSBを使用してノートパソコンにArduinoを接続しました。処理を使用してシリアルデータを読み取ることができます。JavaScriptからシリアルポートデータを読み取る方法

リアルタイムでこのデータをローカルWebブラウザに取り込む方法はありますか?たとえば、シリアルポートからの値を表示するテキストフィールドですか?インターネットに接続する必要はありません。

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ブラウザからローカルマシンにアクセスする方法はありません。セキュリティ上の理由から、ブラウザはマシンリソースへのアクセスが非常に限られています。

これを実行するには、選択したブラウザの拡張機能を作成します。拡張機能にはさまざまな制限があります。

オプション2は、必要な機能を提供するためにローカルサーバーを使用することです。個人的にはnode.jsを使用することをお勧めします(軽量で、実装が簡単で簡単です)。 https://github.com/rwaldron/johnny-five(@kmasの示唆)またはhttps://github.com/voodootikigod/node-serialportを使用してシリアルデータを読み書きすることができます。また、http://socket.io/を使用して簡単なサービスを作成し、ブラウザに接続するよりもシリアルデータを読み書きできます。 Socket.ioは、現代のブラウザでWebSocketを使用し、リアルタイム接続のために例外的に機能します。

+0

ありがとう!私はすでにブラウザの拡張機能(Seriality)を使ってみましたが、OS X上のSafariでしか動作しません。Node.jsを見逃すことはもうできません! – Kokodoko

+0

...要件は多少私を困惑させるが。 Xコード?コマンドラインツール? Python? (しかし、最新のものではない?)...そのような簡単な質問のために、理解するのはかなり大変なようだ。 – Kokodoko

+1

node.js以外のオプションがあります。私はsocket.ioモジュールがブラウザの大部分をあなたのために行うので、node.jsが最も便利だと思っています。 Python、PHP、Rubyなどを使用する場合は、Webサーバーをインストールして構成し、独自のWebSocket実装を作成する必要があります。フォールバックはありません。 –

1

私は同様の問題を解決することができました。私のデータ集録システム(DAQ)(あなたのarduinoのような)は、HTTP、TCP、FTP、およびシリアルのデータを中継します。私はサーバー上でそれをキャプチャし、リアルタイムで自分のWebページに送信しなければなりませんでした。

私が書いたハックは、サーバでnodejsを使用し、nodejsの "net"モジュールを使用してTCPソケットを使用してDAQをサーバに接続し、socket.ioを使用してサーバをHTMLページに接続します。

コードとコンテキストは "How to get sensor data over TCP/IP in nodejs?"にあります。

私は遠距離でデータを送信したいのでTCPを使用します。ソケットプロトコルをシリアルに変更する必要があります。

serial-to-TCPリダイレクトの場合、Windowsの場合はsensorMonkey、* nix/Mac OSの場合はprocessing sketchを使用できます。

+0

私はそれを見ましたが、それは多くのステップを必要とし、オンラインの外部サービスに大きく依存しています。 Chrome拡張機能を使用すると、基本的にオフラインになり、シリアルポートにアクセスできます。 – Kokodoko

関連する問題