忘年会でトリビアをしよう
きっかけは・・・
会社の泊りがけの忘年会で、余興というかゲームと言うか、イベントとしてトリビアの泉ごっこをしたいと思いました。
個人的なトリビアをお互いに出せば、面白いかなぁと思ってです。
最初は市販のへぇボタンを使おうかと考えたのですが、
買うのにお金がかかるし、集計が大変そうなのに気づきました。
次に、ノートパソコンをへぇボタンの代わりにして、
アドホックネットワークを組んで集計できないかと考えました。
ネットを調べると、へぇボタンのプログラムは結構あるようですが、
集計するプログラムは見つかりませんでした。
こうなったら作ってしまおう、と言う事で作ったのが今回のプログラムです。
残念ながら忘年会の企画は没になってしまいましたが、
作ったプログラムはもったいないので公開します。
多数のノートパソコンを使ったテストが出来なかったので、
まともに動くかどうか試していませんが、適当に使ってください。
最初に考えたイメージ
ダウンロード
使い方
(1) 準備
プログラムと「へぇ〜」という音のwavファイルを用意します。
wavファイルはこのソフトの作者が用意できなかったので、各自用意してください。
wavファイルはコピーを4つ用意し、he1.wavとhe2.wavとhe3.wavとhe4.wavという名前にします。
ない場合は音が鳴りません。
複数のネットワーク接続可能なパソコンが必要です。
1台が制御用で、残りは「へぇ」用です。
パソコンにファイルをコピーします。
|
必要なファイル |
備考 |
制御用パソコン |
HeControler.exe |
「へぇ」用パソコン |
HeTerminal.exe |
he1.wav he2.wav he3.wav he4.wav |
申し訳ありませんが本サイトで配布していません。 |
(2) ネットワーク構築
全パソコンをネットワーク接続します。
ノートパソコンで無線LANのアドホックを組む事を想定していますが、
イーサーネットでつないでもOKです。
IPv4のブロードキャストが通る必要があります。
(3) 「へぇ」用パソコンの動作開始
「へぇボタン」用パソコンで、HeTerminal.exeを起動します。
最初にでる設定画面は「実行」をクリックしてください。
画面いっぱいにウィンドウが開きます。
上の入力欄に「へぇボタン」をクリックする人の名前を記入します。
画面をクリックしたり、スペースキーを押すと、「へぇ〜」と音が鳴り数字が増えます。
数字が最大値になると数字の色が赤くなり、それ以上押せなくなります。
(4) 制御用パソコンの動作開始
制御用パソコンで、HeControler.exe を起動します。
最初にでる起動パラメータ設定画面は「実行」をクリックしてください。
画面いっぱいにウィンドウが開きます。
上の「最大値送信」又は「ゼロクリア送信」を押すと、
「へぇ」用パソコンから信号が届きだし、画面に表示されます。
「へぇ」用パソコンは1秒に1回、制御用パソコンに信号を送り、
受信信号に応じて制御用パソコンの画面表示は変更されます。
画面表示は最初は横3×縦2で、右下に合計値が表示されます。
「へぇ」用パソコンの数に応じて表示数は自動的に変更になります。
トリビアの泉ごっこで、新しいトリビアを始めるときは「ゼロクリア送信」をクリックします。
トラブルシューティング
うまく動かない場合、原因はいろいろ考えられます。
原因解明の手がかりとなるようにログを用意しました。
プログラム起動後に最初に表示される設定画面でログにチェックを入れ、
その先の画面でログボタンを押すと、プログラムの動作の記録が見れます。
-
最初にソケットのバインドが行われていなければメッセージの送受信はありません。
バインドが行われていない理由は、パソコンがネットワークに繋がっていないからかもしれません。
windowsのipconfigコマンドでネットワークに接続しているか確認してみてください。
-
メッセージの送受信が行われているかどうか確認してください。
制御用パソコンから「へぇ」用パソコンへは、
最大値送信ボタンかセロクリアボタンを押したときに信号が出ます。
一度「へぇ」用パソコンへ信号が届くと「へぇ」用パソコンから制御用パソコンへは、
1秒に1回信号が出ます。
両方のログを見て信号が届いているか確認してください。
信号が届いていなければネットワークの接続ができていないのかもしれません。
windowsのpingコマンドでパソコン間が接続しているか確認してみてください。
ポート番号が合っているか確認してみてください。
ファイアウォールの設定を確認してみてください。
4. 解説
(1) HeTerminal.exe の設定画面の解説
- 最大値は、「へぇ〜」を押せる最大回数です。
後で、制御用パソコンから変更が可能です。
数字が最大値になると数字の色が赤くなります。
- 受信UDPポート番号は、制御用パソコンからのUDPブロードキャスト信号を受信するポート番号です。
全「へぇ」用パソコンで、この受信ポート番号は一致していなければなりません。
- ログ記録のチェックを入れると、UDPポートの起動時点からのログを取る事ができます。
トラブルシューティング時に使用します。
(2) HeTerminal.exe の端末画面の解説
- へぇボタンを押すと「へぇ〜」と音が鳴り数字が増えます。
但し、数字が最大値になると数字の色が赤くなり、それ以上押せません。
へぇボタンにフォーカスがある(四角の点々が表示された状態)時であれば、
スペースバーやEnterキーでもボタンを押すのと同じ効果があります。
数字をクリックしてもボタンを押すのと同じ効果があります。
- 入力欄は、任意の文字列を入力できます。
通常、「へぇボタン」をクリックする人の名前を記入します。
この名前は制御用パソコンで表示されます。
- ゼロボタンを押すと数字がゼロにリセットされます。
制御用パソコンからゼロに戻すが可能なので、押す必要はあまりないと思います。
- 終了ボタンを押すとプログラムは終了します。
画面の右上のクローズボタンでも同様です。
- ログボタンを押すとログが表示されます。
トラブルシューティング時に使用します。
(3) HeControler.exe の設定画面の解説
- 送信ポート番号は、「へぇ」用パソコンの受信ポート番号です。
「へぇ」用パソコンの設定値と一致していなければなりません。
制御用パソコンはブロードキャストで「へぇ」用パソコンのこのポートへ信号を送ります。
- 受信ポート番号は、制御用パソコン側のUDPポート番号です。
「へぇ」用パソコンは制御用パソコンからの信号を受信して制御用パソコン側のUDPポート番号を覚えるので、
「へぇ」用パソコンに設定する必要はありません。
- ログ記録のチェックを入れると、UDPポートの起動時点からのログを取る事ができます。
トラブルシューティング時に使用します。
(4) HeControler.exe の端末画面の解説
- 表リセットは、画面に描かれている「へぇ」用パソコンの一覧を一旦消します。
消した後も「へぇ」用パソコンから信号が届くので表はすぐに再生成されます。
なお、表の順序は信号を受信した順序で、変更できません。
- 入力欄は、「へぇ」を押せる最大値を設定します。
設定するだけでは「へぇ」用パソコンの設定は変更になりません。
変更するには最大値送信ボタンを押します。
- 最大値送信ボタンを押すと、入力欄で設定した最大値を「へぇ」用パソコンにブロードキャストで送信します。
メッセージを受信した「へぇ」用パソコンは最大値を変えると共に、制御用パソコンのアドレスとポート番号を記憶し、
1秒毎に制御用パソコンにメッセージ(「へぇ」を押した回数と入力欄の文字列が含まれている)を送り始めます。
- セロクリアボタンを押すと、リセットメッセージを「へぇ」用パソコンにブロードキャストで送信します。
メッセージを受信した「へぇ」用パソコンは最大値を変えると共に、制御用パソコンのアドレスとポート番号を記憶し、
1秒毎に制御用パソコンにメッセージを送り始めます。
- ログボタンを押すとログが表示されます。トラブルシューティング時に使用します。
(5) wavファイルが4つもある理由
4つのwavファイルはボタンを押したときに順番に使っています。
これにより連続してボタンを押すと「へぇ〜」という音が重なって聞こえます。
C++Builder6のMediaPlayerを用いて音を出しているのですが、MediaPlayerの制約で、
同じwavファイルを複数のMediaPlayerのインスタンスで使えないため、ファイルを4つ用意しました。
(6) UDP信号の中身
ログで表示されている通りの、短い文字列です。
TCPでなくUDPを使った理由は、管理パソコンからへぇパソコンに信号を送る際に、
ブロードキャストが使いたかったのと、複数のTCPコネクションの管理が面倒だったからです。
記述内容について一切保障しません。リンクは自由に行ってかまいません。
Since 2005/11/6, Presented by Ishida So