AIと戦って、あなたの人生のリスク診断 >>

お世話になります。ひさしぶりにRS232Cの仕事をやっていますが、
RTSの論理がわからなくなったので、教えて下さい。
通信しない状態で、RS232Cのケーブルで信号を見てるのですが、
TXDが、-10VなのにRTSが、+10Vになっています。
(これは、DELLPCのRS232Cポートの出力を見てます。)
RTSもTXDと同じく、-10Vになると思っていたのですが、違いますか。
また、PCに制御ラインを反転させる設定とかありましたでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (1件)

パソコンのシリアルはRS232CではなくEIA-574です。


まあRS232Cと言うと通じますが・・・。

論理は
RTSが+の時にモデムに送信許可を出力
CTSが+のときモデムから送信許可を入力
のはずです。
フロー制御しないときは両ピンを繋げときます。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QRS232Cのハードウェアフロー制御

TxD,RxD,DTR,DSR,GNDしか端子がない周辺機器を、
TxD,RxD,RTS,CTS,GNDしか端子のないホスト(マイコン)に繋ぎたいのですが・・

周辺機器側は、DTR/DSRフロー制御に対応し、
ホスト側は、RTS/CTSフロー制御に対応しています。

この場合、
機器側のDTRをホスト側のCTSに、
ホスト側のRTSを機器側のDSRに接続すると、
お互い問題なくハードウェアフロー制御ができるでしょうか??

(なぜ、RTS/CTSとDTR/DSRと、二つの種類があるのかがよく理解できないもので・・)

Aベストアンサー

>機器側のDTRをホスト側のCTSに、
>ホスト側のRTSを機器側のDSRに接続すると、
「確実に出来るか」と問われれば分かりませんが
そのような接続はたびたび有ります

>(なぜ、RTS/CTSとDTR/DSRと、二つの種類があるのかがよく理解できないもので・・)

DTR 装置正常で電源が入っていて通信ポートが開いていれば常にON
RTS DTR+受信バッファに余裕があって受信可能でON、バッファの残量が減るとOFF

の2種類です
因みに、片方しか無い場合の多くはRTSのみの機能になってる筈です

DTR:DataTerminalReady
RTS:Request to Send

http://www5a.biglobe.ne.jp/~NCPRO/
http://www.lightstone.co.jp/products/wedge/serial_commu08.htm

QRS232C 調歩同期のビットレート誤差について

RS232C 調歩同期のビットレート誤差は何%程度まで許容できるのでしょうか?
また、目安とその理由について教えて下さい。

SH4のプログラムを組んでいます。
例えば、パソコンとRS232C(調歩同期)通信を行う際のビットレートの設定で、SH4側のビットレート誤差は何%以内にするべきでしょうか?
クロック同期の場合は、「なるべく1%以内になるように」とマニュアルに記載があるのですが。。。

Aベストアンサー

まずは
データ長8ビット
パリティなし
ストップビット1

だとすると、シリアルデータは全部で10ビットです。

スタートビットから同期し、各ビットの中央でデータをサンプリングするなら、10番目のビットが50%以上ずれるとアウトです。つまり5%誤差ですね。

しかし世の中そううまくいきません。コントロールICによって違いますが、ビットレートの8倍や16倍で各データをサンプリングします。1ビットを8回や16回チェックしてるんですね。

ビットがHかLかを判断するのもいろいろですが、中央部数回分(8回サンプルなら3~4回程度)を多数決原理で判断するのが多いようです。とすると、せいぜい2.5%となります。

これに、クロック源の誤差も加味すると2%くらいが限度です。



CPUクロックからビットレートを生成する場合、ビットレートにあわせた変な周波数のクロック源でなければ0%なんて無理ですよね。実際は1%以内なら気にしませんし、大丈夫ですよ。

QRS232CのDTRの電流

