2011.10.7
前へ
次へ
目次へ戻る
ホームページトップへ戻る

ワンボードマイコンをつくろう!(パソコンの原点はここから始まった) TK80ソフトコンパチブル!8080、Z80マシン語からBASICまでこれ1台でこなせます

[第120回]

●パソコンとRS232Cで通信する

ND80ZVについてはおよそ2ヶ月半ぶりの更新になります。
この間はずっとUBUNTU(リナックス)にかかりっきりになっておりました。
そちらの記事(パソコンをつくろう![第229回])のはじめのところで書きましたように、ND80ZVをご購入いただいたお客様からメールでご質問をいただきました。

ND80ZVにはRS232C通信の機能があるのですが、その機能を使ってパソコンと接続する方法を説明してほしい、というご質問でした。

ND80ZVの附属説明書を確認してみましたら、RS232C関係の命令や接続コネクタについての説明はあるのですが、実際にパソコンと接続してRS232Cで通信を行なうための具体例は、書いてありませんでした。

このあたりは説明を始めますとかなり手間がかかるところですので、後でまとめるつもりで、結局そのままになってしまったようです。
詳細に首をつっこんで説明を始めますと大変ですから、適当なサンプルを2〜3作成して、それで済ませてしまおうとも思ったのですが。

そういえば、RS232Cといえば誰でも知っているほど名の知れた規格ですのに、インターネットでさぐってみますと、意外に「よくわかる、具体的なサンプル」というのはないのですよねえ。
サンプルというからには、誰でもその通りにやってみて、同じようにできなければ、余り意味はありません。
いろいろ前準備が必要なところをカットしてしまって、さわりだけを少し…、というのでは、初心者には何の参考にもなりません。

むむむ。
そういうことならば。
せっかくご質問をいただいたこの機会に、ちょっと掘り下げて、ND80ZVのRS232Cについてまとめてみようと考えました。
このテーマは、ご質問をいただいたお客様だけではなくて、当記事の読者様にもおそらくは興味のあるテーマだと思います。

じつは。
まだUBUNTU(リナックス)についてももう少し書かねばならないことを残しておりますので、そちらとこちらを交互に書くというようなことになってしまうかもしれません。
結果的に、それほど掘り下げた内容にはならずに終わってしまうかもしれませんが、できるだけ時間を割いて詳細に具体例を説明していきたいと思いますので、しばしお付き合いをお願いいたします。

●RS232Cコネクタ

話の順序としまして、やはり最初はコネクタから説明することになります。
ここでのテーマはRS232Cプログラムの参考例について説明することですから、いまさらRS232Cのコネクタについての説明など余計なことではないか、とお叱りを受けてしまうかもしれませんが、中にはそういうことも知りたくて当ホームページにたどり着いたという読者様もいらっしゃるかと思いますので、簡単に説明をさせていただきます。

RS232Cコネクタには9ピンと25ピンがあります。
一般に9ピンDSUB(Dサブ)コネクタ、25ピンDSUBコネクタと呼びます。
さらにそれぞれにオスとメスの区別があります。
当然接続ケーブルは基板、装置についているコネクタとはオスメスが逆になります。
昔はもっぱら25ピンDSUBが使われていたのですが、パソコン通信や電話回線とパソコンを接続するためのモデムが普及するにつれて、9ピンDSUBが主流になってきました。
その昔のパソコンには9ピンDSUBと25ピンDSUBの両方を実装しているものがスタンダードだったのですが、やがて9ピンDSUBだけになり、WindowsXPの全盛期ごろにはその9ピンDSUBも標準では実装されなくなってしまいました。

それでは最近のパソコンでは232C通信ができないではないか、ということになってしまいますが、その代わりに最近ではRS232CをUSBに変換するケーブル(ただのケーブルではなくて、中に変換用のIC回路が入っています)が用いられるようになりました。

しかしそういうことになりますと、今更RS232Cコネクタについて説明しましても、接続するパソコンが無いじゃないかということなのですが、私のところではまだ健在なのです。
さすがに少ないかもしれませんが、まだそのようなパソコンをお使いの方もいらっしゃるかと思いますので(うう。私だけだったりして)、せめて9ピンDSUBについて、ざっと説明をすることにいたします。

こちらがちょいと昔のパソコンのバックパネルです。
余りに汚れているので小さい写真で一部分だけお見せします。

中央下部にあるのが9ピンDSUBです。
これはもちろんRS232Cですが、その上にある25ピンDSUBはRS232C(シリアル)ではなくてパラレルポート(プリンタポート)です。
今はそのどちらもなくなってしまいました。
そのいずれもパソコンと外部の装置をつないでデータのやりとりをするのに便利なコネクタだったのですが…。
それはともかくとしまして、パソコンのRS232C用の9ピンDSUBコネクタはご覧のように、端子が突き出ています。オス型です。

こちらはND80ZVの9ピンDSUBコネクタです。

こちらはメス型です。

オス型とメス型を接続するときは全ての信号線がまっすぐにつながっているストレートケーブルで接続します。
一方の端がメス型コネクタでもう一方の端がオス型コネクタになっているケーブルです。
パソコン側にケーブルのメス型コネクタを接続して、ND80ZVにはオス型コネクタを接続します。

この9ピンDSUBコネクタケーブル(ストレート)も以前はパソコンショップなどでごく普通に売られていたものですが、今では安価に入手することは難しくなりました。

