|
|
|||||||||
|
|||||||||
|
|
*NW 44 - OpenTransport によりシリアル・ポートの I/O ハンドシェイク(96 年 11 月 27 日)Q: OpenTransport によりシリアル・ポートの I/O ハンドシェイクは、どのように指定し、どのように制御すればいいのですか?オプションの設定がよくわかりません。
A: OpenTransport ネイティブ・インタフェースが提供する +=====-========-========-========-========-========-========-========-========+ |ビット| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |バイト| | | | | | | | | |======+========+========+=====================================================| | 0 | | | | | | | | | |------+-----------------------------------------------------------------------| | 1 | | | | | DTR | CTS |XON/OFF |XON/OFF | | | | | | | 出力 | 入力 | 入力 | 出力 | |------+-----------------------------------------------------------------------| | 2 | XON 文字 | |------+-----------------------------------------------------------------------| | 3 | XOff 文字 | +==============================================================================+ 整数の上位ワード (16 ビット) は、1 つまたは複数の、次のようなビット・セットを含むビットマップです。 kOTSerialXOnOffInputHandshake = 1 kOTSerialXOnOffOutputHandshake = 2 kOTSerialCTSInputHandshake = 4 kOTSerialDTROutputHandshake = 8 最下位から 2 つ目のバイトは XOn 文字の値で、最下位バイトは XOff 文字の値です。 これらの値が 0 で、XOnOff ハンドシェイクがリクエストされているときは、XOff には ^S、XOn には ^Q というデフォルト値が使われます。
たとえば、XON/XOFF 入力ハンドシェイクを有効にし、XON 文字として、^Q の代わりに ^T を使うように指定するときは、次のようなオプション構造体を作成します。
TOption opt;
opt.len = kOTFourByteOptionSize;
opt.level = XTI_GENERIC;
opt.name = SERIAL_OPT_HANDSHAKE;
opt.value = OTSerialHandshakeData (kOTSerialXOnOffInputHandshake,
('T' & ~0x40),
// 通常は kOTSerialDefaultOnChar
kOTSerialDefaultOffChar);
OTIoctl(theSerialEndpoint, I_SetSerialXOffState, 1); // XOFF のステータスを ON に設定
OTIoctl(theSerialEndpoint, I_SetSerialXOn, 1); // 無条件に XON を送信
逆に、 OTIoctl(theSerialEndpoint, I_SetSerialXOff, 1); // 無条件に XOFF を送信
--Vinnie Moscaritolo [ Technical Q&A's : Communications & Collaboration : Networking : NW44 ] |
|