RS232CのDTRを駆動電源として(レギュレータを介して)絶縁型のRS232CトランシーバICを駆動させようとしていますが、うまく動きません。DTRからの電圧を見ていると、7.5V出ていた部分がトランシーバICをつけると4.1Vに落ちます。ICの消費電流が100mAなので、DTRからの電流が足りないのでしょうか。

2006年頃のRS232C(D-sub9ピン端子)付きのノートPCを使っていますが、DTRの出力電流はどのくらいのmAまで取れるものでしょうか。

また、USB-RS232C変換ケーブルを使うと、DTRで使える電流は増えるものでしょうか?

よろしくお願いいたします。

Aベストアンサー

RS/EIA232x規格上、流せる電流の大きい側を制限する項目がある
(ノイズ放出軽減の為立ち上がり・立下り時間を不必要に鋭くしない、
短絡時の危険防止の為の電流制限)ので、
電源としては小さい電力しか取出せません。

数字はうろ覚えで不正確なので、厳密には規格の数字を確認して頂くとして、
大体のイメージとして...

・(DTR 出力の内部抵抗値の規定は存じませんが)電流が 1mA 取り出されると
端子電圧が 1V程度ドロップします。
・相手の内部抵抗は 5kΩ 程度、と想定されてます
・短絡電流が 10mA 程度に制限されています。

以上から、12V出力の時に 5~7mA 取出すと5~7V下がって7~5V程度となり、
レギュレータに与える電圧の下限に、というあたりが限界かと思います。
信号の出力電圧は規格上 +-5~15Vで、最低の 5Vだったりするとまず使えないでしょう。

>また、USB-RS232C変換ケーブルを使うと、DTRで使える電流は増えるものでしょうか?
「RS/EIA232x規格」である以上は増えないでしょう。

よくあったシリアルマウスは、信号線から電源を取って動作しますが、
その電流は 5mA 程度だそうです。

電流をかせぐ為に RTS も併用する手もあります。
単純に結ぶと、もし出力論理が不一致だと短絡しますから、
(といっても電流制限されるはずですが)
ダイオードで逆流防止した上で結ぶといいです。

が、
>ICの消費電流が100mAなので、
100mAには遠く及びません。

RS/EIA232x規格上、流せる電流の大きい側を制限する項目がある
(ノイズ放出軽減の為立ち上がり・立下り時間を不必要に鋭くしない、
短絡時の危険防止の為の電流制限)ので、
電源としては小さい電力しか取出せません。

数字はうろ覚えで不正確なので、厳密には規格の数字を確認して頂くとして、
大体のイメージとして...

・(DTR 出力の内部抵抗値の規定は存じませんが)電流が 1mA 取り出されると
端子電圧が 1V程度ドロップします。
・相手の内部抵抗は 5kΩ 程度、と想定されてます
・短絡電流が 10mA 程度に制限...続きを読む

QVB2005でWin32APIを用いてRS-232CのRTS信号を、デ

VB2005でWin32APIを用いてRS-232CのRTS信号を、データ送信中だけHIGHにさせるプログラムを作成中です。

色々調べて、Win32APIを使うことで、それらしい動作をさせるプログラムを作れることが分かり、色々調べてコーディングしたのですが、上手く動きません…。処理の流れは以下のようになっています。

(1) CreateFile()関数でCOMを開く。
  (CreateFile()の「フラグ」には"FILE_FLAG_OVERLAPPED"を指定)
(2) CreateEvent()関数にてイベントオブジェクトを作成。
(3) EscapeCommFunction()でRTS信号をHIGHに設定。
(4) WriteFile()関数でRS-232Cへデータを送信する。
※ここまでは、オシロスコープにて正しく動作していることを確認しています。

(5) データ送信完了を待つために、SetCommEvent()関数で"EV_TXEMPTY"イベントマスクをセット。
(6) WaitCommEvent()で送信完了を待つ。
  ⇒WaitCommEvent()関数が、データ送信完了を待たずに抜けてきてしまう(Falseがリターンされる)…。

