SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

C#で学ぶインターネット時代のシリアル通信

C#で学ぶインターネット時代のシリアル通信(前編)

シリアル通信の概要とC#を使ったシリアル通信の実装


  • X ポスト
  • このエントリーをはてなブックマークに追加

通信コネクターの規格

 実際につなぐためには、ケーブルが必要です。もともとのRS232Cのコネクターは25個ピンのあるコネクターが使われていました。それぞれのピンには信号名があり、どう使うかの規格が決められていました。しかし、実際には使われない信号も多く、コネクターも大きいので、だんだん9個のピンのコネクターに変わっていきました。現在パソコンについているシリアルインターフェイスはこの9個のピンのコネクターがほとんどです。

図2 RS232Cケーブルのイメージ
図2 RS232Cケーブルのイメージ

 イメージ図のコネクターの主なピンの意味は次のようになります

キャプション
ピンの番号 名称 意味
2(RD) (Receive Data) 受信データ
3(SD) (Send Data) 送信データ
4(DTR) (Data Terminal Ready) データ端末レディ
5(GND) (Ground) アース
6(DSR) (Data Set Ready) データセットレディ
7(RTS) (Request To Send) 送信要求
8(CTS) (Clear To Send ) 送信可能

 AパソコンからBパソコンへデータを通信する場合の信号の流れは、次のとおりです。

  • まずAパソコンからDTR(信号を送る通路が使えます)をONにします。BパソコンはDSR(私も準備OKです)をONにします。
  • 次にAパソコンはRTS(データを送ってもよいですか)をONにします。BパソコンはCTS(送ってもらって大丈夫です)をONにします。
  • これで準備が整いました。AパソコンはSDから信号を送ります。BパソコンはRDから信号を受け取ります。
RS232C信号の流れ
RS232C信号の流れ

 以上の説明からすると、信号線3本では送受信できそうにありません。もしAパソコンがDTRを出してDSR待ちの時、自分が出した信号線がそのままDSRにつながっているとAパソコンはDSR信号を相手から貰ったと思い次のステップへ行きます。RTSも同様に自分が出した信号をそのままCTSにつなぐと送信可能と思い次のステップへ行きます。相手からの通信待ちで止まってしまうことなく接続開始ができるようになります。

 そこで、ケーブルを作る時、4:DTRと6:DSRのピンを自分のコネクターの中でつなぐのです。7:RTSと8:CTSもつなぎます。これで接続開始の処理は自分のパソコン側のみでできるようになりました。そうするとあと必要な信号は2:RD、3:SD、5:GNDの3本になります。

 Aパソコンの2:RDとBパソコンの3:SDをつなぎ、Aパソコンの3:SDとBパソコンの2:RDをつなぐので信号線をクロスさせることからクロスケーブルと言います。

線のつなぎ方
線のつなぎ方

 今までのデスクトップパソコンのインターフェイスにはシリアルコネクターが付いていました。現在では付いているパソコンは珍しくなっています。

 代替としてUSBが使用されるようになってきています。現在はUSBのコネクターにさすケーブルと、ドライバーCDがセットになって売られており、ドライバーを入れるとそのケーブルでシリアル通信ができるようになります。

どんなものに利用されているか

 計測や制御関係では、この通信方法はよく使用されています。

 パソコンというより、マイコン(マイクロコンピュータチップ)ができて、マイコン同士の通信手段として広く使用されるようになりました。

 マイコンチップに組み込まれているため、手順が組みやすく、通信内容と通信方法が分離しているため、導入しやすかったのだと思います。

 パソコンとつないでデータを設定し、実際の測定や制御の時はパソコンから離して行い、測定や制御が終わってまたパソコンとつなぎ、データをパソコン側へもらうようなものによく利用されます。

 以下実際に使われている制御機器の一部を紹介します

(1)二足歩行ロボット(おもちゃ)

 今流行の、市販されている二足歩行ロボット(おもちゃ)を設定するのに、USBケーブルにつないで行うものもあります。設定ソフトをインストールするとき、RS232Cドライバーもインストールされ、シリアル通信ができるようになります。まずつないで、設定ソフトを立ち上げロボットの動きを指令します。座ったり立ち上がったり、踊ったりとそのロボットの性能により、面白い動きをさせることができると思います。ケーブルをつけたまま動かしても良いのですが、ケーブルをはずして動かすとよりおもしろいと思います。

(2)地震体験装置

 地震の形はいろいろあります。また、関東大震災なみの地震や阪神・淡路大震災の地震を体験したいなどの要望があると思います。複数の地震の形式を体験装置で持っているのは大変です。そこでパソコンの出番です。パソコン側にそれぞれの地震の形のデータを覚えさせておきます。実際に体験する場合、どの地震を体験したいかを選んでもらい、そのデータを地震体験装置にシリアル通信で送信します。送信した後、スタート指令を出します。ここから地震体験の始まりとなります。

(3)バスやタクシーの速度や動いた時間帯を測定する機械

 機械は車に取り付けてあります。朝、車が動き出すと測定がはじまります。時間と速度、加速度が測定されデータが保存されます。一日の終わりにその機械をパソコンにつなぎ、シリアル通信でデータを吸い上げます。複数台の車のデータをパソコンで比較したり、一番動いている時間を調べたりすることができます。

(4)光ファイバーケーブルのトンネルの曲がり角度を測定して送れるか確認する機械

 インターネットの通信でも光ファイバーケーブルは不可欠です。同じケーブルでもこの光ファイバーケーブルはある角度以上曲げると通信することができません。トンネルを掘ったあと、この角度検査をやっておかないと、光ファイバーケーブルを入れてしまって「通信ができませんでした」では完成が遅くなってしまします。ここで登場するのが、この機械です。まずパソコンとつないで(RS232Cケーブルで)機械のほうに、取り込み条件(何ミリ秒間隔でとるか、取り込み最大データ量など)を送り、計測開始させます。機械をパソコンから外して、トンネルの中へ、一定間隔で、巻き取りながら出口へ進みます。測定終了後パソコンとつなぎ測定データを吸い上げます。吸い上げられたデータはパソコン側で計算し、トンネル内の角度を表示させます。

 分野がばらばらですが、例を挙げてみました。特に制御機器をワンボードマイコンで作成しようと考えたときの通信手段としては、このRS232Cがよく使用されています。

次のページ
C#によるシリアル通信の書き方

修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
C#で学ぶインターネット時代のシリアル通信連載記事一覧
この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 横塚 利津子(ヨコツカ リツコ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3785 2009/04/27 14:59

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング