このＰＤＦは，ＣＱ出版社発売の「玄箱PROと電子工作で遊ぼう」の一部分の見本です．
内容・購入方法などにつきましては是非以下のホームページをご覧下さい．
<http://shop.cqpub.co.jp/hanbai/books/46/46071.htm>

第5章

KURO-BOX/PRO

外部からの入出力をマスタする

シリアル・ポートで遊ぼう
パソコンに，9 ピンのコネクタがついているのを見たことはないでしょうか？ 最近のパソコンでは省略されているものもあるので，見たことのない人もいるかもしれません．玄箱 PRO の場合には，内蔵シリアル・ポートもありますが，シリアル・コンソールに使われています．本章では USB シリアル・ケーブルを利用しています（写真 5-1）．
「シリアル（serial）」というのは直列・順次という意味で，データを 1 ビットずつ順に送っていることから名づけられています．同時にデータを送る方法もあり，その場合は「パラレル」（並列）と呼ばれます．
パラレルの場合は 4 ビット，8 ビット，16 ビットなどのデータを一度に送ります．最近では USB が普及したので，シリアル・ポートの影が薄れてしまいましたが，まだ自作のデバイスを作るには USB よりも簡単です．また信号の流用によって，簡単に外部機器を制御することも可能です．そこで USB シリ
アルを玄箱 PRO につないで遊んでみます．

5-1

シリアル・ポートを知ろう● シリアル・ポートの規格
シリアル方式の通信にはいくつもの規格があります．USB や Ethernet もシリアル通信です．ここで取り上げるのは D-sub 9 ピン・コネクタを使う，EIA-574 規格です．
この規格は，RS-232C（EIA-232）規格（25 ピン）の，ピン数が少ないものと見なせるので，歴史的経緯

写真 5-1

左：ノート・パソコンのシリアル・ポート，右：USB シリアル・ケーブル

5-1

シリアル・ポートを知ろう113表 5-1

EIA-574（RS-232C）の D-sub 9 ピン・コネクタのピン配置

ピン番号①②③④⑤⑥⑦⑧⑨電圧

スタート・ビット

略 称DCDRXD
TXD
DTR
GNDDSRRTS
CTS
RI

データの最下位ビット（0 または 1）

意 味
キャリア検出
受信データ
送信データ
データ端末レディグラウンド
データ・セット・レディ
送信要求
送信可能
被呼表示

通信の向き
入力
入力
出力
出力なし
入力
出力
入力
入力

データの最上位ビット（0 または 1）

ストップ・ビットスタート・ビット0（3V〜12V）

0

時間

1（−3V〜−12V）

データ
1/9600［s］

データ（8 ビット）

1/9600［s］以上（上限はない．
）
間隔も不定

1 バイトの送信時間は1＋8＋1＝10 ビット分かかる

図 5-1

9600bps，8 ビット，パリティなし，ストップ・ビット 1 のときのデータの送り方

から RS-232C（規格，形式）とも呼ばれることがあります．ここでも厳密な区別は必要ないので，以下区別はしません．

● EIA-574（RS-232C）のピンの意味
各ピンの意味は表 5-1 のようになっています．グラウンド（5 ピン）に対して，信号ピンの電圧が 3［V］
〜 15［V］のとき 0 を，− 3［V］〜− 15［V］のとき 1 を意味します．通信の向きはパソコン /USB シリアルなど，オス側のコネクタのついている機器から見たものです．
最低限，通信に必要なのは，②，③，⑤ピンの 3 本です．玄箱 PRO のシリアル・コンソールでは，この 3 本のみを使っています．このときには⑦，⑧ピンをコネクタ内でショートしておく（ループバックしておく）と，通信できないトラブルを防げます．
パソコン同士をつなぐときには，クロス・ケーブルを使って②，③を相手の③，②に，⑦，⑧を⑧，⑦につなぐことで通信できます（ソフトウェアにより指定がある場合はそのようにつなぐ）．⑤はそのまま⑤へつなぎます．
114 第 5 章 シリアル・ポートで遊ぼう● データの送受信（TXD と RXD）
データは，7 または 8 ビット単位で送受されます（図 5-1）
．TXD で送信し，RXD で受信します．最初にデータの開始を表すスタート・ビット（0），データ（最下位ビットから順に送る，0 または 1 が 7 個ま
たは 8 個続く），（必要な場合に）パリティ・ビットの 0 または 1，ストップ・ビット（1）が 1 単位です．1 ビッ
トを送る時間（タイミング）を送受する機器間で合わせることで，1 本の線で 1 方向のデータのやり取りを実現します．送受で 2 本と，電圧の基準となるグラウンドを合わせて 3 本の通信線でデータのやり取りが実現されます．
送受間で，ボーレート（1 ビットを送る時間を決める），データの単位（7 または 8 ビット），パリティ（データ・エラーを検出する方式，偶数・奇数・なし），ストップ・ビットの長さ（1 ビットまたは 2 ビット），フロー制御の方式を一致させます．ボーレートの単位は bps（bit per second，1 秒あたりに送るビット数）です．
9600bps の場合は，1 ビットの長さは 1/9600［sec］です．データのほかに，スタート・ビットとストップ・ビットがつくので，データが 8 ビット（1 バイト）でパリティ・ビットなしの場合でも，8 ＋ 2 ＝ 10 ビッ
トを送る必要があります．そのため，9600bps では，1 秒間に送れるのは 960 バイトまでです．