パソコンとND80ZVは、9ピンストレートケーブルで接続します。
これに対してパソコン同士を接続する場合には、両方とも同じオス型コネクタになりますから、そういう場合には、ストレートケーブルではなくて信号線をクロスさせたクロスケーブルを用います。
しかしクロスケーブルについては今回の記事の目的から外れてしまいますから、説明を省くことにいたします。

参考までに9ピンDSUBコネクタの端子信号を示します。

a@信号名
1  −
2  RXD 受信データ
3  TXD 送信データ
4  DTR データ端末レディ
5  GND
6  DSR データセットレディ
7  RTS 送信リクエスト
8  CTS 送信可
9  −

RS232Cを使った一般的なパソコンのデータ通信で使われない信号名は省略しています。
信号名はパソコン側コネクタを基準にしています。
たとえば端子bQはパソコン側はRXDでデータ受信端子ですが、当然これとつながるND80ZV側の端子bQはデータ送信端子になります。

本来のRS232C通信では、RXD、TXDのほかにDTR、DSR、RTS、CTSの各制御線を使ってハードウェア的に送受信のタイミングをコントロールします(フロー制御)。
しかしND80ZVに内蔵のRS232C回路は回路を簡略化しているためにRXD、TXDとGND以外の信号線は使用していません。

そうするとパソコン側で上記の制御線をフロー制御に使用した場合、ND80ZV側がそれに応答できないために、通信が行なわれなくなってしまいます。
そこで、パソコン側が制御線をアクティブにした場合に、ND80ZV側はそれに「無条件」で機械的に応答するように、ND80ZVの基板上で、端子bSと6、それから端子bVと8をショートさせてあります。
このような配線方法による送受信を「タレ流し式」と言います。

ハードウェア的なフロー制御が全く行なえませんから、受信側が準備ができていないのにいきなり送信したり、受信側が追いつけないような速度、タイミングで送信を行うと、データが欠落したり、ハングアップしてしまうことになります。
ですから、ソフトウェアを工夫して、たとえば受信側が受信できるようになったら、送信側にそれを知らせることで、送信側が送信を開始する、などのようなプログラムにするように考えます。

●ND80ZVのRS232Cプログラム

さてそれではいよいよ本題のRS232C通信プログラムの説明に入ります。
ND80ZVはもともとはTK80ソフトウェアコンパチブルなボードですから、本来の使い方としては、当然8080またはZ80のマシン語プログラムが基本になります。

しかしRS232C通信のためのプログラムをいきなりマシン語で書いたりすると、うまく通信ができなかった場合、接続に問題があるのか、あるいはパソコン側のプログラムに問題があるのか、それともND80ZV側のマシン語プログラムに問題があるのか、さっぱりわからなくて思いきり悩むことになります。

幸いND80ZVにはN88BASICに近い表現のBASICが内蔵されていて、パソコンとUSBで接続して、パソコン画面上からBASICプログラムを作成したり実行したりすることができます。
RS232Cの送受信プログラムもBASICならば極めて簡単です。
これを使わない手はありません。

ということで、とりあえずエントリとしては、ND80ZV側は、BASICでプログラムを書いてみることにします。
もちろん最終的には、マシン語でのプログラムにも挑戦することにいたします。

●パソコン側のRS232Cプログラムは?

一方パソコン側についてなのですが、こちらがなかなかに悩ましい状況なのです。
パソコンのBASICといいますと、ずっと昔でしたらもちろんNECのPC9801が搭載しておりましたN88BASICになるところなのですが、WindowsではN88BASICは使えません。
もっともWindows上で使えるN88BASIC互換のフリーソフトなるものもありますから、それもぜひ試してみたいと思います。

それは先の話としまして、パソコン側で手っ取り早く、すぐにでもRS232Cの通信を試してみるには?
それにはハイパーターミナルのほかにはありませんでしょう。
ということで、パソコン側は、まずはハイパーターミナルを使うことにいたします。

ところで。
なんとまた信じられないことに、Windows7にはハイパーターミナルがないことがわかりました。
Microsoftよ、どこへ行く?
しかも、それをWindows7にインストールして実行することもできない、というのですから、いったいMicrosoftは何を考えておるのじゃ、と言いたくなってしまいます。

Windows7上で実行できるフリーの「ハイパーターミナル」もあるようですので、いずれはWindows7対策として、それもぜひ試してみたいと思います。
しかし幸いまだ多くの方のお手元には依然としてWindowsXPが健在かと思いますので、とりあえずはWindowsXP上でハイパーターミナルを使ってRS232C通信のテストをしていきたいと思います。

おそらくはかなりのお方のWindowsXPパソコンにはすでにRS232C用9ピンDSUBコネクタが消失しているかと思われますので、その場合にはRS232C−USB変換ケーブルをお使いいただくことになるかと思います。

左にありますのが「秋月」から購入いたしましたUSB・シリアル変換ケーブルです。


なお秋月のUSB・シリアル変換ケーブルは、ND80ZVの9ピンDSUBコネクタと同じタイプの六角スペーサがついています。
スペーサ同士がぶつかってしまい、このままではケーブルを接続することができません。
秋月のUSB・シリアル変換ケーブルをND80ZVに接続するときは、ND80ZVの9ピンDSUBコネクタのスペーサネジを外してください(ペンチなどでつまんで回すと外れます)。


今回はRS232Cコネクタの説明などに時間がかかってしまったために、結局プログラムの説明には入れませんでした。
次回から少しずつプログラムの説明に取りかかっていくようにいたします。

ワンボードマイコンをつくろう![第120回]
2011.10.7upload

前へ
次へ
目次へ戻る
ホームページトップへ戻る