[リストへもどる]

一括表示

▼ RS-232Cのシーケンス - としき@家主 2006/01/21 00:57 No.589
  ┗Re: RS-232Cのシーケンス - としき@家主 2006/01/25 12:20 No.594
   ┣Re^2: RS-232Cのシーケンス - 文太 2006/01/25 16:34 No.595
   ┃┗Re^3: RS-232Cのシーケンス - としき@家主 2006/01/25 21:57 No.596
   ┗絡みあう現実 - としき@家主 2006/01/28 23:12 No.597
タイトルRS-232Cのシーケンス
記事No589
投稿日: 2006/01/21(Sat) 00:57
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
シーケンスという言葉は厳密には正しくないかもしれませんが。

最近ではRS-232Cも衰退の一途をたどっています。
が、完全に絶滅するまでには、まだ当分かかるでしょう。
ということで、たまにはちょっと技術的なお話。
記憶で書いている部分も多いので、間違いに気付かれた方がおられたら、レスを
つけてください。

まず、ハードウェア的には、送信側の最大電圧は絶対値で25V以下、電流は500mA
以下となっています。ただ、これは何も信号を送信していないときの話で、信号
送信時には5〜15Vとするようです。
一方、受信側は、データ用の信号線では-3V以下を"1"(ON)、+3V以上を"0"(OFF)と
認識します。ところが、RS-232Cにはデータ信号以外の制御用の信号線もあります
が、こちらの方は、+3V以上を"1"(ON)、それ未満を"0"(OFF)と認識するようにな
っています。

さて、データ用の信号線は、コンピュータからモデム等の方向へ送信するSDと、
逆にモデム等からコンピュータへ送信するRDという線があります。これらについ
ては、自明というか、あまり詳しく解説することはありません。
今回の主要なテーマは、その他の制御用の信号線の方です。
制御用の信号線としてよく使われるものに、以下のものがあります。

JIS名称 通称  方向
 CD   DCD  PC←モデム
 CI   RI   PC←モデム
 ER   DTR  PC→モデム
 DR   DSR  PC←モデム
 RS   RTS  PC→モデム
 CS   CST  PC←モデム

CDは、モデムから見てPCの反対側、すなわち電話回線側の相手のモデムとの間
で接続が確立した場合に、それをPCに通知するための信号線です。正確には、
相手のモデムがキャリア信号(ピ〜ギャ〜の音)を出しているかどうかの通知線
です。なので、電話回線はつながっているけれども、両方のモデムが待機状態に
なって無音だったりすると、この信号線はOFFのままです。
モデムによっては、相手からキャリア信号を受けていなくても、強制的にCDをON
にするという設定ができるものがあります。こうすることにより、CDがONになる
ことを待つようなソフトを使うような時であっても、PCがいつまでも待ってし
まってハングアップ、というようなことを避ける事ができます。

CIは、モデムが回線側からの着信を受けたことをPCに通知するための信号線で
す。つまり、CIがONでCDがOFF、という状況になることは少ないはずです。

ER、DR、RS、CSの4つは、まさにシーケンスと呼ぶような動きになります。
通常、PCがデータを送信する場合には、まずERをONにします。
これは、端末側の準備完了を意味します。
これを受けて、次にモデム側がDRをONにします。
これは、モデム側の準備完了を意味します。
回線側からの着信を受けた場合は、ERとDRの順序が逆になるはずです。
また、たとえば回線が接続されていない時、つまりモデムに対して設定を行うと
かコマンドを送るといった時にも、ここまでのシーケンスは必要になります。

きちんと回線が接続されていて、通信の相手方に対してデータを送りたいとなる
と、今度はPCはRSをONにします。これは、モデムに対し、相手に対してデータ
の送信を開始することを指示する信号です。
これを受けたモデムは、きちんと回線がつながっていれば、送信状態になったと
いう事をPCに通知するためにCSをONにします。
このあと、やっとPCはモデムに対して、つまりRS-232Cのデータ線に対してデー
タの送出を開始します。特に、一部の古いパソコンでは、内部で使っているIC
の関係で、CSがONでないとデータの送信ができない機種があったりします。
 

