一般的に、 IBM PC/AT 互換機の世界で言われている「シリアルポート」、 「シリアルインタフェース」は、RS-232C と呼ばれています。
正確に言うと、RS-232C という名前の規格は、既に存在しておらず、 ANSI-232-E、EIA-232-E、 もしくは、TIA-232-E が、正確な呼び名です。
PC/AT 互換機で使われている D-Sub 9pin コネクターを使った物は、 実は、この規格の基になった RS-232C 規格には、 全く従っていませんでした。 しかし、今では、EIA-574 として規格化されました。
PC/AT 互換機に限定すれば、 EIA-574 と呼ぶべきインターフェースなのですが、 一般的には、RS-232C と言った方が、 意味が通じ易いです(EIA-574 と言っても、解ってもらえないことが多いでしょう)。
このインタフェースは、 情報を 1bit 毎に送るシリアルインタフェースです。 通信が行われていない状態であれば、大抵の場合、PC が動作している最中に、 コネクターを抜いたり、繋いだりしても問題が起こることはありません。
シリアルインタフェースなので、情報を伝える電線は、一本なのですが、 送信するための電線と、受信するための電線が、別々になっています。
ワンマンバスは、お客さんが乗り込むための入り口と、降りるための出口が、別々になっていますね。 送信と、受信のための線が別々になっているので、送信のための口と、受信のための口は、 ワンマンバスの、出口と入口のようなものです。
PC から送信するために使われる口は、接続する機器にとっては、 受信のための口に、また、PC が受信するための口は、 接続する機器にとっての送信するための口に、それぞれ接続しないと、 正しくデータのやり取りを行うことが出来ません。
このインタフェースを使って接続される物は、 モデムや、ISDN の TA などがありますが、 それらの機器は、PC と接続して使うことが前提となっているので、 このことを気にする必要はありません。
PC が、前乗り、後ろ降りのワンマンバスだとしたら、 モデムや、ISDN の TA は、 後ろ乗り、前降りのワンマンバスになっているということです。 前の扉と、後ろの扉をそのまま真っ直ぐに繋げば、 お互いの降り口が、相手の乗り口に繋がることになりますね。
RS-232C インタフェースを使って、 PC と PC をつないで、 お互いの情報を交換することも出来ます。 PC 同士をつないで、お互いのファイルを共有したり、 一台のプリンタを共有できるようにすることが出来るものは、何でしょう? そう、LAN(Local Area Network)ですね。
LAN は、抽象的な概念で、 インタフェースのことを言っているのではありません。 LAN という概念を実現するインターフェースは、 様々です。代表的な物は、Ethernet です。 Ethernet にも、色々な種類がありますが、 実際使われているものの大多数は、10base-T、 もしくは、100base-TX です。 LAN に使われるインターフェースで、 Ethernet 以外には、 ATM、FDDI、HomePNA などがあります。
さて、話を RS-232C に戻しましょう。 RS-232C インタフェースを使えば、 2 台の PC をつなぐことが出来ます。 Ethernet などは、もっと多くの PC 同士をつなげますが、 RS-232C で、普通につなげた場合は、2 台が限界です。
RS-232C を使ってつなげるネットワークは、 2 台の PC 同士をつなぐだけなので、 ある点と、ある点を直線で結ぶようなものです。 ですから、こういう接続形態を、Point To Point 接続と呼びます。
「あれれ?」って思いませんでしたか? 「どこかで、PPP というのを聞いたことがあるぞ。 あれは確か、Point To Point Protocol の略じゃなかったけ?」。 その通りです。RS-232C などの、 一対一の関係で接続することが、一般的であるインタフェースを、 LAN の仲間に入れるために創り出された物が、 「PPP」なんです。
PC 同士を RS-232C で繋げて、 お互いの情報を交換しようとすると、ケーブルにおける問題があります。 RS-232C インターフェース用のケーブルは、 大抵ストレートケーブルなので、お互いの送信・受信用の口同士が、 繋がることになってしまい、通信が出来ません。
この説明だけでは、良く解らないかもしれませんね。 先程、PC と PC に接続されるモデムとの関係を、 ワンマンバスに喩えて書きました。 ワンマンバスで喩えれば、PC は、全部、前乗り後ろ降りのワンマンバスなので、 前の扉同士、後ろの扉同士を、真っ直ぐに繋ぐと、入り口同士、出口同士が繋がることになってしまいます。
お互いのバスに乗っている乗客が、 お互いのバスに乗り継ぐことが出来ない(データの交換が出来ない)ということなんです。
この場合は、クロスケーブルというケーブルを使って繋げます。 クロスケーブルは、こちらにとって送信の口が、相手にとっての受信の口に、 こちらにとって受信の口が、相手にとっての送信の口に繋がることになり、 正しく送受信できるのです。 送信・受信の関係がクロスするので、クロスケーブルと呼ばれるわけです。
10base-T/100base-TX でも、同じことが言えます。 Ethernet で、 Hub(ハブ)という機器の名前を聞いたことがありますか? Hub を使った場合、 Hub に繋がった PC 同士は、 カスケード接続と呼ばれ、PC と、 Hub を接続するケーブルは、ストレートケーブルを使います。
そうすると、Hub に接続された、 全ての PC は、10base-T/100base-TX 的には、 全て繋がったことになります。(バス型接続)
しかし、Hub を使わずに、 接続する場合、クロスケーブルを使わないといけません。 そう、10base-T/100base-TX も、シリアルインタフェースなんです。
RS-232C インターフェースを使って送られるデータは、 通信スピードに同調して送られます。 通信スピードは、1 秒間にどれだけの bit を送れるようにするのかという観点で、 通信に前もって決めます。
このスピードが、お互いに違うものになっていると、きちんと話をする事が出来ません。 このスピードのことをボーレート(Baud Rate)、 もしくは、bps(Bit Per Second)で表します。
115,200bps と言ったら、 一秒間に、115,200bits 送ることが出来るスピードということになります。 ボーレートと、bps は、同じものと考えてください。
送信されるデータは、スタートビット、データビット、パリティピット、ストップビットのペアで送られます。 データビット、パリティビット、ストップビットは、どのように送り出すかを選ぶことが出来ます。
どのようなものが選べるのかは、「コントロールパネル」から開くことが出来る、 ダイアログによって、確認する事が出来ます。
このダイアログの表示方法を教えます。 「コントロールパネル」から、「シリアルポート」を選びます。 そこでダイアログが表示され、そこには、「COM1:」 「COM2:」という選択項目が表示されます。 この「COM1:」、もしくは、「COM2:」を選び、 「設定」ボタンを押すと、目的のダイアログが表示されます。
このダイアログで、色々な選択肢を参照する事が出来ますが、 今設定されている状態は、変えない様にしてください。 今設定されている状態を変えない様にするには、すべて「キャンセル」ボタンを押して、 表示されたダイアログを閉じていけば良いです。
これらの設定をどのようにすれば良いのかは、接続する機器の取扱説明書に明記されていますから、 その設定にする必要があります。
さて、送信されるスタートビット、データビット、パリティピット、ストップビットについて、もう少し説明します。 スタートビットと、ストップビットは、お互いの歩調を合わせるために使われ、 パリティビットは、通信によって、データの欠落が発生していないか、 というエラーを検出するために使われます。
RS-232C は、送信側が主導権を持った伝送方式になっています。 相手が送り出してきたデータは、必ず受取らないといけないという約束で成り立っています。
他のインターフェースでは、送信の際に、相手が受取れない状態になっていると、 送信しようとしても送信できない様にする、ハードウエア的な仕組みがあるものもあるのですが、 RS-232C では、受け取り側が、どのような状態であれ、送信できてしまう為、 受け取り側は、送信されたデータを必ず受取らないと、データが欠落してしまうのです。
ただし、受け取り側が、送信側に、受取れない状態になったという事を知らせる方法はあります。 ですが、送信側がそれを無視して送ってきたら、送られてきてしまうので、 送り手側がその約束に従ってくれないと成り立ちません。
このような通信上の基本的な約束事は、握手をするようなので、ハンドシェークと呼ばれます。 プロトコルという話をしましたが、プロトコルは、ハンドシェークの約束事を守った上で成り立つ物です。
RS-232C のハンドシェークは、 送受信のための線以外の信号線を使って行う、ハードウエアハンドシェークと、 通信停止・再開を意味するデータをやり取りする事で行う、XON/XOFF があります。 ハンドシェークの事をフロー制御とも言います。
XON/XOFF で行う場合、 RS-232C でやり取りできるデータに制限が出来ます。 この場合は、文字データしかやり取りできません。 何故なら、XON/XOFF を意味するデータを送ったら、 データの送信を意味せず、ハンドシェークの動きをしてしまうからです。
RS-232C は、 大型汎用機と端末を繋ぐための標準的なインタフェースでもあります。 この用途では、端末側のキーボードから入力されたデータと、 端末の画面に表示して欲しいデータがやり取りされるので、 文字データの伝送さえ出来れば、問題が無いのです。
どのようなデータでもやり取りできるようにするためには、ハードウエアハンドシェイクを使います。 モデムは大抵、ハードウエアハンドシェークです。