(7) そこで、WaitForSingleObject()を使ってイベントハンドラが"シグナル状態"になるのを待つ。
  ⇒タイムアウトに"INFINITE"を指定すると、無限待ち状態に陥ってしまう。
  ⇒また、タイムアウトに"1000"を指定すると、約1秒後に"WAIT_TIMEOUT"が返ってきてしまう。



WriteFile()関数、そしてWaitCommEvent()関数の引数には、OVERLAPPED構造体へのポインタを渡しているのですが、思うように動いてくれません。
※Win32APIの関数宣言の記述方法(データ型など)が誤って、このようになっていたりするのでしょうか…

どなたかヒントでもお教えいただけると、大変助かります。

以上、よろしくお願いいたします。

VB2005でWin32APIを用いてRS-232CのRTS信号を、データ送信中だけHIGHにさせるプログラムを作成中です。

色々調べて、Win32APIを使うことで、それらしい動作をさせるプログラムを作れることが分かり、色々調べてコーディングしたのですが、上手く動きません…。処理の流れは以下のようになっています。

(1) CreateFile()関数でCOMを開く。
  (CreateFile()の「フラグ」には"FILE_FLAG_OVERLAPPED"を指定)
(2) CreateEvent()関数にてイベントオブジェクトを作成。
(3) EscapeCommFunction()でRTS信号をHIGHに設...続きを読む

Aベストアンサー

>SetCommEvent()関数で"EV_TXEMPTY"イベントマスク
多分 SetCommMask のTypeミスですよね?

実際送信監視をしたことはないのと扱ったのが
かなり昔の話なので間違ってる可能性ありますが
(更にVBは知りません)
(6)でGetLastErrorで戻りが ERROR_IO_PENDING になってませんか?
その場合送信中って判断しないといけなかったような
http://msdn.microsoft.com/ja-jp/library/cc429842.aspx

以下余談
本来の目的が良くわからないのですがもしフロー制御などのために
RTS信号使うのであればわざわざ自分でコントロールする必要ないはずです
(フロー制御としてRTSCTSを選択すれば勝手にやってくれるはず)

QCOMポート通信をモニターしたい

現在、PCと組み込み系の端末との間でRS-232C通信をさせています。このRS-232C通信のTXとRXのデータのタイミングなどをモニターできるソフトはありませんでしょうか?

現在RS-232C通信をさせているのですが、組み込み系の端末側にはTCP-RS232C通信変換のモジュールを取り付けていて、PC側もTCP-RS232C変換させるソフトを使用しています。


TCP-RS232C通信変換のモジュールはWIZNET社製のWIZ110SRというのを使用しています。

PC側ではTCP-RS232C通信変換ソフトでWIZNET社製のWIZ VSPというソフトを使用して、TCPで受けたデータをRS-232Cに変換して受信プログラムソフトに転送しています。


このPC側の受信ソフトとTCPへ変換する間のCOMポートの通信をモニターできるようなソフトというものはありませんでしょうか?

どうぞ、ご教授頂きますようお願い致します。

Aベストアンサー

PC自体のCOMポート(USB-Serial変換でも)なら、ソフトでどうにかできる場合もあるでしょうが……

ご使用の機器の場合、PCからはネットワーク端末に見える…のではないでしょうか?
ドライバでCOMポートとして見えるのですか?
# 後者ならソフトで何とかできる…かも知れません。

こちらの組み込み系開発ではラインアイ社の機器を使用しています。
http://www.lineeye.co.jp/html/product_le2500.html
http://www.lineeye.co.jp/html/product_le3500.html
などですね。
http://www.lineeye.co.jp/html/product_LE-200PS.html
http://www.lineeye.co.jp/html/product_LE-150PS.html
でも用途によっては十分かも知れません。
# 組み込み開発に使うのであれば1台あった方が何かと便利です。
# それなりに高機能なので…値段も結構しますけどね。


人気Q&Aランキング