• ベストアンサー

シリアル通信

例えば、スイッチが幾つかあるとします(10個くらい)。 そのスイッチのオン、オフの状態をRS232C等のシリアル通信でパソコンに取り込むにはどうすればいいですか? スイッチの信号はデジタル信号で1か0の状態だという事くらいしか分かりません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

No.4 >何度もありがとうございます。 >「ひとつの機器に全部」です。 わかりました。 >なんらかのソフトを開発しなくてはならないと言う事は理解しています。 はい。 >RS232Cはデータは送信・受信がそれぞれ1線でやり取りしますよね? はい。 >それで送信するなら"10101011"という様に信号を出さないといけないと思うのですが、そういう事はどうすれば良いのですか? >スイッチの状態をマイコンで受け取ってそれを元にマイコンで送信するという具合ですか? 結論でいえばそうなります。 それぞれのスイッチを独立したビットに割り当てるのか、スイッチひとつを1Byteに割る当てるなどは考えないといけません。 あえて指摘はしませんでしたが、単純に「スイッチ」といっても、押している間だけON、離せばOFFというものもあれば、一度押すとON、再度押すとOFFというスイッチもあります。 また、流れる電圧もPCのキーボードなら1Vも流れませんが、一般家庭のSWなら100Vです。コレをどう処理する野かも考える必要があります。 (アナログ的な入力の処理はさらに大変ですが) 上記のようにデータの送受信の仕組みの検討と流すデータの検討を「設計」といいます。 単純にわけても ・SWからの入力を処理する電気知識 ・入力を送信するための電気回路やマイコンプログラムの知識 ・送信データの内容を決定する知識 ・受信したデータを処理するPCプログラムの知識 などが必要です。

abcdef220
質問者

お礼

本当にありがとうございます。大変助かりました! 大分分かった気がします。 またお願いします!

すると、全ての回答が全文表示されます。

その他の回答 (4)

回答No.4

No.2です。 >スイッチは一つの機器に複数あります。 >この場合はどうなのでしょうか? 「ひとつの機器に全部」ではなく、「いくつかSWがついた機器が複数」ですか? 後者であれば、「機器が複数」という時点で取りうる方法は一緒です。 ・個別にPCに繋ぐ。 ・途中に別のSW入力を取得するものを作ってそこからPCに繋ぐ。 上記の「先」の話を少ししておきましょう。 「何らかの方法で機器からPCへデータを送る」というのがここまでの内容です。 もうひとつ重要なこと、「PCで受け取ったデータをどうするか」の前「PCでデータをどう受け取るか」という点については考えてありますか? 「データを送ればPCが何とかしてくれる」というものではありません。 受け取るデータにあわせてソフトを用意(開発)したり、受け取る(使用する)ソフトにあわせて、送信するデータを合わせたりといったことが必要ですが、そういったことは検討されていますか?

abcdef220
質問者

お礼

何度もありがとうございます。 「ひとつの機器に全部」です。 なんらかのソフトを開発しなくてはならないと言う事は理解しています。 RS232Cはデータは送信・受信がそれぞれ1線でやり取りしますよね? それで送信するなら"10101011"という様に信号を出さないといけないと思うのですが、そういう事はどうすれば良いのですか? スイッチの状態をマイコンで受け取ってそれを元にマイコンで送信するという具合ですか? よろしくお願いします。

すると、全ての回答が全文表示されます。
回答No.3

No.2です。 結論から先に書いておきます。 >スイッチは一つの機器に一つです。 ということならば、 >シリアル通信はRS232Cを考えています。 はあきらめることをお勧めします。 RS-232は「一対一」の「半二重通信」用のI/Fです。 従って、すべての情報を取得しようとした場合、その機器の台数分のシリアルポートが必要となります。 他にも色々と制約がありますが、この時点で「難易度が10倍以上跳ね上がります」という部分が理解できますでしょうか? それでもどうしてもという場合のために、シリアルポートを増やす方法は記載しておきます。 ・PCIボードによる増設 ・USB-RS232変換ケーブルによる増設 前者はPCI-I/Fを持つデスクトップが必要となりますが、最低2つ以上のスロットが必要です。 後者はUSB-HUBを使用すれば増やすことはできますが、必ずしも動作するという保障はありません。 私がやるとしたならば、 ・機器からUSBでの通信 ・すべての機器のS/W入力(ON/OFFだけとして)を収集する機器を作り、そこからUSBやRS-233でPCに通信 ですね。

abcdef220
質問者

お礼

ありがとう御座います。 すいません、間違えてました。 機器は一つです。 スイッチは一つの機器に複数あります。 この場合はどうなのでしょうか? 何度もすいませんが、よろしくお願いします。

すると、全ての回答が全文表示されます。
回答No.2

根本的な部分からの構築が必要な感じですね。 まず確認ですが、「スイッチ」は一つの機器に設置されているものでしょうか? それとも「1スイッチ、1機器」でしょうか? 後者の場合は難易度が10倍以上跳ね上がります。 前者であれば、割と楽です。 送る際に全部のスイッチの状態を一括して送ってしまえばいいのですから。 ここで必要になるのが、 ・通信データのフォーマット ・送信側(SW側)の設計 ・受信側の設計 となります。 「通信データのフォーマット」を決めて、「送信」し「受信」して内容を表示となります。 こういった場合は、「非同期通信」が主となります。 それと、 >RS232C等のシリアル通信 って部分に引っかかりがあります。 「USB」も「IEEE1394」も「有線LAN」も「S-ATA」も全部シリアル通信です。 RS-232でいいのですよね?

abcdef220
質問者

お礼

ご回答ありがとう御座います。 返事、遅くなりすいません。 スイッチは一つの機器に一つです。 シリアル通信はRS232Cを考えています。

すると、全ての回答が全文表示されます。
  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

一定の時間間隔で状態信号を送り続ける 10秒間で1秒ずつ順番にON/OFF状態の信号を送るなど  0123456789秒  1010101010 ※ 本当は通信速度に合わせた間隔で信号を送信します パリティビットやフロー制御信号などを一緒に送るのがルールなんですけどね

abcdef220
質問者

お礼

ご回答ありがとう御座います。 すいませんが、信号の送受信の方法が分からないです。 いずれか一つのスイッチが押されている状態をパソコンで読み取りたいのですが、マイコンか何かで通信速度に合わせた間隔で信号を送信するのですか? よろしくお願い致します。

すると、全ての回答が全文表示されます。

関連するQ&A