Palm Programmer's Laboratory
Palm OS Programmer's API Reference/70
この章の索引
- シリアル マネージャ データ構造体
- シリアル マネージャ定数
- シリアル マネージャ関数
- SrmClearErr
- SrmClose
- SrmControl
- SrmCustomControl
- SrmExtOpen
- SrmExtOpenBackground
- SrmGetDeviceCount
- SrmGetDeviceInfo
- SrmGetStatus
- SrmOpen
- SrmOpenBackground
- SrmPrimeWakeupHandler
- SrmReceive
- SrmReceiveCheck
- SrmReceiveFlush
- SrmReceiveWait
- SrmReceiveWindowClose
- SrmReceiveWindowOpen
- SrmSend
- SrmSendCheck
- SrmSendFlush
- SrmSendWait
- SrmSetReceiveBuffer
- SrmSetWakeupHandler
- シリアル マネージャ アプリケーション定義関数
70 シリアル マネージャ
この章はシリアル マネージャ API のための参照資源を提供します。
ヘッダ ファイル SerialMgr.h がシリアル マネージャ API を定義しています。ファイル SystemResources.h はいくつかのシリアル ポート定数を定義しています。シリアル マネージャについての追加情報は、Palm OS Programmer's Companion, vol. II,「通信」 の「シリアル通信」を参照してください。
シリアル マネージャ データ構造体 ^TOP^
DeviceInfoType 構造体 ^TOP^
目的
DeviceInfoType 構造体はシリアル デバイスについての情報を定義します。この構造体は SrmGetDeviceInfo() 関数によって返されます。
Prototype
typedef struct DeviceInfoType { UInt32 serDevCreator; UInt32 serDevFtrInfo; UInt32 serDevMaxBaudRate; UInt32 serDevHandshakeBaud; Char *serDevPortInfoStr; UInt8 reserved[8]; } DeviceInfoType; typedef DeviceInfoType *DeviceInfoPtr;
フィールド
- serDevCreator
- シリアル ドライバのための 4 文字の作成者 ID
- serDevFtrInfo
- このシリアル ハードウェアの特性を定義するフラグ。これらのフラグについての説明は Serial Capabilities Constans を参照してください。
- serDevMaxBaudRate
- このデバイスの最大ボー レート
- serDevHandshakeBaud
- このレートを超えるボー レートではハードウェア ハンドシェイクが推奨されます。
- serDevPortInfoStr
- シリアル ハードウェアまたは仮想デバイスの説明
SrmCtlEnum 列挙体 ^TOP^
目的
SrmCtlEnum 列挙体はシリアル制御操作を指定します。SrmControl 呼び出しの op パラメータにこれらの列挙体の 1 つを指定します。
Prototype
typedef enum SrmCtlEnum { srmCtlFirstReserved = 0, srmCtlSetBaudRate, srmCtlGetBaudRate, srmCtlSetFlags, srmCtlGetFlags, srmCtlSetCtsTimeout, srmCtlGetCtsTimeout, srmCtlStartBreak, srmCtlStopBreak, srmCtlStartLocalLoopback, srmCtlStopLocalLoopback, srmCtlIrDAEnable, srmCtlIrDADisable, srmCtlRxEnable, srmCtlRxDisable, srmCtlEmuSetBlockingHook, srmCtlUserDef, srmCtlGetOptimalTransmitSize, srmCtlSetDTRAsserted, srmCtlGetDTRAsserted, srmCtlSetYieldPortCallback, srmCtlSetYieldPortRefCon, srmCtlSystemReserved = 0x7000 srmCtlCustom = 0x8000, srmCtlLAST } SrmCtlEnum;
定数
- srmCtlSetBaudRate
- シリアル ハードウェアの現在のボー レートをセットします。
- srmCtlGetBaudRate
- シリアル ハードウェアの現在のボー レートを取得します。
- srmCtlSetFlags
- シリアル ハードウェアのための現在のフラグをセットします。Serial Settings Constants の中で説明されているセットからフラグを指定します。
- srmCtlGetFlags
- シリアル ハードウェアのための現在のフラグを取得します。
- srmCtlSetCtsTimeout
- ハードウェア ハンドシェイクのための現在の CTS タイムアウト値をセットします。
- srmCtlGetCtsTimeout
- ハードウェア ハンドシェイクのための現在の CTS タイムアウト値を取得します。
- srmCtlStartBreak
- RS-232 ブレイク信号をオンにします。呼び出し人には、信号をオン、オフし、信号が実行可能なブレイクを生成するのに十分なほど長くオンされていることを保証する責任があります。
- srmCtlStopBreak
- RS-232 ブレイク信号をオフにします。
- srmCtlStartLocalLoopback
- ローカル ループバック テストを開始します。
- srmCtlStopLocalLoopback
- ローカル ループバック テストを停止します。
- srmCtlIrDAEnable
- このシリアル ポートでの IrDA 通信を使用可能にします。
NOTE: VZ プロセッサで IrDA 通信を使用可能にすることはできません。
- srmCtlIrDADisable
- このシリアル ポートでの IrDA 通信を使用不可にします。
- srmCtlRxEnable
- (IrDA のための)レシーバを使用可能にします。
- srmCtlRxDisable
- (IrDA のための)レシーバを使用不可にします。
- srmCtlEmuSetBlockingHook
- フック(訳者注: 原文は hook)ルーチンの遮断をセットします。これはエミュレート モードのみで使用可能であり、実際のデバイスではサポートされません。
- srmCtlUserDef
- これは、サード-パーティ ハードウェア開発者がシリアル ドライバのハードウェア定義情報をセット、取得するために使用することができる、ユーザ定義関数です。この操作コードはドライバの適切な制御関数をそのユーザ定義操作コードと一緒に呼び出し、パラメータは直接シリアル ドライバに渡されます。この関数をハンドルしないシリアル ドライバは serErrBadParam エラーを返します。
srmCtlUserDef 操作コードは、New Serial Manager Feature Set Version 2 が満たされる場合、カスタム操作コードを定義することによって抑制されます。
- これは、サード-パーティ ハードウェア開発者がシリアル ドライバのハードウェア定義情報をセット、取得するために使用することができる、ユーザ定義関数です。この操作コードはドライバの適切な制御関数をそのユーザ定義操作コードと一緒に呼び出し、パラメータは直接シリアル ドライバに渡されます。この関数をハンドルしないシリアル ドライバは serErrBadParam エラーを返します。
- srmCtlGetOptimalTransmitSize
- ポートにデータ パックを伝送するのに最も効率の良いバッファサイズを問い合わせます。この操作コードが返すのはエラー(バッファが必要ない)、0 (バッファが必要だが、アプリケーションはバッファ サイズを選択できない)、または 0 より大きな数(推奨されるバッファ サイズ)です。
- srmCtlSetDTRAsserted
- DTR 信号を使用可能または使用不可にします。これはすべてのハードウェアでサポートされるわけではありません。
- srmCtlGetDTRAsserted
- ポートに DTR 信号が使用可能かそれとも使用不可かを問い合わせます。
- srmCtlSetYieldPortCallback
- あるポートがオープンになっているときに、シリアル マネージャが他のポートをオープンしようと試みた場合に呼び出される関数をセットします。この操作コードはシステムのみが使用します。
- srmCtlSetYieldPortRefCon
- ポート置換コールバック関数に渡すデータ。システムのみが使用します。
- srmCtlSystemReserved
- 0x7000 から 0x8000 までの予約操作コード。システムのみが使用します。
- srmCtlCustom
- 0x8000 より大きな予約操作コード。特定デイバスが使用します。
互換性
カスタム制御操作コードは、New Serial Manager Feature Set Version 2 と 4.0 New Feature Set Palm OS Programmer's API Reference/B の両方が満たされる場合にのみ、サポートされます。
SrmOpenConfigType 構造体 ^TOP^
SrmOpenConfigType 構造体はシリアル ポートをオープンするためのパラメータを指定します。この構造体は SrmExtOpen() にパラメータとして渡されます。
Prototype
typedef struct SrmOpenConfigType { UInt32 baud; UInt32 function; MemPtr drvrDataP; UInt16 drvrDataSize; UInt32 sysReserved1; UInt32 sysReserved2; } SrmOpenConfigType;
フィールド
- baud
- 接続をオープンするためのボー レート。ボー レートを要求しないシリアル ドライバはこのフィールドを無視します。
- function
- ポートがオープンされた理由。ポートをオープンするアプリケーションの作成者 ID または以下に示す値の 1 つを指定します。
- serFncUndefined
- 定義されていない機能。これはこのフィールドのデフォルト値です。
- serFncPPPSession
- PPP インターフェイスのために使用される接続。
- serFncSLIPSession
- SLIP セッションのために使用される接続。
- serFncDebugger
- デバッグ セッションのために使用される接続。
- serFncHotSync
- HotSync 操作のために使用される接続。
- serFncConsole
- デバッグ コンソールへの接続。
- serFncTelephony
- 電話ライブラリへの接続。
- function フィールドは、アプリケーションが使用している、異なるセットアップ タスクを実行する USB や Bluetooth などのプロトコルによって使用されます。RS-232 ドライバはこのフィールドを無視します。
- drvrDataP
- ドライバ指定データ ブロックへのポインタ。
- drvrDataSize
- drvrDataP によって指されるデータ ブロックのサイズ。
- sysReserved1
- 将来使用するために予約されています。
- sysReserved2
- 将来使用するために予約されています。
互換性
この構造体は、New Serial Manager Feature Set Version 2 と 4.0 New Feature Set の両方が満たされる場合にのみ、定義されます。
シリアル マネージャ定数 ^TOP^
Port Constants ^TOP^
SrmOpen(), SrmOpenBackground(), SrmExtOpen() または SrmExtOpenBackground() の中でオープンするポートを指定するとき、論理ポート定数、物理ポート定数、または仮想ポート定数のどれかを使用することができますが、論理ポート定数を使用できるときはそれを使用することが強く推奨されます。
論理シリアル ポート定数
定数 | 定数 | 説明 |
---|---|---|
serPortLocalHotSync | 0x8000 | 物理 HotSync ポート。シリアル マネージャは自動的にこのポートが USB または RS-232 のどちらかを検出します。 |
serPortCradlePort | 0x8000 | 選択されている(原文: Cradle)ポート。シリアル マネージャは自動的にこのポートが USB または RS-232 のどちらかを検出します。たいていのアプリケーションはポートとしてこの値を指定すべきです。 |
serPortIrPort | 0x8001 | IR ポート。これはプロトコルのサポートが無い生の IrDA です。 |
serPortConsolePort | 0x8002 | USB または RS-232 のどちらかであるデバッグ コンソール ポート。両方が使用可能な場合 USB が優先されます。 |
serPortCradleRS232Port | 0x8003 | 選択された(原文: cradle)RS-232 ポート。アプリケーションが RS-232 通信のみを使用することを保証したい場合にこのポートを指定します。 |
serPortCradleRS232Port | 0x8004 | 選択された(原文: cradle)USB ポート。アプリケーションが USB 通信のみを使用することを保証したい場合にこのポートを指定します。 |
互換性
USB ポートは、New Serial Manager Feature Set Version 2 が満たされる場合にのみ、サポートされます。
物理シリアル ポート定数
物理ポート定数は、デバイスの物理ハードウェアを参照する 4 文字の定数を指定します。物理ポート定数を使用することは推奨されません。なぜなら、それらが指定するハードウェアはある特定のデバイスでは存在しないかもしれないからです。
物理ポート | 値 | 説明 |
---|---|---|
sysFileCUart328 | 'u328' | 68328 UART を使用する選択された(原文: Cradle)ポート。このポートは、SrmControl() 呼び出しを使って RS-232 と IrDA モード間で切り替えることができます。 |
sysFileCUart328EZ | 'u8EZ' | 68328EZ UART を使用する選択された(原文: Cradle)ポート。このポートもまた RS-232 と IrDA モード間で切り替えることができます。 |
sysFileCUart650 | 'u650' | Palm Personal または Palm Professional デバイスのためのアップグレード カード上の IR ポートを指定します。このポートは SrmControl 呼び出しのように生の IR ポートを提供しますが、アップグレード カードを持つデバイス上にのみ存在するポートです。 |
仮想シリアル ポート定数
仮想ポート定数は、仮想ポートを同定する 4 文字の定数を指定します。仮想ポートはハードウェア インターフェイスをシミュレートします。仮想ポートは特定のハードウェアに結び付けられません。
仮想ポート | 値 | 説明 |
---|---|---|
sysFileCVirtIrComm | 'ircm' | IRComm プロトコルを使用する IrDA リンクを張る仮想シリアル ケーブル。これは、他の IRComm デバイスと通信するためにのみ使用することができます。 |
sysFileCVirtRfComm | 'rfcm' | RFCOMM (Bluetooth) 仮想ポート プラグ-イン。 |
sysFileCBtConnectPanelHelper | 'btcp' | Bluetooth 接続パネル ヘルパ アプリケーション。 |
互換性
sysFileCVirtIrComm 以外の仮想ポート定数は、New Serial Manager Feature Set Version 2 と 4.0 New Feature Set の両方が満たされ、かつ、5.0 New Feature Set が満たされない場合にのみ、定義されます。
Serial Capabilities Constants ^TOP^
シリアル能力定数フラグ(原文: serial capabilities constant flags)はシリアル ハードウェアの能力を説明します。これらのフラグは DeviceInfoType 構造体の serDevFtrInfo フィールドの中にセットされます。
定数 | 値 | 説明 |
---|---|---|
serDevCradlePort | 0x00000001 | シリアル ハードウェアは、Palm デバイスの選択された(原文: cradle)コネクタから、RS-232 シリアルを制御します。 |
serDevRS232Serial | 0x00000002 | シリアル ハードウェアは、RS-232 ライン ドライバを持ちます。 |
serDevIRDACapable | 0x00000004 | シリアル ハードウェアは、IR ライン ドライバを持ち、IrDA モード シリアル信号を生成します。 |
serDevModemPort | 0x00000008 | シリアル ハードウェアは、モデム接続をドライブします。 |
serDevCncMgrVisible | 0x00000010 | シリアル デバイス ポート名文字列は、接続パネルの中に表示されます。 |
serDevConsolePort | 0x00000020 | シリアル デバイスは、デフォルトのコンソール ポートです。 |
serDevUSBCapable | 0x00000040 | シリアル ハードウェアは、Palm デバイスの選択された(原文: cradle)コネクタから、USB シリアルを制御します。 |
互換性
USB ポートは、New Serial Manager Feature Set Version 2 が満たされる場合にのみ、サポートされます。
Serial Settings Constants ^TOP^
シリアル設定定数はさまざまなシリアル ハードウェア設定に関係するビット フラグを同定します。どの設定が使用されるかを制御するために、操作コード srmCtlSetFlags と一緒に SrmControl() を使用します。
定数 | 値 | 説明 |
---|---|---|
srmSettingsFlagStopBitsM | 0x00000001 | 停止ビットフィールドのためのマスク |
srmSettingsFlagStopBits1 | 0x00000000 | 1 停止ビット(デフォルト) |
srmSettingsFlagStopBits2 | 0x00000001 | 2 停止ビット |
srmSettingsFlagParityOnM | 0x00000002 | パリティ オンのためのマスク |
srmSettingsFlagParityOnEvenM | 0x00000004 | パリティ イーブン(偶数)のためのマスク |
srmSettingsFlagXonXoffM | 0x00000008 | Xon/Xoff フロー制御(実装されていません)のためのマスク |
srmSettingsFlagRTSAutoM | 0x00000010 | RTS 受信フロー制御のためのマスク。これはデフォルトです。 |
srmSettingsFlagCTSAutoM | 0x00000020 | CTS 伝送フロー制御のためのマスク |
srmSettingsFlagBitsPerCharM | 0x000000C0 | 文字ごとのビット(訳者補足: 数)のためのマスク |
srmSettingsFlagBitsPerChar5 | 0x00000000 | 文字ごとに 5 ビット |
srmSettingsFlagBitsPerChar6 | 0x00000040 | 文字ごとに 6 ビット |
srmSettingsFlagBitsPerChar7 | 0x00000080 | 文字ごとに 7 ビット |
srmSettingsFlagBitsPerChar8 | 0x000000C0 | 文字ごとに 8 ビット |
srmSettingsFlagFlowControlIn | 0x00000100 | 受信バッファがソフトウェア オーバラン(受信データの取りこぼし)するのを防ぎます。このフラグと srmSettingsFlagRTSAutoM がセットされているとき、これはデフォルトのケースですが、シリアル マネージャは RTS に、伝送デバイスが受信バッファが一杯になってもデータを送り続けるのを、防がせます。一旦アプリケーションがバッファからのデータを受け取ると、RTS はデータ受信を最下位するのを許可します。 |
この特性はソフトウェアがライン エラーをオーバラン(受信データの取りこぼし)するのを効果的に防ぎますが、RTS ラインが定義された CTS タイムアウト値よりも長くなる場合、伝送デバイス上で CTS タイムアウトを引き起こすかもしれません。 | ||
srmSettingsFlagRTSInactive | 0x00000200 | このフラグがセットされていて、かつ、srmSettingsFlagRTSAutoM がセットされていない場合、RTS は不活性(フロー(訳者補足: 制御)がオフ)の状態で保持されます。 |
Status Constants ^TOP^
状態定数はシリアル信号の状態に関係するビット フラグを同定します。これらは SrmGetStatus() 関数によって返されます。
定数 | 値 | 説明 |
---|---|---|
srmStatusCtsOn | 0x00000001 | CTS ラインがアクティブです。 |
srmStatusRtsOn | 0x00000002 | RTS ラインがアクティブです。 |
srmStatusDsrOn | 0x00000004 | DSR ラインがアクティブです。 |
srmStatusBreakSigOn | 0x00000008 | ブレイク信号がアクティブです。 |
Line Error Constants ^TOP^
ライン エラー定数はポート上で起こるかもしれないライン エラーに関係するビット フラグを同定します。これらは SrmGetStatus() 関数によって返されます。
定数 | 値 | 説明 |
---|---|---|
serLineErrorParity | 0x0001 | パリティ エラー |
serLineErrorHWOverrun | 0x0002 | ハードウェア オーバラン(受信データの取りこぼし) |
serLineErrorFraming | 0x0004 | フレーム エラー |
serLineErrorBreak | 0x0008 | ブレイク信号が発生 |
serLineErrorHShake | 0x0010 | ライン ハンドシェイク エラー |
serLineErrorSWOverrun | 0x0020 | ソフトウェア オーバラン(受信データの取りこぼし) |
serLineErrorCarrierLost | 0x0040 | 信号落ちキャリアの検出 |
シリアル マネージャ関数 ^TOP^
SrmClearErr 関数 ^TOP^
目的
ライン エラーのポートをクリアします。
宣言されている場所
SerialMgr.h
Prototype
Err SrmClearErr ( UInt16 portId )
パラメータ
- → portID
- SrmOpen() または SrmExtOpen() から返されるポート ID
返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrNotSupported
- ポートはフォアグランドのポートではありません。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
SrmClose 関数 ^TOP^
目的
シリアル ポートをクローズし、そのポートを、フォアグランド ポートかバックグランド ポートかに関係なく、他のアプリケーションが使用できるようにします。
宣言されている場所
SerialMgr.h
Prototype
Err SrmClose ( UInt16 portId )
パラメータ
- → portId
- クローズするポートのポート ID
'返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrBadPort
- このポートは存在しません。
- serErrNotOpen
- シリアル ポートはオープンしていません。
- serErrNoDevicesAvail
- シリアル デバイスが見つかりませんでした。
コメント
フォアグランド ポートがクローズされようとしていて、かつ、バックグランド ポートが存在する場合、他のフォアグランド ポートがオープンされない限り、バックグランド ポートにアクセスが行きます。
フォアグランド ポートがクローズされようとしていて、かつ、置き換えられるポートが存在する場合、他のフォアグランド ポートがオープンされてその置き換えられるポートがさらに置き換えられない限り、その置き換えられるポートにアクセスが行きます。フォアグランド ポートがクローズされようとしているときに、置き換えられるポートとバックグランド ポートの両方が存在する場合、置き換えられるポートがバックグランド ポートよりも優先されます。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
参照
SrmOpen(), SrmOpenBackground()
SrmControl 関数 ^TOP^
目的
シリアル制御関数を実行します。
宣言されている場所
SerialMgr.h
Prototype
Err SrmControl ( UInt16 portId, UInt16 op, void *valueP, UInt16 *valueLenP )
パラメータ
- → portID
- SrmOpen() または SrmExtOpen() から返されるポート ID
- → op
- 実行される制御操作。SrmCtlEnum 列挙体の 1 つを指定します。
- ←→ valueP
- 操作のために使用される値へのポインタ。詳細はコメントを参照してください。
- ←→ valueLenP
- *valueP のサイズへのポインタ。詳細はコメントを参照してください。
返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrBadParam
- 無効な操作コードが指定されました。
- serErrBadPort
- このポートは存在しません。
- serErrNotOpen
- シリアル ポートはオープンされていません。
- serErrNoDevicesAvail
- シリアル デバイスが見つかりませんでした。
- serErrNotSupported
- 指定された操作コードは現在のコンフィグレーションではサポートされません。
コメント
表 70.1 は各操作コードの valueP と valueLenP パラメータに渡されるものを示しています。リストに挙がっていない制御コードはこれらのパラメータを使用しません。制御コードの完全なリストは、SrmCtlEnum を参照してください。
操作コード | パラメータ |
---|---|
srmCtlSetBaudRate | → valueP = UInt32 へのポインタ(ボー レート) → valueLenP = UInt32 のサイズへのポインタ |
srmCtlGetBaudRate | ← valueP = UInt32 へのポインタ(ボー レート) ← valueLenP = UInt16 へのポインタ |
srmCtlSetFlags | → valueP = UInt32 へのポインタ(ビット フィールド: Serial Settings Constants を参照してください) → valueLenP = sizeof(UInt32) へのポインタ |
srmCtlGetFlags | ← valueP = UInt32 へのポインタ(ビット フィールド) ← valueLenP = UInt16 へのポインタ |
srmCtlSetTimeout | → valueP = UInt32 へのポインタ(タイムアウト値) → valueLenP = sizeof(UInt32) へのポインタ |
srmCtlGetTimeout | ← valueP = UInt32 へのポインタ(タイムアウト値) ← valueLenP = UInt16 へのポインタ |
srmCtlUserDef | ←→ valueP = シリアルまたは仮想ポートに渡されるポインタ ←→ valueLenP = sizeof(UInt32) へのポインタ シリアル ドライバのために、これらのポインタはドライバの制御関数に渡され、関数の返り時には関数の返り値を(もしあれば)保持します。 |
srmCtlGetOptimalTransmitSize | ← valueP = UInt32 へのポインタ ← valueLenP = sizeof(UInt32) へのポインタ SrmControl によってエラーが返される場合、バッファリングは行われるべきではありません。valueP が 0 を指す場合。バッファリングが用供されますが、伝送アプリケーションはバッファ サイズを決定することはできません。valueP が 0 よりも大きな数を指す場合、この数のバイト数のブロックにデータを送ろうと試みます。この数がこのデバイス特有の最も効率の良いブロック サイズです。 |
srmCtlSetDTRAsserted | → valueP = DTR を使用可能または使用不可のどちらかに指定するブール値へのポインタ → valueLenP = sizeof(Boolean) へのポインタ |
srmCtlGetDTRAsserted | ← valueP = DTR が使用可能かどうかを示すブール値へのポインタ ← valueLenP = UInt16 へのポインタ |
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
参照
SrmCustomControl 関数 ^TOP^
目的
カスタム シリアル制御関数を実行します。
宣言されている場所
SerialMgr.h
Prototype
Err SrmCustomControl ( UInt16 portId, UInt16 opCode, UInt32 creator, void *valueP, UInt16 *valueLenP )
パラメータ
- → portID
- SrmOpen() または SrmExtOpen() から返されるポート ID
- → opCode
- 実行される操作コード。操作コードは srmCtlCustom よりも大きくなければなりません。
- → creator
- 操作コードを定義するデバイスの作成者 ID。作成者 ID と操作コードの組み合わせは実行される操作を一意に同定します。
- ←→ valueP
- 操作のために使用される値へのポインタ。
- ←→ valueLenP
- *valueP のサイズへのポインタ。
返り値
この関数は、仮想ドライバがそのドライバ特有の制御コードを作成するための機構であり、シリアル マネージャを使用するインターフェイスを持つ新しいテクノロジをサポートすることを可能にするものです。
この関数は単純に opCode と valueP パラメータをポートのための仮想ドライバに転送します。仮想ドライバは、opCode または valueP の中の入力が無効の場合、それ自身のエラー コードを返すかもしれません。
互換性
New Serial Manager Feature Set Version 2 と 4.0 New Feature Set の両方が満たされる場合にのみ、実装されます。
参照
SrmExtOpen 関数 ^TOP^
目的
フォアグランド ポート接続を指定されたコンフィグレーションと一緒にオープンします。
宣言されている場所
SerialMgr.h
Prototype
Err SrmExtOpen ( UInt32 port, SrmOpenConfigType *configP, UInt16 configSize, UInt16 *newPortIdP )
パラメータ
- → port
- オープンされる 4 文字のポート名('ircm' や 'u328' など)または論理ポート番号。(Port Constants を参照してください。)
- → configP
- シリアル ポートのプロパティを指定するコンフィグレーション構造体へのポインタ。(SrmOpenConfigType を参照してください。)
- → configSize
- configP によって指されるコンフィグレーション構造体のサイズ。
- ← newPortIdP
- 他のシリアル マネージャ関数に渡されるポート ID を保持します。
返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrBadPort
- port パラメータは無効なポートを指定しています。
- serErrBadParam
- configP パラメータは NULL です。
- serErrAlreadyOpen
- シリアル マネージャはすでにオープンされたポートを持っています。
- memErrNotEnoughSpace
- ポートをオープンするのに使用できるメモリが十分にありませんでした。
コメント
必要とされるよりも長くポートをオープンさせた状態にしないでください。オープンされたシリアル ポートはデバイスのバッテリからより多くのエネルギーを消費します。
configP パラメータの中で指定される値は作成される接続のタイプに依存します。RS-232 接続では、目的ではなくボー レートを指定します。USB 接続では、ボー レートではなく目的を指定します。
新たにオープンされたポートはそのライン エラーをクリアし、デフォルトの CTS タイムアウトをセット(定数 srmDefaultCTSTimeout によって指定される)し、512 バイトのキューを配置し、1 停止ビット、文字ごとに 8 ビット、RTS、それにフロー制御を使用可能にします。受信キュー サイズを増加させるには、SrmSetReceiveBuffer() を使用します。シリアル ポートの設定を変更するには、SrmControl() を使用します。
互換性
New Serial Manager Feature Set Version 2 と 4.0 New Feature Set の両方が満たされる場合にのみ、実装されます。SrmExtOpen 関数は SrmOpen() 関数と置き換わります。
参照
SrmOpen(), SrmExtOpenBackground()
SrmExtOpenBackground 関数 ^TOP^
目的
指定されたコンフィグレーションと一緒にバックグランドでポートをオープンします。バックグランド ポートは、他のタスクが SrmOpen() または SrmExtOpen() 呼び出しでポートをオープンすると、制御を譲ります。
宣言されている場所
SerialMgr.h
Prototype
Err SrmExtOpenBackground ( UInt32 port, SrmOpenConfigType *configP, UInt16 configSize, UInt16 *newPortIdP )
パラメータ
- → port
- オープンされる物理または論理ポート番号。追加情報は、Port Constants を参照してください。
- → configP
- シリアル ポートのプロパティを指定するコンフィグレーション構造体へのポインタ。SrmOpenConfigType を参照してください。
- → configSize
- configP によって指されるコンフィグレーション構造体のサイズ。
- ← newPortIdP
- 他のシリアル マネージャ関数に渡されるポート ID を保持します。
返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrAlreadyOpen
- ポートはすでにバックグランドでオープンされています。
- serErrBadPort
- このポートは存在しません。
- serErrNotSupported
- このタイプのポートはバックグランドでオープンすることができません。
- serErrBadParam
- configP パラメータは NULL です。
- memErrNotEnoughSpace
- ポートをオープンするのに使用できるメモリが十分にありませんでした。
コメント
この関数は、他のタスクがポートを使用していないときだけデータを受信するためにシリアル デバイスを使用するタスクをサポートするために、提供されます。
他のタスクがフォアグランド接続をオープンした結果としてバックグランド ポートが強制的にハードウェアの制御を放棄させられた場合、バックグランド ポートのためのすべてのバッファは消去されます。このアクティブなタスク(訳者補足: フォアグランド タスク)がポートをクローズした後に、ポートのアクティブな制御はバックグランド タスクに返されます。ただ 1 つのタスクのみがポートのバックグランドでの所有者になれます。
バックグランド ポートは機能を制限されることに注意してください; それらはデータを受信し、そのポートを所有しているクライアントに何のデータが受信されたかを知らせることしかできません。
configP パラメータに指定される値は作成される接続のタイプに依存します。RS-232 接続では、目的ではなくボー レートを指定します。USB 接続では、ボー レートではなく目的を指摘します。
互換性
New Serial Manager Feature Set Version 2 と 4.0 New Feature Set の両方が満たされる場合にのみ、実装されます。SrmExtOpenBackground 関数は SrmOpenBackground() 関数と置き換わります。
参照
SrmGetDeviceCount 関数 ^TOP^
目的
使用可能なシリアル でバースの数を返します。
宣言されている場所
SerialMgr.h
Prototype
Err SrmGetDeviceCount ( UInt16 *numOfDevicesP )
パラメータ
- ← numOfDevicesP
- シリアル デバイスの数が返されるアドレスへのポインタ
返り値
- errNone
- エラーはありません。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
参照
SrmGetDeviceInfo() 関数 ^TOP^
目的
シリアル デバイスについての情報を返します。
宣言されている場所
SerialMgr.h
Prototype
Err SrmGetDeviceInfo ( UInt32 deviceID, DeviceInfoType *deviceInfoP )
パラメータ
- → deviceID
- 情報を取得されるシリアル デバイスの ID。0 ベースのインデックス(0, 1, 2, ...)、SrmOpen() や SrmExtOpen() によって返される有効なポート ID、または 4 文字のポート名('u328', 'u650' や 'ircm' など)を渡すことができます。Port Constants を参照してください。
- ← deviceInfoP
- デバイスについての情報が返される DeviceInfoType 構造体へのポインタ。
返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrBadPort
- このポートは存在しません。
- serErrNoDevicesAvail
- シリアル マネージャはいずれのシリアル デバイスも見つけることができませんでした。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
参照
SrmGetStatus 関数 ^TOP^
目的
シリアル ハードウェアについての状態情報を返します。
宣言されている場所
SerialMgr.h
Prototype
Err SrmGetStatus ( UInt16 portId, UInt32 *statusFieldP, UInt16 *lineErrsP )
パラメータ
- → portID
- SrmOpen() または SrmExtOpen() から返されるポート ID
- ← statusFieldP
- ポートのハードウェア状態情報が返されるアドレスへのポインタ。これは {[goto Status Constants,Status Constants}} で説明されているフラグを使用する 32 ビットのフィールドです。
- ← lineErrsP
- ポートのライン エラーの数(番号)が返されるアドレスへのポインタ。ライン エラー フラグは Line Error Constants で説明されています。
返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrBadPort
- このポートは存在しません。
- serErrNotSupported
- ポートは置き換えられたポートです。(訳者補足: アクティブでないポートと言いたいと思われる。)
- serErrNoDevicesAvail
- シリアル デバイスは見つかりませんでした。
コメント
通常、SrmGetStatus は、送信と受信関数のどれかが serErrLineErr エラー コードを返した場合に、ポートのライン エラーを取得するために呼び出されます。
互換性
- → portID
- SrmOpen() または SrmExtOpen() から返されるポート ID
SrmOpen 関数 ^TOP^
目的
フォアグランド ポートを、指定されたポート名または論理ポート番号と一緒に、オープンします。
宣言されている場所
SerialMgr.h
Prototype
Err SrmOpen ( UInt32 port, UInt32 baud, UInt16 *newPortIdP )
パラメータ
- → port
- オープンされるポートの 4 文字のポート名またはポート番号。追加情報は Port Constants を参照してください。
- → baud
- ポートの初期ボー レート。
- ← newPortIdP
- 他のシリアル マネージャ関数に渡されるポート ID を保持します。
返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrAlreadyOpen
- このポートはすでにフォアグランドでオープンされています。
- serErrBadPort
- このポートは存在しません。
- memErrNotEnoughSpace
- ポートをオープンするために使用可能なメモリが十分にありませんでした。
コメント
ただ 1 つのアプリケーションまたはタスクのみが、いかなる場合でも、ある 1 つのシリアル ポートにアクセスを持つ可能性があります。
必要とされるよりも長くポートをオープンしたままにしておかないでください。オープンされたシリアル ポートはデバイスのバッテリからより多くのエネルギーを消費します。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
New Serial Manager Feature Set Version 2 が満たされる場合にのみ、SrmOpen 関数は SrmExtOpen() 関数によって置き換えられます。SrmOpen の下位互換はサポートされません。
参照
SrmOpenBackground 関数 ^TOP^
目的
タスクがポートをオープン、初期化、使用することを許可します。しかし、他のタスクが SrmOpen() 呼び出しを使ってポートをオープンすると、そのポートの制御を譲ります。
宣言されている場所
SerialMgr.h
Prototype
Err SrmOpenBackground ( UInt32 port, UInt32 baud, UInt16 *newPortIdP )
パラメータ
- → port
- オープンされるポートの 4 文字のポート名または論理ポート番号。追加情報は、Port Constants を参照してください。
- → boud
- ポートの初期ボー レート。
- ← newPortId
- 他のシリアル マネージャ関数に渡されるポート ID を保持します。
返り値
- errNone
- エラーはありません。
- serErrAlreadyOpen
- serErrAlreadyOpen
- このポートはすでにバックグランドでオープンされています。
- serErrBadPort
- このポートは存在しません。
- memErrNotEnoughSpace
- ポートをオープンするのに使用可能なメモリが十分にありませんでした。
コメント
この関数は、他のタスクがポートを使用していないときだけデータを受信するためにシリアル デバイスを使用するタスクをサポートするために、提供されます。
他のタスクがフォアグランド接続をオープンした結果としてバックグランド ポートが強制的にハードウェアの制御を放棄させられた場合、バックグランド ポートのためのすべてのバッファは消去されます。このアクティブなタスク(訳者補足: フォアグランド タスク)がポートをクローズした後に、ポートのアクティブな制御はバックグランド タスクに返されます。ただ 1 つのタスクのみがポートのバックグランドでの所有者になれます。
バックグランド ポートは機能を制限されることに注意してください; それらはデータを受信し、そのポートを所有しているクライアントに何のデータが受信されたかを知らせることしかできません。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
New Serial Manager Feature Set Version 2 が満たされる場合、SrmOpenBackground() 関数は SrmExtOpenBackground() によって置き換えられます。SrmOpenBackground() の下位互換はサポートされません。Palm OS Cobalt Feature Set が満たされる場合、この関数は実装されません。
SrmPrimeWakeupHandler 関数 ^TOP^
目的
ウェイクアップ ハンドラ関数の呼び出しを引き起こす受信されるバイト数をセットします。
宣言されている場所
SerialMgr.h
Prototype
Err SrmPrimeWakeupHandler ( UInt16 portId, UInt16 minBytes )
パラメータ
- → portID
- SrmOpen() または SrmExtOpen() から返されるポート ID
- → minBytes
- ウェイクアップ ハンドラが呼び出される前に受信されなければいけないバイト数。通常、これは 1 にセットされます。
返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrBadPort
- このポートは存在しません。
- serErrNotOpen
- ポートはオープンされていません。
- serErrNoDevicesAvail
- シリアル デバイスは見つかりませんでした。
コメント
この関数は SrmSetWakeupHandler() によってインストールされたウェイクアップ ハンドラに十分なデータを与えます。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
参照
Sr,Receive 関数 ^TOP^
目的
指定された数のバイトを受信します。
宣言されている場所
SerialMgr.h
Prototype
UInt32 SrmReceive ( UInt16 portId, void *rcvBufP, UInt32 count, Int32 timeout, Err *errP )
パラメータ
- → portID
- SrmOpen() または SrmExtOpen() から返されるポート ID
- ← rcvBufP
- 受信されたデータが返されるバッファへのポインタ。
- → count
- データ バッファの長さ(バイト数)。これは受信されるバイトの数を指定します。
- → timeout
- シリアル マネージャが要求されたデータのブロックを受信するために待つ時間の量(システム チェック数(原文: in ticks))。タイムアウトの終了時点で、その時間までに受信されたデータが返されます。
- ← errP
- エラー コード。
返り値
実際に受信されたデータのバイト数を返します。
コメント
errP に収められて返されるエラー コードは以下の通りです。
- errNone
- エラーはありません。
- serErrBadPort
- このポートは存在しません。
- serErrNotOpen
- ポートはオープンされていません。
- serErrTimeOut
- 指定されたタイムアウト期間内にデータを受信することができませんでした。
- serErrConfigurationFailed
- ポートはコンフィグレーションする時間を必要としていて、コンフィグレーションは失敗しました、
- serErrNotSupported
- ポートはフォアグランド ポートではありません。
- serErrConfigurationFailed
- ポートはポート自身をコンフィグレーションできませんでした。
- serErrLineErr
- データ受信中にライン エラーが起こりました。正確なライン エラーを取得するには SrmGetStatus() を使用します。
- serErrNoDevicesAvail
- シリアル デバイスが見つかりませんでした。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
参照
SrmReceiveCheck(), SrmReceiveFlush(), SrmReceiveWait()
SrmReceiveCheck 関数 ^TOP^
目的
受信 FIFO(訳者注: FIFO 型メモリのこと)をチェックし、シリアル受信キュー(訳者注: FIFO 型メモリのこと)の中のバイト数を返します。
宣言されている場所
SerialMgr.h
Prototype
Err SrmReceiveCheck ( UInt16 portId, UInt32 *numBytesP )
パラメータ
- → portID
- SrmOpen() または SrmExtOpen() から返されるポート ID
- ← numBytesP
- 受信キューの中のバイト数
返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrBadPort
- このポートは存在しません。
- serErrNotOpen
- ポートはオープンされていません。
- serErrLineErr
- ライン エラーが起こりました。正確なライン エラーを取得するには SrmGetStatus() を使用します。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
参照
SrmReceive(), SrmReceiveFlush(), {[goto SrmReceiveWait,SrmReceiveWait()}}
SrmReceiveFlush 関数 ^TOP^
目的
受信 FIFO(訳者注: FIFO 型メモリ)を消去します。
宣言されている場所
SerialMgr.h
Prototype
Err SrmReceiveFlush ( UInt16 portId, Int32 timeout )
パラメータ
- → portID
- SrmOpen() または SrmExtOpen() から返されるポート ID
- → timeout
- タイムアウト値(システム チェック数(原文: in ticks))
返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrBadPort
- このポートは存在しません。
- serErrNotOpen
- ポートはオープンされていません。
- serErrNotSupported
- ポートはフォアグランド ポートではありません。
- serErrNoDevicesAvail
- シリアル デバイスは見つかりませんでした。
コメント
timeout 値は、この関数がポートを消去した後に消去されるデータがさらに現れるかどうか確認するため、この関数を一定のシステム チェック回数分だけ強制的に待たせます。タイムアウト期間内に追加のデータが到着した場合、ポートは再び消去され、タイムアウト カウンタはリセットされて再度待機します。関数は、最後のポートの消去から完全なタイムアウト期間の間ポートによってバイトが受信されないことが確認された後にのみ、終了します。この待ち状態を避けるためには、タイムアウト期間に 0 を指定します。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
参照
SrmReceive(), SrmReceiveCheck(), SrmReceiveWait()
SrmReceiveWait 関数 ^TOP^
目的
いくつかのバイト数のデータがシリアル受信キューに到着するまで待ち、それから返ります。
宣言されている場所
SerialMgr.h
Prototype
Err SrmReceiveWait ( UInt16 portId, UInt32 bytes, Int32 timeout )
パラメータ
- → portID
- SrmOpen() または SrmExtOpen() から返されるポート ID
- → bytes
- 待つためのバイト数。
- → timeout
- タイムアウト値(システム チェック数(原文: in ticks))
返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrBadPort
- このポートは存在しません。
- serErrNotOpen
- ポートはオープンされていません。
- serErrTimeOut
- 指定されたタイムアウト期間内にデータを受信することができなかった。
- serErrNotSupported
- ポートはフォアグランド ポートではありません。
- serErrBadParam
- バイト数パラメータが受信キューのサイズを超えています。受信キューのサイズを増やすには SrmSetReceiveBuffer() を使用します。
- serErrLineErr
- データの受信中にライン エラーが起こりました。正確なライン エラーを取得するには SrmGetStatus() を使用します。
- serErrNoDevicesAvail
- シリアル デバイスは見つかりませんでした。
コメント
この関数がエラー無しで返る場合、アプリケーションは受信キューの中に現在あるバイト数をチェックする(SrmReceiveCheck() を使用して)こともできますし、バッファを指定して SrmReceive() を呼び出すことによってデータを受信することもできます。
ウェイクアップ ハンドラの内部から SrmReceiveWait を呼び出さないでください。そうした場合、serErrTimeOut エラーが返されます。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
参照
SrmReceive(), SrmReceiveCheck(), SrmReceiveFlush()
SrmReceiveWindowClose 関数 ^TOP^
目的
シリアル マネージャの受信キューへの直接のアクセスをクローズします。
宣言されている場所
SerialMgr.h
Prototype
Err SrmReceiveWindowClose ( UInt16 portId, UInt32 bytesPulled )
パラメータ
- → portID
- SrmOpen() または SrmExtOpen() から返されるポート ID
- → bytesPulles
- アプリケーションが受信キューから読み込むバイト数。
返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrBadPort
- このポートは存在しません。
- serErrNotOpen
- ポートはオープンされていません。
- serErrNotSupported
- ポートはフォアグランド ポートではありません。
- serErrNoDevicesAvail
- シリアル デバイスは見つかりませんでした。
コメント
アプリケーションが受信キューから受け取ることを必要としているのと同じ量のバイトを読み込んだ、または、使用可能なすべてのバイトを読み込んだとき、この関数を呼び出します。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
参照
SrmReceiveWindowOpen 関数 ^TOP^
目的
シリアル マネージャの受信キューへの直接のアクセスを提供します。
宣言されている場所
SerialMgr.h
Prototype
Err SrmReceiveWindowOpen ( UInt16 portId, UInt8 **bufPP, UInt32 *sizeP )
パラメータ
- → portID
- SrmOpen() または SrmExtOpen() から返されるポート ID
- ← bufPP
- 受信バッファへのポインタへのポインタ
- ← sizeP
- バッファの使用可能なバイト数
返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrBadPort
- このポートは存在しません。
- serErrNotOpen
- ポートはオープンされていません。
- serErrNotSupported
- ポートはフォアグランド ポートではありません。
- serErrLineErr
- キューの中のデータはライン エラーを保持しています。
- serErrNoDevicesAvail
- シリアル デバイスは見つかりませんでした。
コメント
この関数は、シリアル マネージャによってコピーされたバッファを削除するために、アプリケーションにシリアル マネージャの受信キューへの直接のアクセスをさせます。このアクセスは、受信データへの「バック ドア」ルートです。バッファからデータを受信した後、アプリケーションは SrmReceiveWindowClose() を呼び出さなくてはなりません。
受信バッファ全体を空にすることを望むアプリケーションは、返されるバッファ サイズが 0 になるまで、繰り返し SrmReceiveWindowOpen と SrmReceiveWindowClose 関数を呼び出すべきです。
重要: 一旦アプリケーションが SrmReceiveWindowOpen を呼び出すと、SrmReceive() または SrmReceiveWait() を呼び出す通常の方法でデータを受信しようと試みるべきではありません。なぜなら、これらの関数は受信キューへの直接のアクセスと衝突するからです。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
参照
SrmSend 関数 ^TOP^
目的
データのブロックを指定されたポートから送ります。
宣言されている場所
SerialMgr.h
Prototype
UInt32 SrmSend ( UInt16 portId, const void *bufP, UInt32 count, Err *errP )
パラメータ
- → portID
- SrmOpen() または SrmExtOpen() から返されるポート ID
- → bufP
- 送られるデータへのポインタ
- → count
- データ バッファの長さ。バイト数。
- ← errP
- エラー コード。詳細はコメントを参照してください。
返り値
実際に送られたデータのバイト数を返します。
コメント
SrmSend が返るとき、errP パラメータに収められて返される値をチェックすべきです。errNone の場合、データ バッファ全体が送られました。errNone ではない場合、結果はエラーが起こる前に送られたバイト数になります。起こり得るエラーは以下の通りです。
- errNone
- エラーはありません。
- serErrBadPort
- このポートは存在しません。
- serErrTimeOut
- 指定された CTS タイムアウト期間内にデータを送ることができませんでした。
- serErrNoDevicesAvail
- シリアル デバイスは見つかりませんでした。
- serErrConfigurationFailed
- ポート コンフィグレーションは失敗しました。
- serErrNotSupported
- ポートはフォアグランド ポートではありません。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
参照
SrmSendCheck(), SrmSendFlush(), SrmSendWait()
SrmSendCheck 関数 ^TOP^
目的
伝送 FIFO をチェックし、送られずに残ったバイト数を返します。
宣言されている場所
SerialMgr.h
Prototype
Err SrmSendCheck ( UInt16 portId, UInt32 *numBytesP )
パラメータ
- → portID
- SrmOpen() または SrmExtOpen() から返されるポート ID
- ← numBytesP
- FIFO キューの中に残されたバイト数
返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrBadPort
- このポートは存在しません。
- serErrNotOpen
- ポートはオープンされていません。
- serErrNotSupported
- ポートはフォアグランド ポートではありません。
- serErrNoDevicesAvail
- シリアル デバイスは見つかりませんでした。
コメント
すべてのシリアル マネージャがこの特性(訳者注: この関数?)をサポートするわけではありません。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
参照
SrmSend(), SrmSendFlush(), SrmSendWait()
SrmSendFlush 関数 ^TOP^
目的
伝送 FIFO を消去します。
宣言されている場所
SerialMgr.h
Prototype
Err SrmSendFlush ( UInt16 portId )
パラメータ
- → portID
- SrmOpen() または SrmExtOpen() から返されるポート ID
返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrBadPort
- このポートは存在しません。
- serErrNotOpen
- ポートはオープンされていません。
- serErrNotSupported
- ポートはフォアグランド ポートではありません。
- serErrNoDevicesAvail
- シリアル デバイスは見つかりませんでした。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
参照
SrmSend(), SrmSendCheck(), SrmSendWait()
SrmSendWait 関数 ^TOP^
目的
前のデータが伝送 FIFO から送られるまで待ち、それから返ります。
宣言されている場所
SerialMgr.h
Prototype
Err SrmSendWait ( UInt16 portId )
パラメータ
- → portID
- SrmOpen() または SrmExtOpen() から返されるポート ID
返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrBadPort
- このポートは存在しません。
- serErrNotOpen
- ポートはオープンされていません。
- serErrTimeOut
- CTS タイムアウト期間内にデータを送ることができませんでした。
- serErrNotSupported
- ポートはフォアグランド ポートではありません。
- serErrNoDevicesAvail
- シリアル デバイスは見つかりませんでした。
コメント
ソフトウェアが SrmSend() によってすべてのデータが伝送されたときを検出する必要がある場合、この関数を呼び出すことを考えてください。SrmSend 関数は、すべてのデータが伝送されるか、タイムアウトが起こるまで、(訳者補足: この関数を)ブロックします。それに続く SrmSendWait 呼び出しは、伝送される対象のすべてのデータ キューが伝送されるか、もう 1 つの CTS タイムアウトが起こる(CTS ハンドシェイクが使用可能になっている場合)まで、(訳者補足: その次のルーチン)をブロックします。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
参照
SrmSend(), SrmSendCheck(), SrmSendFlush()
SrmSetReceiveBuffer 関数 ^TOP^
目的
新しいバッファをシリアル マネージャの受信キューにインストールします。
宣言されている場所
SerialMgr.h
Prototype
Err SrmSetReceiveBuffer ( UInt16 portId, void *bufP, UInt16 bufSize )
パラメータ
- → portID
- SrmOpen() または SrmExtOpen() から返されるポート ID
- → bufP
- 新しい受信バッファへのポインタ。burSize が NULL の場合無視されます。
- → bufSize
- 新しい受信バッファのサイズ(バイト数)。このバッファを削除して、新しいデフォルトのバッファ(512 バイト)を割り当てるには、NULL を指定します。
返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrBadPort
- このポートは存在しません。
- serErrNotOpen
- ポートはオープンされていません。
- memErrNotEnoughSpace
- デフォルトのバッファを割り当てるのに十分なメモリがありません。
- serErrNoDevicesAvail
- シリアル デバイスは見つかりませんでした。
コメント
この関数に渡すバッファは、シリアル ポートをオープンしている間、割り当てを受けたままでいなければなりません。シリアル ポートをクローズする前に、bufP と bufSize 引数として NULL と一緒に SrmSetReceiveBuffer を呼び出すことによってデフォルトのキューに戻さなければなりません。
重要: アプリケーションは、ポートをクローズする前(または新しい受信キューを配置する前)に、デフォルトのバッファをインストールしなくてはなりません。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
SrmSetWakeupHandler 関数 ^TOP^
目的
ウェイクアップ ハンドラをインストールします。
宣言されている場所
SerialMgr.h
Prototype
Err SrmSetWakeupHandler ( UInt16 portId, WakeupHandlerProcPtr procP, UInt32 refCon )
パラメータ
- → portID
- SrmOpen() または SrmExtOpen() から返されるポート ID
- → procP
- WakeupHandlerProcPtr() 関数へのポインタ。ハンドラを削除するには NULL を指定します。
- → refCon
- ウェイクアップ ハンドラ関数に渡されるユーザ定義データ。これはポインタにもそれ以外にもなり得ます。
返り値
この関数は以下のエラー コードを返します。
- errNone
- エラーはありません。
- serErrBadPort
- このポートは存在しません。
- serErrNotOpen
- ポートはオープンされていません。
- serErrNoDevicesAvail
- シリアル デバイスは見つかりませんでした。
コメント
ウェイクアップ ハンドラは、指定されたポート上に受信されるために準備されたデータがあるときならいつでも呼び出されることを望むアプリケーションの中の関数です。
ウェイクアップ ハンドラ関数は、SrmPrimeWakeupHandler() によって 0 よりも大きなバイト数を与えられるまで、アクティブにはなりません。ウェイクアップ ハンドラが呼び出されるたびに、それは再度呼び出されるために(SrmPrimeWakeupHandler によって)データを与えられなければなりません。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
参照
SrmPrimeWakeupHandler(), WakeupHandlerProcPtr()
シリアル マネージャ アプリケーション定義関数 ^TOP^
WakeupHandlerProcPtr 関数 ^TOP^
目的
シリアル マネージャの割り込み関数によっていくつかのバイト数かが受信された後に呼び出されます。
宣言されている場所
SerialMgr.h
Prototype
void ( *WakeupHandlerProcPtr )( UInt32 refCon )
パラメータ
- → refCon
- SrmSetWakeupHandler() 関数から渡されるユーザ定義データ
返り値
返り値はありません。
コメント
このハンドラ関数は SrmSetWakeupHandler() 呼び出しによってインストールされます。それが呼び出された後に、SrmPrimeWakeupHandler() によってバイト数が指定されます。
重要: ウェイクアップ ハンドラは割り込み時の間に呼び出されるため、それらは SrmReceive() を含むいかなる Palm OS 関数も呼び出すことができません。そうした場合、いずれかの形でシステムをブロックすることになるかもしれません。ウェイクアップ ハンドラはまた、割り込み遅れを小さくするために、非常に短時間で終了するものであるべきです。
ウェイクアップ ハンドラの 2 つの共通な実装は以下のことを含みます。
- EvtWakeup()|Palm OS Programmer's API Reference/53 の呼び出し。これは、いずれかの返されるべき EvtGetEvent の保留を引き起こし、それから現在のアプリケーションに nilEvent を送ります。
- ブロックすることなしに受信キューへの直接のアクセスを取得するために SrmReceiveWindowOpen() と SrmReceiveWindowClose() を使用する。
互換性
New Serial Manager Feature Set Version 1 が満たされる場合にのみ、実装されます。
参照
SrmPrimeWakeupHandler(), SrmSetWakeupHandler()