タイトルRe: RS-232Cのシーケンス
記事No594
投稿日: 2006/01/25(Wed) 12:20
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元589
去年の秋のことです。
某所で、RS-232Cにつなげる某装置を拝見しました。
NECのPC-98系のDOSで動く接続用のソフトが付属していました。
実際、そのソフトを使えば、きちんとデータが転送されてきました。
そんなもの、やっていることはただのシリアル転送だから、わざわざ古いPC-98を
用意するのではなく、最近のマシンをつないでデータだけを抜き出してしまえば
いい、と考えました。
ところが、最近のOSを積んだAT系のマシンでは、うまく転送できません。
OSが悪いのか、とも思いましたが、DOSなドコモバでも転送できません。
ただ、ポケ3ではうまく転送ができました。

もしかしたらこの状況が、前記のシーケンスに関係しているのかもしれません。
つまり、AT系のマシンの場合、変換コネクタを経由しているのですが、そこで
例えばERとかRSの信号線が欠落してしまっている可能性があります。あるいは、
欠落していないまでも、抵抗が大きくて電圧が下がってしまっているとか。
実は、ポケ3の場合、ER端子からの出力は8V以上あるのですが、私の手持ちの
シリアル端子付きのテスターの場合、そのまま接続してもうまくデータが転送で
きないのです。どうも、そのテスターの方の回路の関係で、接続すると電圧が下
がってしまうようなのです。
解決策として、改造中継ケーブルを作製して、外部からER端子に9V電池で直接
電圧を加えるようにしてみたところ、無事にデータが転送されてきました。

もし次の機会があるようなら、この改造ケーブルを持ち込んでうまく転送できる
か試してみたいと思います。

ちなみに、ポケ3は

> タの送出を開始します。特に、一部の古いパソコンでは、内部で使っているIC
> の関係で、CSがONでないとデータの送信ができない機種があったりします。

ここでいうところの「一部の古いパソコン」に該当します。
あと、PC-9801シリーズも全部そうではないかな。
ただ、PC-9821シリーズなら該当しない機種の方が多かったような気がします。
 

タイトルRe^2: RS-232Cのシーケンス
記事No595
投稿日: 2006/01/25(Wed) 16:34
投稿者文太
レス元594
としきさん

 ご無沙汰しております。じつはあの例の「商売繁盛」な件が、お正月の2日に
最終決着して、急に仏教徒になったりして(もちろん一時的に)、ま、ここ2カ
月くらいてんやわんやなんですね。僕の行動パターンとしてはいつものパターン
ではあるのだけど、それですっと落ちてしまった・しまってるわけです。

> 解決策として、改造中継ケーブルを作製して、外部からER端子に9V電池で直接
> 電圧を加えるようにしてみたところ、無事にデータが転送されてきました。

 わーお。やるねぇ。すごいっす。

> もし次の機会があるようなら、この改造ケーブルを持ち込んでうまく転送できる
> か試してみたいと思います。

 是非、是非。ただ3月くらいになるかな、落ち着くの。
 って、話ずれてないよねぇ?

タイトルRe^3: RS-232Cのシーケンス
記事No596
投稿日: 2006/01/25(Wed) 21:57
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元595
>  是非、是非。ただ3月くらいになるかな、落ち着くの。
>  って、話ずれてないよねぇ?

ずれていません。
でも、ご存知と思いますが、私の場合は週末でも空いていないことが多いので、
その辺はご配慮いただきたいと思いますが。
 

タイトル絡みあう現実
記事No597
投稿日: 2006/01/28(Sat) 23:12
投稿者としき@家主
参照先http://www.hinocatv.ne.jp/~toshiki/
レス元594
去年の11月頃から、RS-232C関係というか、通信関係で、個人的にいろいろなこ
とがありました。

