• 締切済み

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

  • プログラミング:PICとVB.netとの通信

     PICとVisual basicで通信を行いたいです。  全体的な仕組みとしてはPICでモーターなどを動かし、VBで現在どのようになっているのかパソコンの画面に映す…といった感じです。  なので「PIC側のボタンを押せばVBの画面も一緒に変化する」、もしくは「VBでボタンをクリックするとPICのモーターも一緒に動く」といった信号を送る方法が知りたいです。  プログラミングの勉強中なので完璧なプログラムを教えるのではなく、「○○って言葉で検索して」といったようなヒントを与える感じで答えていただけると幸いです。  それと先日ZigBeeを使えるようになったので、それも使えたらなと考えています。

  • PR-S300SEというルータでパソコンを2台接続しています

    一台のパソコンでポート開放をしているのですがTCPとUDPは別番号にしております。ファイル共有ソフトのUtataneを使用しているためポートを開放しています。 初心者なのであまり分からないのですがポート開放はTCPだけでよかったのでしょうか?TCPとUDPの意味がいまいちわからなくてとりあえず両方開放しております。ただダウンロードはかなり速い回線速度が出ているのですが(9000Kb位)、アップロードはめちゃくちゃ遅いです。(500kb位)これって普通なんでしょうかね?それともパケットフィルタ設定などを設定すればアップロードの回線速度が改善されたりするのでしょうか?初心者でわからないので誰か詳しいかたいてましたら教えてください。ちなみにプロバイダはOCNですのでアップロードの規制は一日30Gまでとなっております。

  • ハイパーターミナルでパソコン間通信の方法について教えてください。

    ハイパーターミナルでパソコン間通信の方法について教えてください。 ハイパーターミナルを使用して、パソコン間の通信を行おうとしているのですが、うまくいきません。 目的は通信テストに使用する予定です。 使用しているPCの仕様は、2台のパソコンどちらもXPのSP3です。 設定は、アドレス、ポート番号、TCP/IP(Winsock)を設定しています。 エラーメッセージとして、192.・・・ポート・・・に接続できません。と表示されます。 相手側のPCにはセキュリティーソフトは入っておらず、どちらのPCもファイアーウォールを無効にしています。 RS-232Cの時に使用したことがあったのですが、TCP/IPでの使用は初めてです。 なにかパソコン側含めて、設定が必要なのでしょうか。 どなたか分かる方、いらっしゃいましたら、ご教授ください。よろしくお願いします。

  • TCP及びUDP通信について

    TCP及びUDP通信について 現在WinSockAPIを用いた通信を行うプログラムを組んでいます。 しかしながらネットワークに関しては初心者で、わからない点がいくつか出てきたので質問させて頂きます。 -------------------------------------------------- 1.TCPで双方向通信を行う場合、サーバ側は指定したポートにbind→listenし、接続を待ち受けます。 クライアント側はサーバのIPを指定し、接続確立後にポートはOSが自動で割り振ると聞きました。 つまり、クライアント側がポートを開放せずに通信が出来るのは、OSなどが自動でポートを割り当て、割り当てたポートに到着したデータを該当アプリケーションに渡すからでしょうか? ポート関連は全てルータが管理しているものだと思っていたのですが、OSがポートを割り当てるという動作がよく理解できません。 -------------------------------------------------- 2.UDPで双方向通信を行う場合、端末A・端末Bともに指定したポートにbindする必要があると聞きました。 つまり、UDPで双方向通信を行う場合、端末A・端末Bの双方でポートを開放する必要があるということでしょうか? -------------------------------------------------- 是非ともご教授ください。

  • ポート開放されなくなってしまいました。

    so-netのADSLを使っているのですが、新しくパソコンをもう1台ネットにつなぐ為BUFFALOのBBR-4MGを買いました。 ポート開放をし直したいのですが、どうしてもうまくできません。 どうしたらよいのか教えていただけませんでしょうか。。。 よろしくお願いいたします。 1.ルータBUFFALO BBR-4MGの接続状態は未設定  (2台ともインターネットに繋がります)  正しい接続設定がどれだがわかりません。  PPPoEを選んで正しく入力してもうまく繋がりません。 2.IPアドレスを調べました。  IPAddress…192.168.11.3 SubnetMask…255.255.255.0 DefaultGateway…192.168.11.1 3.IPアドレスの固定をしました。 「次のIPアドレスを使う」にチェックを入れ  IPアドレス:192.168.11.3  サブネットマスク:255.255.255.0  デフォルトゲートウェイ:192.168.11.1 「次のDNSサーバーのアドレスを使う」にチェックを入れ  優先DNSサーバー:192.168.11.1 4.BUFFALO BBR-4MGのポート開放しました。 ・TCPを設定しました。  グループ名入力  WAN側IPアドレスを「ブロードバンドステーションの  WAN側IPアドレス」に設定  プロトコル(WAN側)の「TCP/UDP」にチェックをいれ 「任意のTCPポート」を選択しTCPポート番号を入力  LAN側IPアドレスを192.168.11.3 ・UDPを設定しました。  グループ名入力  WAN側IPアドレスをブロードバンドステーションの  WAN側IPアドレスに設定  プロトコル(WAN側)の「TCP/UDP」にチェックをいれ 「任意のUDPポート」を選択しUDPポート番号を入力  LAN側IPアドレスを192.168.11.3 そして登録。(ちゃんと登録できています) モデムはNECのAtermWD735GVです。 ポート開放の為にポートマッピング>NATエントリで TCPとUDPをIPアドレス:192.168.11.3 で登録しています。 他はいじっていません。   どうかよろしくお願いいたします。  

  • 特定のポートを開放したい

    東芝DynaBook T6/518CME Windows XP SP2 CATV回線 こんな環境ですが、 >MY-IPTV ANYWHERE では、サーバーソフトをインストールする側のPCでTCP 9401、TCP/UDP 9402 のポートを利用します。1つのインターネット接続に1台のPCが接続されている場合、ファイアウォールによるブロックが解除されていればお使いいただけますが、ポート・フォワーディングを設定している場合は、サーバーソフトウェアがインストールされているPCに対して、ルーター上の設定によりTCP 9401、TCP/UDP 9402ポートを開放する必要があります。 使いたいソフトのマニュアルで上記のような記述がありポートを開放したいのですが、現在ルーターは使用していません。ルーターを買ってきて取り付けなくてはいけないのでしょうか?それとも何か方法がありますでしょうか?教えてください。

  • TCP/IPにおける端末間の通信について(NAPT)

    TCP/IPにおける端末間の通信について(NAPT) お世話になります。 TCP/IPについて質問です。 NAPT機能の付いたルータを介し、インターネット越しに通信を行う場合を想定します。 1.端末A(送信側)から端末B(受信側)にTCPあるいはUDPを用いてデータを送信する場合、端末Bでは必ず待ち受けるポートにbind(listen)し、また端末Aでは指定されたポート宛てにデータを送信する必要があると聞きました。 ここまでは理解できますが、ここにNAPT機能の付いたルータが介入する場合、"例外なく"端末B側のルータでポートマッピングを行う必要があるのでしょうか? 2.上記の認識がもし正しい場合、2台の端末で通信を行う場合は少なくとも片方でポートマッピングが必要ということになります。 だとするならば、SkypeやMSNメッセンジャーなどのクライアント側でポートマッピングが必要のないアプリケーションは、必ずサーバを介した通信を行っているということでしょうか? Skypeなどの仕組みを説明しているサイトを見ると、接続の手順を踏んだのちに端末間で通信を行うとの記述があるのですが、いくら接続先のIPがわかっていても、アプリケーション間で接続を確立するには、片方でポートマッピングが必要になると思うのですが、これはどういうことなのでしょうか? 3.上記の認識が正しい場合、UDPで受信する為には必ずポートマッピングが必要ということになります。 だとするならば、クライアント側でポートマッピングが必要のないアプリケーションは、少なくとも受信にはUDPを用いていないということでしょうか? 以上の3点についてお答え頂けると幸いです。 回答お待ちしています。

  • 開放したはずの7000番ポートで通信ができない

    現在、windows XPのパソコンにインストール下WIZVSPというWIZNET社が提供している仮想COMポートソフトをインストールして、WIZNET社製のWIZ110SRという基板でTCP接続してその間を仮想COMポート通信を作成したいと思っています。 先週インストール作業などを終えて通信接続も問題ないことを確認しました。 しかし、本日このwindows XPのマシンを起動したところWIZ110SR -----> WIZVSPのTCP通信のコネクションが断線状態で仮想COM通信ができなくなってしまいました。 WIZVSP側はサーバポートTCP7000番で作成しました。 この7000版ポートが正常に動作しているのかどうかをnetstat -aで出力してみたところ次のように表示されました。 このnetstatをみても7000番というのがないように思います。これは7000番というTCPポートが起動していないと判断してもよいのでしょうか? netstatの使い方になれておらず、大変申し訳ありませんがご教示頂きますよう、よろしくお願い致します。 C:\Documents and Settings\Administrator>netstat -a Active Connections Proto Local Address Foreign Address State TCP HP-sales:http HP-sales:0 LISTENING TCP HP-sales:epmap HP-sales:0 LISTENING TCP HP-sales:https HP-sales:0 LISTENING TCP HP-sales:microsoft-ds HP-sales:0 LISTENING TCP HP-sales:2968 HP-sales:0 LISTENING TCP HP-sales:3050 HP-sales:0 LISTENING TCP HP-sales:7818 HP-sales:0 LISTENING TCP HP-sales:1039 HP-sales:0 LISTENING TCP HP-sales:1047 localhost:5939 ESTABLISHED TCP HP-sales:1048 localhost:5939 ESTABLISHED TCP HP-sales:1180 HP-sales:0 LISTENING TCP HP-sales:5152 HP-sales:0 LISTENING TCP HP-sales:5939 HP-sales:0 LISTENING TCP HP-sales:5939 localhost:1047 ESTABLISHED TCP HP-sales:5939 localhost:1048 ESTABLISHED TCP HP-sales:netbios-ssn HP-sales:0 LISTENING TCP HP-sales:1027 192.168.100.6:9100 ESTABLISHED TCP HP-sales:1033 server23408.teamviewer.com:5938 ESTABLISHED TCP HP-sales:1041 server24103.teamviewer.com:5938 ESTABLISHED TCP HP-sales:1060 111.221.77.140:40016 ESTABLISHED TCP HP-sales:1061 baymsg1020318.gateway.edge.messenger.live.com:ht tps ESTABLISHED TCP HP-sales:1062 91.190.219.45:12350 ESTABLISHED TCP HP-sales:1099 137.116.67.114:https ESTABLISHED TCP HP-sales:1130 a23-34-33-93.deploy.static.akamaitechnologies.co m:https CLOSE_WAIT UDP HP-sales:https *:* UDP HP-sales:microsoft-ds *:* UDP HP-sales:isakmp *:* UDP HP-sales:1025 *:* UDP HP-sales:1031 *:* UDP HP-sales:1046 *:* UDP HP-sales:2968 *:* UDP HP-sales:4500 *:* UDP HP-sales:5001 *:* UDP HP-sales:7818 *:* UDP HP-sales:ntp *:* UDP HP-sales:1028 *:* UDP HP-sales:1029 *:* UDP HP-sales:1070 *:* UDP HP-sales:1900 *:* UDP HP-sales:ntp *:* UDP HP-sales:netbios-ns *:* UDP HP-sales:netbios-dgm *:* UDP HP-sales:1900 *:* UDP HP-sales:5353 *:* C:\Documents and Settings\Administrator>

  • DDNSのポートマッピングの設定

    初学者の無知な質問ですが宜しくお願いします。 自宅サーバーを立てようと『FedraCore6 Linux完全活用編』と言う本を買って、読みながらサーバーを作っています ルータの設定で詰まりました。本では「ポートマッピングのエントリを作成する」として(ルータはAterm WR7850Sです) 【NATエントリ編集】 エントリ番号 〔1〕 変換対象プログラム〔TCP〕←となっている事を確認 変換対象ポート 〔www〕←と入力 宛先アドレス 〔192.168,1.254〕←と入力 となっています。 しかし、私のルータ(BBR-4MG)の設定画面では アドレス変換設定 -アドレス変換テーブルの追加 グループ        〔新規追加〕  新規:[    ] WAN側IPアドレス     ↓ブロードステーションのWAN側IPアドレス↓ |手動設定|                手動設定 [     ] プロトコル(WAN側) TCP/UDP ポート ↓任意のTCPポート↓                    |任意のUDPポート|                    |HTTP(TCPポート:80)|                    |FTP(TCPポート:20-21)|                     任意のポート:                    [     ] LAN側IPアドレス       [     ]  プロトコル(LAN側)TCP/UDPポート変換  任意のポート:           ポート変換      [     ] となっていて上のような形を下の入力画面にどう入れたらいいのか分かりません。 厚かましいお願いですがよろしくお願いします。

  • マイコンについての質問です。(H8SX/1655)

    マイコンについての質問です。 図に示すようなシステムを考えています。 物体を発射させ、物体がレーザーを横切った時を記録して、時間差を計測するというシステムです。 また、クロックはマイコンからのものを考えています。 レーザーからのレーザー光をフォトダイオード、オペアンプを経由してマイコンにデータ送信しようと考えています。 そこで最初に物体の自由落下でのの時間差を測定しようと思い http://toragi.cqpub.co.jp/tabid/284/Default.aspxのマイコンを拡張基盤なしで購入したのですが I/Oポートがどこかわかりません。 拡張基盤を購入しないとだめなのでしょうか? また、パソコン上にどのように結果を表示させればいいのかも本を読んでも良くわかりませんでした。それについても解説などあればお願いします。 宜しかったら上記の実験条件を満たし素人にもお勧めのマイコンボードなどがあれば紹介お願いします。 回答・解説・指摘お願いします。