• 締切済み

PICとパソコンの通信について質問です。

現在、「PICで楽しむネットワーク接続機器の自作」という本でPICの勉強をしております。 PICおよびC言語に関しては超初心者です。 初心者なので本の通りに作成した実験基盤と本に付属していたVBのソフトを使用し、パソコンで実験基盤は本の通り正常に動作しております。 (具体的にいえば第6章の6と7のUDPおよびTCPでの操作の部分です。) さて、質問の内容ですがUDPでもTCPでも同じ結果ですが、1対1(マイコン1、パソコン1台)では問題無いのですが、1対2(マイコン1、パソコン2台)になるとどちらのソフトもフリーズしてしまいます。 ネットワークに関する知識もないので、ポートやらその他の事情(マイコン側の制限?・VBソフト側の制限?)でこうなるのかもしれませんが、1つの基盤を2台以上で操作できるようにするにはどのようにすればよいかわかりません。 どのようにすれば2台以上のパソコンで同時に操作できるようになるのでしょうか? UDPの場合、PIC側はローカルポート10002、リモートポート10001で通信しているようです。(TCPは50002と50001) そもそも2台のパソコンからPIC側の10002のポートへは複数の通信はできないのでしょうか? 質問の内容自体詳細にどのようなことを説明すれば良いかも理解しておりませんが、この内容で理解できる方は問題ありませんが、できれば本をお読みになった方にご回答いただければ幸いです。 よろしくお願いいたします。

みんなの回答

  • jtake00
  • ベストアンサー率56% (860/1518)
回答No.3

>「TCPコネクションはポート番号を変えれば、同じホストに対して複数の >コネクションを同時に確立できるので効率良いデータ伝送を行うことが >可能になります。」 これはTCP/IP通信の一般的な解説であり その実験基盤で使用しているソフトの説明ではありません。 で別の方が書いている通り >そもそも、PIC側が、複数のPCからのアクセスを処理できる仕様になって >いますか? ということです。 この場合のPIC側はデバイスではなくその上で走っているソフトの作りのことです。 >「#define LOCAL_PORT 10002 | 10003」のような記述 10002 | 10003 と記述すると論理ORですので10003になります。 まぁソフトの作りが複数の同時接続に対応して無いと思うので 大幅にソフトを作り変えない限り複数の同時接続は無理でしょう。 >そもそも2台のパソコンからPIC側の10002のポートへは複数の通信は >できないのでしょうか? 基本的に同時に通信出来るのは1つのポートで1通信です。 まずTCP/IP通信に関して勉強される事をお勧めします。

mugaku_ou
質問者

お礼

ありがとうございます。 お勧めの通り、TCP/IPについて勉強します。 このPICはHTTPサーバー機能もあるようですので、複数台使用する場合はブラウザーを使えば可能なようです。 また、ソフト起動中のパソコン自体を遠隔操作する方法もあるので何とか希望通りにはできそうです。

回答No.2

どのようなPICを使用されているのか分かりませんが、 そもそも、PIC側が、複数のPCからのアクセスを処理できる仕様になっていますか? ※そのような初心者向けの本にあるPICは、対複数の処理は出来ない簡易的な物だと思いますが・・・。

mugaku_ou
質問者

補足

ご回答ありがとうございます。 PICはマイクロチップ社の「PIC18F67J60」です。 また、質問の後に本を読み返しましたが、その本の中に下記の記述があります。 「TCPコネクションはポート番号を変えれば、同じホストに対して複数のコネクションを同時に確立できるので効率良いデータ伝送を行うことが可能になります。」 この内容から複数のPCからアクセスできるのではないかと思われますが、PICのソースの中に #define REMOTE_PORT 10001 #define LOCAL_PORT 10002 以上の記述があり、使用ポートはこの指定により決まっていると思われますが、この部分を 例えば「#define LOCAL_PORT 10002 | 10003」のような記述はありでしょうか? 一応、ソースを上記のように書き換えてコンパイルしましたがエラーにはならず、PICへの書き込みも問題ありませんでしたが、PCから接続を試みるとポート10002ではアクセスできず、ポート10003ではアクセスできます。 恐らく「#define LOCAL_PORT 10003」と同じ意味になっているようですが、相変わらず複数ではアクセスはできません。 根本的な考え方がわかっていないのでこれくらいの小細工しか思い浮かびません。 何か名案はないでしょうか? よろしくお願いいたします。

回答No.1

マイコン側で2つのスレッドを実行させなければなりませんがそのプログラムは複雑なのでPIC搭載のメモリではプログラミング出来ないでしょう。 そもそもPICのマイコンは単独で動作するように作られているもので、PCをつなぐのはプログラムするためであるのが普通です、動作を確認するときはエミュレーターボードでPCがエミュレートして使いますので、PCを2台つなく、意味合いもなく、何故つながなくてならないのかも疑問です。

関連するQ&A