● フロー制御（RTS と CTS）
機器がデータを受け取る準備ができていないときに，相手からデータを送られると受け取りそこなってしまいます（取りこぼし）．
そこで，相手に送信を待たせることでデータの取りこぼしを防ぐのがフロー（ﬂow，流れ）制御です．
フロー制御には，データの中の 2 文字（XON/XOFF）を送信中断と再開に使うソフトウェア・フロー
制御，RTS/CTS 線を使うハードウェア・フロー制御があります（RTS が＋のときに相手に送信許可を示し，CTS が＋のとき相手から送信許可を受けたとする）．ソフトウェア・フローでは，通信に必要な線が省略できる反面，2 文字が特別な意味に使われてしまいます．ハードウェア・フローでは，データに制約はありませんが，専用に 2 本の線が必要になります．
お互いが十分に速く，取りこぼしがないことを仮定できるか，取りこぼしをほかの方法でカバーできる場合は，フロー制御をしない（フロー制御なし）場合もあります．玄箱 PRO のシリアル・コンソールが，その例です．⑦，⑧ピンをコネクタ内でつないでおくのは，フロー制御なしで通信するときにも，通信用 LSI の都合で CTS が＋でないと送信しないようになっているものがある（過去にあった）ための対策です．自身の RTS（＋）
を CTS につなぐことで，つねに＋と見なしてしまいます．

● モデム制御用記号（DCD，DSR，DTR，RI）
DCD，DSR，DTR，RI はモデム制御用信号です．最近ではあまり利用されなくなりましたが，電話回線を通してコンピュータが通信するのにモデムが長い間利用されてきました．DCD は，モデムが相手との通信を確立したことをパソコンに示します．RI は，モデムがパソコンに電話がかかっていることを知らせます．
DTR はモデムに，パソコンが準備ができたことを知らせます．モデムは，これを DSR により受け取ります．これにより，電話線を通した通信にモデムを使うときに，自動でダイヤルしたり，着信時にパソコンに知らせるといったことが想定されています．

5-1

シリアル・ポートを知ろう

115

● 信号の転用
RTS，CTS，DCD，DTR，DSR，RI 線は，フロー制御やモデム制御が不要な場合には別の用途に転用することもできます．転用することで最大 2 本のディジタル（ON/OFF）出力と，最大 4 本のディジタル入力が使えることになります．
ディジタル出力の電圧は，パソコン（USB シリアル）によって± 3 〜± 15V の範囲で差があることに気をつけてください．ディジタル入力の電圧は＋（0）のとき 3 〜 15V，−（1）のとき− 3 〜− 15V（0 〜− 15V でもたいていは OK）の範囲となるようにすることが必要です．

シリアル・ポートを使ってみる（シリアル・チェッカの製作）

5-2● シリアル・ポートの信号を見る
シリアル・ポートにどのような信号が流れているのでしょうか，ここではシリアル・チェッカを作成
し，LED を点灯させ確かめてみます．

● シリアル・チェッカの準備
シリアル・ポートの信号を，信号の 0/1 に合わせて LED が点灯することで目に見えるようにします．
いくつか市販もされているのですが，自作することにしました．

123456677889912345678D9緑D2 D10
赤 緑

D3 D11赤 緑

D4 D12
赤 緑

D5 D13赤 緑

D6 D14赤 緑

D7 D15赤 緑

D8 D16
赤 緑

GND

図 5-22345CN2
D-sub 9P（メス）CN1
D-sub 9P（オス）D1
赤1

シリアル・チェッカの回路図

116 第 5 章 シリアル・ポートで遊ぼう

D1〜D8 は赤色 LED，D9〜D16 は緑色 LED
1〜 8 は 3.9kΩ〜10kΩ程度