データ通信に慣れてきたところで、チャレンジ課題に挑戦してみます。
コンピュータのデータ通信
前回までの説明で、1つの信号線でデータ通信を行う方法から検討を始めて、SPI通信を行うまで順を追って理解してきました。今まで説明ばかりでしたので、ここでデータ通信方法を考えていただこうと思います。
これから検討していただくデータ通信システムは、今までとは全く異なるシステムです。このシステムを使って、データ通信を行うための通信方法を考えてみてください。
なお、通信方法は何通りかあると思います。どれが正解、というわけではありませんので、最低でも2通り、できれば3通りぐらい発明(?)してみてください。
データ通信システム
チャレンジ課題で通信手順を検討していただくデータ通信システムは以下のようなものです。
このシステムは、送信者側には0〜9のラベルがついた10個のスイッチがあります。また受信者側には0〜9のランプがあります。送信者がいずれかのスイッチを押すと、受信者側ではその数字に対応したランプが点灯します。
送信者がスイッチを押すことにより、送信者から受信者に0〜9の数字を伝えることができるシステムです。
例えば「1234」と送信したい場合、送信者はスイッチを順番に「1」→「2」→「3」→「4」と押せば受信者に「1234」を伝えることができます。
また以前問題になった数字が連続する場合、例えば「112233」を送信したい場合は、送信者は「1」のスイッチを押して離して、「1」のスイッチを押して離して、というように操作すれば、数字が連続した場合でも問題なく送信することができます。
それでは、これから通信方法を検討していきましょう!
データの終わりを伝える
送信者は何桁かの数値データを送ることにします。例えば「1234567」だったり「09876543210987」だったり、送りたいデータの桁数は毎回異なるものとします。
この場合、データ送信が終わったことを確実に伝えることができるような通信方法を検討してみてください。
例えば、データ送信の終わりを示すために、特別な数字として「999」と9を3回送ったら送信終了、というルールを送信者と受信者で取り決めた場合、一見うまくいきそうですが問題があります。
送信するデータが「12345」の場合は、「12345」を送ったあと「999」とスイッチ押せば終わり、ということを伝えることができます。しかし、「123456789998765」というデータを送りたい場合、データの途中に「999」が入っていますので「999」を送った時点でそのデータは終わり、続くデータは別のデータとして認識されてしまいます。
他には、データの送信が終わったら10秒間何も送信しない、という通信方法があるかもしれませんが、これも問題があります。例えば桁数が多いデータを送る場合に、送信者が途中で手を休めた場合、その時間が10秒を超えるとデータ送信の終わりと認識されてしまいます。送信者はデータ送信の途中でトイレに行くこともできなくなってしまいます。
このようなことがないように、確実にデータの終わりがわかるように通信方法を検討してみてください。
なお、データ通信システムは0〜9のスイッチとランプのみです。終わりを伝えるスイッチとランプの増設はできません。また、0〜9のスイッチとランプ以外の通信手段もありません。
電話番号を伝える
送信できるデータを拡張してみます。
このシステムで電話番号リストを送信できるように通信方法を検討したいと思います。
電話番号リストは、例えば以下のようなものです。
03-1234-5678
06-9876-5432
045-678-1234
このような電話番号のリストを確実に伝えられるように、以下の条件を全て満たすことができる通信方法を検討してみてください。
- ハイフンも伝える
電話番号はハイフンをつけて表現することが多いので、ハイフン「-」も正確に伝えられるようにしましょう - 電話番号を区別する
1つの電話番号の送信が終わったことを伝えられるようにしましょう。上の例では最初の「03-1234-5678」を伝えたら、その電話番号の送信は終わりで、次の数字は別の電話番号であることを伝えられるようにしましょう - 電話番号リストの終わりを伝える
電話番号リストに含まれる電話番号の個数は決まっていませんので、電話番号リストの送信が終わったことを伝える必要があります。電話番号リストの終わりも伝えられるようにしましょう
なお、データ通信システムはそのまま使用することにします。ハイフンを伝えるスイッチとランプの増設はできません。
次回から、SPI通信を使った温湿度・気圧データ取得のプログラム作成に入ります。
更新履歴
日付 | 内容 |
---|---|
2018.4.15 | 新規投稿 |