Websocketのソフトウェア(mugbot_server)のコード解説

Websocketのソースコード(mugbot_server)の解説です。
このソースコードはRubyで書かれており、拡張子は「rb」になっています。
HTML(mugbot_web)から送られてきた内容をArduino(mugbot_arduino)がわかるコマンドに変換して送信しています。HTMLとArduinoの仲介役をしています。

 

一行目で「Ruby」の場所を定義し、二行目でコーディングが「UTF-8」であることを定義してしています。二行目のことをマジックコメントといい、Ruby2.0では不必要になりましたが、Ruby1.9が現在も多く使われているため、マジックコメントを利用しています。

 

マグボットプロジェクトの内容とソースコードのバージョンが「1.0.0」であることを記しています。
「require」というのは「’ ’」で囲まれた名前のライブラリを探し出し、読み込んでくれます。
「require ‘em-websoket’」はEventMachineをベースにしたRuby上で動作するWebSocketサーバである「em-websoket」を読み込んでいます。
「require ‘serialport’」はシリアル通信を行うためのライブラリ「serialport」を読み込んでいます。

 

「port」で、シリアル通信をするポートを設定しています。
「/dev/ttyACM0」というのはRaspberry PiからみたArduinoのポート番号です。
「SerialPort.new」でシリアル通信を開始します。

 

「WebSocket.start」でホスト名(0.0.0.0)とポート番号(51234)を設定し、 「ws」でWebSocketを使えるようにします。

 

WebSocketで「msg」というデータを受信し、if文の中身を実行します。
「if msg[0,2]==”@x”」というのは「msg」の1番目から2文字分が「@x」だったら以下の内容を実行するということです。
「msg.slice!(0,2)」というのは1番目から2文字分を削除するということです。
「puts」というのは文字列に変換するということです。
(例 @x50という値が送られてきたら、@xを取り除き、50にして、文字列に変換した50にxをつけて50xとしてシリアル通信で書き込む(送信する)ということです。)
「sleep」というのはその時間の分だけ待つということです。

 

msgの1番目から2文字分が「@y」だったら、xと同じ内容をyでも行っています。

 

msgの1番目から2文字分が「@z」だったら、xと同じ内容をzでも行っています。

 

msgの1文字目が「@」だったら、msgの1文字目を飛ばして、2文字目から1文字をAruduinoに送信しています。

 

上記以外の場合は「t」というコマンドを送り、「jsay」という音声合成システムを使って「msg」の内容を発話させ、最後に「n」というコマンドを送ります。

Websocketのソースコード(mugbot_server)の解説を終了します。