第 4 章 リファレンス 17
4.4 構造体
1.SIO_CONFIG 構造体
ポートの初期化情報を設定する構造体です。
typedef struct {
unsigned long ulMode;
unsigned long ulLine;
unsigned long ulBps;
unsigned long ulParity;
unsigned long ulSbit;
unsigned long ulClen;
unsigned long ulBaseClock;
unsigned long ulSClockSelect;
unsigned long ulRClockSelect;
unsigned long ulClockOut;
unsigned long dwSchar;
unsigned long ulWriteTimeout;
unsigned long ulReadTimeout;
unsigned long ulEofChar;
unsigned long ulEofLength;
unsigned long ulRxEventTrigger;
unsigned long ulTxStartDelay;
unsigned long ulTxTerminateDelay;
unsigned long ulHalfDuplexPeriod;
void* lpCallbackProc;
unsigned long ulUserData;
} SIO_CONFIG, *PSIO_CONFIG;
メンバ 説明
調歩同期/キャラクタ同期を設定します。
識別子 内容
SIO_ASYNC16 調歩同期(X16 モード) SIO_ASYNC1 調歩同期(X1 モード)
SIO_MONOSYNC キャラクタ同期(Mono-Sync) SIO_BISYNC キャラクタ同期(Bi-Sync)
※調歩同期(X1 モード)は外部からクロックを入力して調歩同期通信を行う ものです。(ボーレートファクタ 1 になります)。
一般の調歩同期通信の場合は、SIO_ASYNC16 を指定してください。
キャラクタ同期の場合、同期解放処理を有効にするかどうかも本メンバで設 定します。(調歩同期/キャラクタ同期設定との OR で指定します。)
識別子 内容
SIO_OUTSYNC_DISABLE 同期解放処理を行いません。
SIO_OUTSYNC_ENABLE 同期解放処理を行います。
同期解放条件は特定の 1 文字パターンが何回連続し たかで設定されます。
ulMode
全二重/半二重(2 線式、4 線式)を設定します。
識別子 内容
ulLine
SIO_FULL_DUPLEX 全二重モード
© 2002, 2011 Interface Corporation. All rights reserved.
43
データラインの切り替えは
SioEnableTransmitter 関数により行います。
SIO_HALF_DUPLEX_AUTO1 半二重(自動制御 1)モード
RS-485 半二重通信の送受信ラインの切り替えを 自動的に行います。
半二重(自動制御 2)モード
RS-232C RS 信号を送信データと同期させま す。データ送信前に RS 信号を ON にし、
データ送信後 RS 信号を OFF にします。
SIO_HALF_DUPLEX_AUTO2
RS-485 RS-485 半二重通信の送受信ラインの 切り替えを自動的に行います。また C 信号を送信データと同期させます。デ ータ送信前に C 信号を ON にし、デー タ送信後 C 信号を OFF にします。
RS-485 半二重の場合、2 線式/4 線式の切り替えも本メンバで行います。
(全二重/半二重設定との OR で指定します。)
識別子 内容
SIO_WIRING_4WIRE 4 線式 SIO_WIRING_2WIRE 2 線式
<2 線式半二重>
下記のような接続で、T ラインのみ接続して送受信を行います。
<4 線式半二重>
下記のような接続で、2 線式と違い T ラインと R ラインを分けて半二重通信を行います。
ボーレート(bps)を設定します。
設定可能範囲は下記のとおりです。
調歩同期 4~128000 キャラクタ同期 80~327680 ulBps
パリティを設定します。
ulParity
識別子 内容
T:送信ライン SG:信号グランド R:受信ライン T:送信ライン SG:信号グランド
© 2002, 2011 Interface Corporation. All rights reserved.
44
SIO_NONE_PARITY パリティなし SIO_ODD_PARITY 奇数パリティ SIO_EVEN_PARITY 偶数パリティ ストップビット長を設定します。
識別子 内容
SIO_ONESTOPBIT 1 bit SIO_ONE5STOPBITS 1.5 bit SIO_TWOSTOPBITS 2 bit ulSbit
データ長(bit)を設定します。
設定可能範囲は 5~8 です。
ulClen
ボーレート基準クロックを設定します。
識別子 内容
SIO_CLK_14_7456 14.7456MHz SIO_CLK_9_8304 9.8304MHz SIO_CLK_4_096 4.096MHz SIO_CLK_12_288 12.288MHz ulBaseClock
送信クロックを内部/外部のどちらから入力するか指定します。
識別子 内容
SIO_SCLK_IN 送信クロックを内部にします。
RS-232C 送信クロックを ST2 端子から入力します。
SIO_SCLK_ST2
RS-485 送信クロックを ST 端子から入力します。
SIO_SCLK_RT 送信クロックを RT 端子から入力します。
ulSClockSelect
受信クロックを内部/外部のどちらから入力するか指定します。
識別子 内容
SIO_RCLK_IN 受信クロックを内部にします。
RS-232C 受信クロックを ST2 端子から入力します。
SIO_RCLK_ST2
RS-485 受信クロックを ST 端子から入力します。
SIO_RCLK_RT 受信クロックを RT 端子から入力します。
ulRClockSelect
クロックをコネクタの ST 端子から出力するかどうかの指定もします。
RS-485 半二重の場合のみ有効です。
識別子 内容
SIO_STCLK_NOOUT クロックを ST 端子から出力しません。
SIO_STCLK_OUT クロックを ST 端子から出力します(常時出力)。
SIO_STCLK_OUT_HANDSHAKE クロックを ST 端子から出力します(送信に同 期)
ulClockOut
同期キャラクタを設定します。
ulMode の設定により内容が異なります。
ulMode 内容
SIO_ASYNC16 SIO_ASYNC1
本パラメータは無効です
SIO_MONOSYNC 下位 8bit が同期キャラクタとなります。
SIO_BISYNC 上位 8bit が同期キャラクタ 1、下位 8bit が同期 キャラクタ 2 となります。
dwSchar
© 2002, 2011 Interface Corporation. All rights reserved.
45
予約です。0 を指定してください。
ulReadTimeout
同期解放条件の特定の 1 文字パターンを指定します。
設定可能範囲は 00h~FFh です。
一般的に同期解放パターンはマーク状態(FFh)を指定します。
SioSend 関数で同期解放文字は自動で付加されません。送信データに付加し てください。
ulEofChar
同期解放文字数を指定します。
設定可能範囲は 1~256 です。
例えば文字数を 2 として同期解放文字が連続した場合、2 文字までは受信デ ータとなり、それ以降は同期解放されて同期確立待ちとなり、その間のデー タは受信されません。
また、同期解放文字はデータとして受信されます。
ulEofLength
受信バッファトリガレベルを設定します。単位はバイトです。
受信バッファサイズがトリガレベルに達したとき、イベントが発生します。
ulRxEventTrigger
送信前切り替え時間を指定します。
(ulLine メンバが SIO_HALF_DUPLEX_AUTO1、SIO_HALF_DUPLEX_AUTO2 の場合 のみ有効)
設定範囲は 0 または 10~999[ms]です。
ulTxStartDelay
送信後切り替え時間を指定します。
(ulLine メンバが SIO_HALF_DUPLEX_AUTO1、SIO_HALF_DUPLEX_AUTO2 の場合 のみ有効)
設定範囲は 0 または 10~999[ms]です。
ulTxTerminateDelay
半二重送信処理呼び出し周期を指定します。
下記の値が設定可能です。
識別子 内容
SIO_PERIOD_10ms 10ms SIO_PERIOD_50ms 50ms SIO_PERIOD_100ms 100ms
半二重(自動制御 1、または自動制御 2)通信時、SioSend 関数が呼ばれると、
バッググラウンドで以下の手順を実行します。
下記処理の各フェーズを呼び出す周期を本メンバにより設定します。周期を 短くすることで半二重送信処理が短くなりますが、送信処理の負荷が高くな ります。
ulHalfDuplexPeriod
RS-232C の半二重送信処理 1.RS 信号を ON にします。
2.送信前切り替え時間待ちます。
3.通信コントローラにデータを書き込みます。
4.全データが回線に送出されるまで待ちます。
5.送信後切り替え時間待ちます。
6.RS 信号を OFF にします。
© 2002, 2011 Interface Corporation. All rights reserved.
46
RS-485 の半二重送信処理 1.データラインを送信に切り替えます。
2.自動制御 2 の場合 C 信号を ON にします。
3.送信前切り替え時間待ちます。
4.通信コントローラにデータを書き込みます。
5.全データが回線に送出されるまで待ちます。
6.送信後切り替え時間待ちます。
7.データラインを受信に切り替えます。
8.自動制御 2 の場合 C 信号を OFF にします。
コールバック関数へのポインタを指定します。
lpCallbackProc
ulUserData コールバック関数の第 2 引数に渡されるパラメータ(ユーザデータ)を指定 します。
© 2002, 2011 Interface Corporation. All rights reserved.
47