RS-232Cシリアル通信の受信ソフト作りにあたって
不明なD-Sub9pinの1番(RLSD)関係で質問させて下さい。
Q1. RLSD信号を有効にするか無効にするかの設定はどうやってするのでしょうか?
MSDNヘルプを見ると、RLSD信号のON/OFF確認は、
MSD GetCommModemStatus()のMS_RLSD_ON
又は
WaitCommEvent()のEV_RLSD
辺りのようですが、RLSD信号を有効にするか否かの設定を
どこでするかがわかりません。
Q2.RLSD使用/未使用の受信方法について
RLSD使用時は、GetCommModemStatus()又はWaitCommEvent()で
RLSD信号がONになったのを確認したから直接ReadFile()だと思います。
さて、RLSD未使用時は、直接ReadFile()で宜しいのでしょうか?
(※非同期I/Oは使わず、受信するまでReadFile()ブロック)
<確認の背景>
RLSD未使用(又はGetCommProperties()ヘルプ COMMPROP構造体
dwSettableParamsでSP_RLSD未サポート)時、に
ClearCommError()取得COMSTAT構造体メンバのfRlsdHoldが1(RLSD信号待ち)
のまま受信できないといった事を避けたいです。
<環境>
IE:Visual Studio 2005 VC++(C言語風でWin32APIを直コール)
自開発OS:Windows XP Professional SP2
ターゲットOS:Windows 98/2000/XP(98は可能ならば)
RLSDはたしかCarrierDetect信号のことなので、
信号線がONであろうとOFFであろうとデータ送受信は出来ると思いますが…
A1.設定方法はないと思います
A2.WriteFileで送信されないだけであって、ReadFileは出来ると思います
(今手元に232Cな機器が無いので試してはいませんが…)
RLSDは、通常のRS232Cの通信で設定する用途の少ない信号だと思います。
故意に設定しなければ気にしなくていいと思います。
但し、モデムなどの機器と通信する場合に必要になる場合があります。
通りすがりさん、SHOMIさん、ITOさん
レスありがとうございます。
モデムは使わないので、RLSD結線無しで
送受信可能か試してみる予定です。
実際にソフト組み出すのはちょっと先の予定なので、
一旦済にしておきます。