# ブリッジモードによるPC間通信プログラミング
プロッチを2台をブリッジ装置として利用することで、パソコン間で、文字情報による通信を行うことができます。
## 1)準備
下記の手順で、パソコンとプロッチ同士を接続する。
- プロッチ2台をジャンパワイヤーなどで接続する。ジャンパーワイヤーの配線は下記の通り。{{:pasted:protch_chat.png}}
- ジャンパーワイヤーで接続したプロッチをUSBケーブルでパソコンと接続する。{{:pasted:protch_chat_pc.jpg}}
## 2)一方通行の文字の送受信
ここでは、メッセージを送信するコンピュータ(送信側PC)と、送信されたメッセージを受信するコンピュータ(受信側PC)に分け、
それぞれのプログラムを作成する。
### メッセージを送信する(送信側PC)
メッセージの送信には、「通信端子」オブジェクトに対して**送信**を使う。
下記は、「こんにちは」を送信するプログラムである。
システム! "protchrm" 使う。
最初に実行=「
通信端子!"こんにちは"送信。
」。
プロッチ!転送。
### メッセージを受信する(受信側PC)
メッセージの受信には、シリアルオブジェクトの**受信**を使う。
取得した文字をラベルに書くことでドリトルの実行画面上に、受信したデータを表示することができる。
システム! "protchrm" 使う。
最初に実行=「
受信ラベル=ラベル!作る。
」。
繰り返し実行=「
受信ラベル!(通信端子!受信)書く。
」。
プロッチ!転送。
**シリアルオブジェクトの命令一覧**
^命令^機能^
|送信|相手に文字(メッセージ)を出力します|
|受信|相手から最後に受信した文字(メッセージ)を取得します|
### (応用例1)チャットプログラム
送信と受信のプログラムを組み合わせることで、チャットアプリのような双方向のやりとりをするプログラムを作ることができる。\\
ここでは、下記のようなチャットプログラム(protch%%_%%chat.dtl)を作成する。
{{:pasted:protch_serial2.png}}
①のフィールドに相手に送りたい内容を記述し、「送信」ボタンを押すことでその内容を送信する。\\
②には相手から受信したメッセージを表示する。
上記のチャットアプリを実現するプログラムが下記となる。
システム!"protchrm"使う。
最初に実行=「
送信フィールド=フィールド! 作る。
送信ボタン=ボタン!”送信”作る。
受信エリア=リスト! 作る。
送信ボタン:動作=「通信端子!(送信フィールド!読む)送信」。
」。
繰り返し実行=「
受信値=通信端子! 受信。
「受信値!=””」! なら「
受信エリア! (受信値)書く。
」実行。
」。
プロッチ!転送。
### (応用例)自動応答装置?
次のプログラム(protch%%_%%serial1.dtl)では、フィールドオブジェクトに書いた文字をプロッチの左スイッッチの押下により送信している。また、「危険」の文字が送られてきた場合に、LEDが点灯し、ピーポーと危険を通知する。
システム!"protchrm"使う。
最初に実行=「
送信フィールド=フィールド! 作る。
送信ボタン=ボタン!”送信”作る。
受信エリア=リスト! 作る。
送信ボタン:動作=「通信端子!(送信フィールド!読む)送信」。
」。
繰り返し実行=「
受信値=通信端子! 受信。
「受信値!=””」! なら「
受信エリア! (受信値)書く。
」実行。
「受信値=="危険"」!なら「
左ライト!点灯。
右ライト!点灯。
ブザー!”シ~ソ~シ~ソ~”演奏。
左ライト!消灯。
右ライト!消灯。
」実行。
」。
プロッチ!転送。
### (応用例)入退室状況管理
次のプログラム(protch%%_%%serial2.dtl)左スイッチを押すと、「時間」と「来た」を送信し、右スイッチを押すと「時間」と「出た」を送信する。
//送信側のプログラム
システム!"protchrm"使う。
最初に実行=「
動作表示=ラベル!作る。
」。
繰り返し実行=「
「(左スイッチ!接触?)==はい」!なら「
動作表示!”左スイッチを押しました。”書く。
通信端子! ((システム!時刻?)+"に来ました!")送信
」実行。
「(右スイッチ!接触?)==はい」!なら「
動作表示!”右スイッチを押しました。”書く。
通信端子! ((システム!時刻?)+"に出ました!")送信
」実行。
」。
プロッチ!転送。
//受信プログラム
システム!"protchrm"使う。
最初に実行=「
受信エリア=リスト! 作る。
」。
繰り返し実行=「
受信値=通信端子! 受信。
「受信値!=””」! なら「
受信エリア! (受信値)書く。
」実行。
」。
プロッチ!転送。