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