> 実は、ポケ3の場合、ER端子からの出力は8V以上あるのですが、私の手持ちの
> シリアル端子付きのテスターの場合、そのまま接続してもうまくデータが転送で
> きないのです。どうも、そのテスターの方の回路の関係で、接続すると電圧が下
> がってしまうようなのです。

ずっと以前から予告していましたが、この件、サイトに掲載しようと考えており
ます。何年もかかっている理由は、映りのよい写真がとれていないからという、
ある意味ハードウェア的なものです。
ソフトウェア側は、基本的にはポケ3標準のAutoComでなんとかなります。だけど
ちょっと使い勝手が悪い点があって、そうすると独自の通信ソフトが欲しくなり
ました。でも、さすがに1から作る気力とスキルはありません。そこで、できる
だけシンプルなポケ3で動く既存の通信ソフトにパッチを当てることにしました。
選んだのはDOSTERM。ただ、これ、最近はWEBの世界で見つけることができなく
なっておりました。仕方ないので、12月頃より私のサイトに転載しています。

さて、DOSTERMに添付のソースはTASMで書かれていますが、私はTASMを持っていま
せん。そこでパッチを当てるために全面的にMASM用に書き換えたのですが、再ア
センブルすると出来上がりのファイルサイズが全く異なる。調べたところ、オリ
ジナルではバッファ部分が実行ファイルの外に確保されているのに対し、私の作
った海賊版ではバッファ部分まで含めた実行ファイルになってしまうことがわか
りました。とりあえず、トリッキーなコードにすることによりオリジナルとバイ
ナリ一致を図る事ができましたが、MASMでそういうコードが書けないわけはなく、
本屋で「はじめてのほげほげ」をはじめとする何冊かの本を立ち読みしたり、ネ
ット上で調べたりしたのですがわかりませんでした。もし、どのようにかけばよ
いのかご存知の方がいらっしゃいましたら、ご教示いただけると幸いです。

今回のパッチ当て部分なんですが、いくつかあるうちの1つが、取得したデータ
の時刻を表示させたい、ということでした。ただ、面倒そうなので後回しにしよ
うと思っていたのですが、たまたまこの掲示板でアセンブラからの時刻取得に関
するやり取りがあって、いい機会なのでそのまま勢いで実装してしまいました。

年が明けてすぐ、仕事の関係で、業務の改善に資する画期的なツールの着想がわ
きました。ウチの職場は某大手通信企業のネットワーク設備の監視の受託が一番
大きな仕事なのですが、それらの設備にはtelnetで遠隔からログインします。大
きいネットワークなので、複数の装置にログインしなければいけないことがほと
んどなのですが、コンピュータのディスプレイに表示された資料を見ながら1つ
ずつTeraTermでアクセスしています。これを、一度にまとめてTeraTermを起動し
てログインまで行ってしまう「一括起動ツール(略称:いっきツール)」という
ものです。
ちょうどこれを作りはじめた時に、LMさんからTeraTermとポケ3との接続のこ
とで質問があったため、実験用に自宅のマシンにTeraTermをインストールしまし
た。このときの話題は、直接にはシリアル接続で、TCP/IPを使った会社の環境と
は条件が一致しませんが、でも、おかげで、自宅でも会社用のツールのデバッグ
ができるようになって(ほとんどしなかったけど)、ちょっとだけありがたかっ
たです。
このツールがほとんど完成する段になって、最後に困ったのが、アイコンはどう
しようか、ということでした。名称が名称なので、16x16の小さい方のアイコンは
ポケ3から「揆」の字のフォントを吸い出して、それに手を加えて完成させまし
た。フォントの吸い出しと加工に関しては、ちょうどこの年末年始のめざらさん
のところの掲示板でのやり取りが参考になったというか、そこでできたツールを
使って行いました。ちなみに、32x32のアイコンは「むしろばた」をイメージした
ものになっています。
#こだわってるなあ

ということで、相変わらずではあるのですが、みなさんあっての私、という日常
を送っているのでした。