Tech Note 11: HandEraデバイスを使う June 12, 2001
© NSB Corporation. All rights reserved. |
(Special thanks to Ron Glowka)
NS Basic/Palm バージョン1.12より、NSBHandEra共有ライブラリ(Shared Library)がHandEraの高画質スクリーン、バーチャル・シルクスクリーン、オーディオ機能のサポートを提供します。このドキュメントは、このライブラリのファンクションを解説します。この共有ライブラリの目的と用途を完全に理解するには、HandEra 330 Programmer's Companion および Programmer's Reference Manualを参照することをお勧めします。これらのマニュアルはHandEra SDKの一部として、次のサイトからダウンロードすることが可能です。
http://www.Handera.com/support/developsupport.asp
NSBHandEra共有ライブラリは、HandEra SDKファンクションの部分集合を提供します。このライブラリのファンクションの大部分は"wrapper(カバー)"であり、NSBasicからHandEra APIを呼べるようにしています。 HandEraのバーチャル・シルクスクリーン・ビットマップのカスタマイズ、およびオーディオ録音/再生機能のファンクションは、まだインプリメントされていません。
貴方のプログラムをテストするには、実際のHandEra 330を手に入れる必要はありません。ほとんどのファンクション(いくつかのオーディオファンクションは除く)は、HandEra ROMイメージと共に、HandEraから入手可能なPOSEの修正バージョンを使うことによって動作します。どちらのファイルもHandEraのDeveloper Supportページから入手可能です。
1. NS Basic/Palmインストーラによって、HandEra.INFファイルが \NSBasic\Lib に入れられます。さらにHandEra.prcが \NSBasic\download へ入れられますので、お使いのデバイスかPOSEにダウンロードして下さい。
2. このライブラリはNSBasicのLoadLibraryステートメントを使用して、読込まれなければなりません。ファンクションががプログラムの全体にわたって利用可能になるように、このステートメントはプログラムのStartup Codeに入れて下さい。ライブラリのファンクションに略した参照名を指定できるように、LoadLibraryステートメントはオプションである2つ目のパラメータを持っています。この参照名のために「NSBH」を、このドキュメントでは使用しています。例:
プログラムのStartup code:
Sub main() LoadLibrary "NSBHandera", "NSBH" End Sub
3. アプリケーションがHi-Resモードを使用する場合、Build...Optionsのチェックボックスをチェックして下さい。
4. High-resアイコンを持っている場合は、コンパイルの後にPalmRIを使ってそれらを.prcファイルに追加して下さい。PalmRIの手引きはTech Note 04aに含まれています。PalmRIは \program files\nsbasic に位置しています。
新しく作成しなければならないResTypeおよびRes IDは以下の表に示します。
ResType | Res ID | Notes |
2000 | Tbmp | 大アイコン: 32x32 イメージ |
2001 | Tbmp | 小アイコン: 24x14 イメージ |
2002 | Tbmp | 大アイコンの反転: 32x32 |
5. Additional HandEra Events: HandEra 330は4つの追加ボタンファンクションを持っています。(JogダイアルおよびAuxボタン)UIガイドラインによると、Jogボタンを押すことはキーボードのreturnキーを押すのと同じです。Auxボタンはescapeキーで、現フォームを終了する時に使用します。
さらにHandEraは、シルクスクリーンを最大化または最小化するために矢印が使われると、貴方のプログラムに一つのイベントを送ります。
HandEraボタン | GetEventType() | GetKey() |
Aux | 1 | 27 (escape) |
Jog Right | 1 | 13 (return) |
Jog Up | 5 | 12 |
Jog Down | 5 | 3 |
Silkscreen Changed | 24574 |
Version()ファンクションを除いて、全てのパラメーターおよび戻り値のデータタイプは整数(Integer)あるいは文字列(String)のいずれかです。-1の戻り値は、HandEraデバイスではないことを示します。全てのファンクションは、HandEra APIが使用される前にHandEra機能が利用可能であることを確認します。これは、HandEraデバイスを使用してなくても、任意のデバイス上でNSBHandEra共有ライブラリーの使用を可能にしています。もちろん、ライブラリのファンクションは意図しているようには実行されませんが、プログラムが止まることはないでしょう。
VersionNbr = NSBHandEra.Version()
NSBHandEra共有ライブラリのバージョン番号を戻します。
パラメータ: 無
戻り値: VersionNbr as Double
例
Dim VersionNbr as Double VersionNbr = NSBH.Version()
NSBHandEra.CompileInfo CompileDate, CompileTime
NSBHandEra共有ライブラリがコンパイルされた日時を戻します。CompileInfoを呼ぶ前 にCompileDateとCompileTime文字列変数を初期化しなければなりません。
パラメータ: CompileDate as String CompileTime as String
戻り値: 無
例
Dim CompileDate as String Dim CompileTime as String CompileDate = "mmm dd yyyy" '11 characters CompileTime = "hh:mm:ss" '8 characters NSBH.CompileInfo CompileDate, CompileTime
AdjVolumeSupported = NSBHandEra.AudioAdjVolumeSupported()
HandEraデバイスがAdjust Volume機能をサポートしている場合は1を、していない場合は0を戻します。
パラメータ: 無
戻り値: Answer as Integer.
例
Dim Answer as Integer Answer = NSBH.AudioAdjVolumeSupported()
DTMFSupported = NSBHandEra.AudioDTMFSupported()
HandEraデバイスがDTMF Play機能をサポートしている場合は1を、していない場合は 0を戻します。
パラメータ: 無
戻り値: Answer as Integer
例
Dim Answer as Integer Answer = NSBH.AudioDTMFSupported()
Volume = NSBHandEra.AudioGetMasterVolume()
HandEraのボリューム設定を戻します。
パラメータ: 無
戻り値: Volume as Integer(0 to 255)
例
Dim Volume as Integer Volume = NSBH.AudioGetMasterVolume()
Muted = NSBHandEra.AudioGetMute()
HandEraデバイスのミュート(消音)設定を戻します。
パラメータ: 無
戻り値: Muted as Integer
例
Dim Muted as Integer Muted = NSBH.AudioGetMute()
NSBHandEra.AudioPlayDTMFChar DTMFString, ToneLength
1文字のDTMF (Dual Tone Multi Frequency)サウンドを再生します。電話の「タッチトーン」はDTMFサウンドです。このファンクションは電話のダイアル機能として使うことが出来ます。現在HandEra POSEはDTMFファンクションを正しくサポートしていません。
パラメータ:
DTMFString as String (Only the first character is used)
ToneLength as Integer (presumably in "ticks")
戻り値: 無
例
Dim ToneLength as Integer Dim DTMFString as String DTMFString = "*" ToneLength = 25 NSBH.AudioPlayDTMFChar DTMFString, ToneLength
NSBHandEra.AudioPlayDTMFStr DTMFString, ToneLength, GapLength
DTMF (Dual Tone Multi Frequency)サウンドの文字列を再生します。電話の「タッチトーン」はDTMFサウンドです。このファンクションは電話のダイアル機能として使うことが 出来ます。現在HandEra POSEはDTMFファンクションを正しくサポートしていません。特に このファンクションは、HandEra POSE上では永久ループへの突入を引き起こします。
パラメータ:
DTMFString as String
ToneLength as Integer (presumably in "ticks")
GapLength as Integer (presumably in "ticks")
戻り値: 無
例
Dim ToneLength as Integer Dim GapLength as Integer Dim DTMFString as String DTMFString = "555-2121" ToneLength = 25 GapLength = 10 NSBH.AudioPlayDTMFStr DTMFString, ToneLength, GapLength
PlayWaveSupported = NSBHandEra.AudioPlayWaveSupported()
HandEraデバイスがPlay Wave機能をサポートしている場合は1を、していない場合は 0を戻します。
パラメータ: 無
戻り値: Answer as Integer (1 = True) (0 = False) (-1 = Not a HandEra device)
例
Dim Answer as Integer Answer = NSBH.AudioPlayWaveSupported()
RecordWaveSupported = NSBHandEra.AudioRecordWaveSupported()
HandEraデバイスがRecord Wave機能をサポートしている場合は1を、していない場合 は0を戻します。
パラメータ: 無
戻り値: Answer as Integer
例
Dim Answer as Integer Answer = NSBH.AudioRecordWaveSupported()
NSBHandEra.AudioSetMasterVolume Volume
HandEraデバイスのマスターボリュームレベルをセットします。
パラメータ: Volume as Integer (0 to 255)
戻り値: 無
例
Dim Volume as Integer Volume = 127 NSBH.AudioSetMasterVolume Volume
NSBHandEra.AudioSetMute Muted
Sets the muted setting of the HandEra device.
パラメータ: Mute as Integer (1 = True, 0 = False)
戻り値: 無
例
Dim Muted as Integer Muted = 1 NSBH.AudioSetMute Muted
NSBHandEra.AudioVolumeDlg TitleString
ダイアログを表示し、ユーザがボリュームとミュート(消音)の設定を選ぶことが出来る ようにします。
パラメータ: TitleString as String
戻り値: 無
例
Dim TitleString as String TitleString = "Adjust the Volume" NSBH.AudioVolumeDlg TitleString
Persistence = NSBHandEra.SilkGetGraffitiPersistence()
GraffitiPersistence設定を刻み数で戻します。 Graffiti PersistenceはHandEra バーチャル・スクリーン領域内にグラフィティストロークが表示される時間です。
パラメータ: 無
戻り値: Persistence as Integer (as ticks)
例
Dim Persistence as Integer Persistence = NSBH.SilkGetGraffitiPersistence
NSBHandEra.SilkMaximizeWindow()
HandEraバーチャル・スクリーンを最大化します。
パラメータ: 無
戻り値: 無
例
NSBH.SilkMaximizeWindow()
NSBHandEra.SilkMinimizeWindow()
HandEraバーチャル・スクリーンを最小化します。
パラメータ: 無
戻り値: 無
例
NSBH.SilkMinimizeWindow()
NSBHandEra.SilkSetGraffitiPersistence Persistence
GraffitiPersistence設定を刻み数でセットします。 Graffiti PersistenceはHandEraバーチャル・スクリーン領域内にグラフィティストロークが表示される時間です。
パラメータ: Persistence as Integer (in ticks)
戻り値: 無
例
Dim Persistence as Integer Persistence = 100 NSBH.SilkSetGraffitiPersistence Persistence
Minimized = NSBHandEra.SilkWindowMinimized()
HandEraバーチャル・シルクスクリーンが最小化されている場合は1を、そうでない場合 は0を戻します。
パラメータ: 無
戻り値: Answer as Integer
NSBHandEra.SizeForm()
ウインドウのディスプレイ範囲を使って、フォームのウィンドウ境界をリセットします。 これは、スクリーンモードを変更するファンクションを呼んだ後に使用します。このファンク ションはスクリーンを消すため、SizeForm()を呼んだ後には"Redraw"が必要になります。
パラメータ: 無
戻り値: 無
例
NSBH.SizeForm() Redraw
VGAFontID = NSBHandEra.VgaBaseToVgaFont(BaseFontID)
渡されるBase (Palm) フォントIDと同等なHigh Resolution (VGA) フォントIDを戻しま す。
パラメータ: BaseFontID as Integer
戻り値: VGAFontID as Integer
例
Dim BaseFontID as Integer Dim VGAFontID as Integer BaseFontId = 0 VGAFontId = NSBH.VgaBaseToVgaFont(BaseFontID)
FontID = NSBHandEra.VgaFontSelect(FontType, DefaultFontID)
ユーザにフォントを選ばせる為のダイアログを表示します。FontTypeパラメータは、 Base(Palm)フォントだけを表示するか、BaseとVGA(High Resolution)を表示するかを指定します。
パラメータ: FontType as Integer
戻り値: FontID as Integer
例
Dim FontID as Integer Dim FontType as Integer Dim DefaultFontID as Integer FontType = 1 DefaultFontId = 224 FontID = NSBH.VgaFontSelect(FontType, DefaultFontID)
Error = NSBHandEra.VgaFrmModify()
スクリーンモードを"1 to 1"に変更し、必要であれば、フォームのオブジェクトサイズを 1.5倍に拡大します。これは通常160x160ピクセルのフォームを、"1 to 1"モードでは、 240x240ピクセルで表示するようにします。このファンクションが呼ばれる度にフォームオ ブジェクトは拡大されるため、ファンクションは1回だけ呼ぶようにします。これもフォーム のスクリーンは消されますので、"Redraw"が必要になります。
パラメータ: None
戻り値: Error as Integer (-1 = Not a HandEra Device) (-2 = No form is active)
例
Dim Error as Integer Error = NSBH.VgaFrmModify() Redraw
TitleHeight = NSBHandEra.VgaFrmGetTitleHeight()
フォームのタイトルの高さをピクセルで戻します。
パラメータ: 無
戻り値: TitleHeight as Integer
例
Dim TitleHeight as Integer TitleHeight = NSBH.VgaFrmGetTitleHeight()
Mode = NSBHandEra.VgaGetScreenMode()
現スクリーンモードを戻します。このファンクションはさらに、現スクリーンローテーションも検索します。ローテーション値はVgaGetScreenRotation()を呼ぶことによって得ることが出来ます。
パラメータ: 無
戻り値: Mode as Integer
例
Dim Mode as Integer Mode = NSBH.VgaGetScreenMode()
Offset = NSBHandEra.VgaGetScreenOffset()
先に呼ぶVgaGetScreenState()ファンクションによって検索した、スクリーンのオフセットを戻します。
パラメータ: 無
戻り値: Offset as Integer
例
Dim Mode as Integer Dim Offset as Integer Mode = NSBH.VgaGetScreenState() Offset = NSBH.VgaGetScreenOffset()
Rotation = NSBHandEra.VgaGetScreenRotation()
先に呼ぶVgaGetScreenMode()またはVgaGetScreenState()ファンクションによって 検索した、スクリーンローテーションを戻します。
パラメータ: 無
戻り値: Rotation as Integer
例
Dim Mode as Integer Dim Rotation as Integer Mode = NSBH.VgaGetScreenMode() Rotation = NSBH.VgaGetScreenRotation()
Mode = NSBHandEra.VgaGetScreenState()
現スクリーンモードを戻します。このファンクションはさらに、現スクリーンのローテー ションとオフセットも検索します。ローテーション値はVgaGetScreenRotation()を呼ぶこ とによって得ることが出来ます。オフセット値はVgaGetScreenOffset()を呼ぶことによっ て得ることが出来ます。
パラメータ: 無
戻り値: Mode as Integer
例
Dim Mode as Integer Mode = NSBH.VgaGetScreenState()
Answer = NSBHandEra.VgaIsVgaFont(FontID)
指定のFontIDがHigh Resolution (VGA)フォントなら1を、そうでなければ0を戻しま す。
パラメータ: FontID as Integer
戻り値: Answer as Integer (1 = True) (0 = False) (-1 = Not a HandEra device)
例
Dim FontID as Integer Dim Answer as Integer FontID = 224 Answer = NSBH.VgaIsVgaFont(FontID)
Error = NSBHandEra.VgaRestoreScreenState()
先に呼ぶVgaSaveScreenState()によって保管されるスクリーン状態を戻します。この ファンクションはフォームのスクリーンを消しますので、"Redraw"ステートメントが続かな ければなりません。
パラメータ: 無
戻り値: Error as Integer
例
Dim Error as Integer Error = NSBH.VgaRestoreScreenState() Redraw
Rotation = NSBHandEra.VgaRotateSelect(DefaultRotation)
ユーザにスクリーンローテーションを選ばせる為のダイアログを表示します。DefaultRotationパラメータは、デフォルトとしてのhighlightにローテーションを指定しま す。このファンクションは、実際にはスクリーンを回転させません。実際にスクリーンを回転 させるためには、戻されたRotationと共にgaSetScreenMode()かVgaSetScreenState() ファンクションを呼ばなくてはなりません。
パラメータ: DefaultRotation as Integer
戻り値: Rotation as Integer
例
Dim DefaultRotation as Integer Dim Rotation as Integer DefaultRotation = 2 Rotation = NSBH.VgaRotateSelect(DefaultRotation)
NSBHandEra.VgaSaveScreenState()
現スクリーン状態を保存します。保存されたスクリーン状態は、VgaRestoreScreenState()を呼ぶことによって受け取れるでしょう。
パラメータ: 無
戻り値: 無
例
NSBH.VgaSaveScreenState()
Error = NSBHandEra.VgaSetScreenMode(Mode, Rotation)
スクリーンのモードとローテーションをセットします。このファンクションはフォームの スクリーンを消しますので、"Redraw"ステートメントが続かなければなりません。
パラメータ: Mode as Integer
戻り値: Error as Integer
例
Dim Mode as Integer Dim Rotation as Integer Dim Error as Integer Mode = 1 Rotation = 0 Error = NSBH.VgaSetScreenMode(Mode, Rotation) Redraw
Error = NSBHandEra.VgaSetScreenState(Mode, Rotation, Offset)
このファンクションはスクリーンのモード、ローテーション、オフセットをセットしま す。このファンクションはフォームのスクリーンを消しますので、"Redraw"ステートメント が続かなければなりません。
パラメータ: Mode as Integer
戻り値: Error as Integer
例
Dim Mode as Integer Dim Rotation as Integer Dim Offset as Integer Dim Error as Integer Mode = 1 Rotation = 0 Offset = 0 Error = NSBH.VgaSetScreenState(Mode, Rotation, Offset) Redraw
BaseFontID = NSBHandEra.VgaVgaToBaseFont(VGAFontID)
渡されるHigh Resolution (VGA) フォントIDと同等なBase (Palm) フォントIDを戻しま す。
パラメータ: VGAFontID as Integer
戻り値: BaseFontID as Integer
例
Dim VGAFontID as Integer Dim BaseFontID as Integer VGAFontId = 224 BaseFontId = NSBH.VgaVgaToBaseFont(VGAFontID)
NSBHandEra.VgaWinDrawBitmapExpanded ObjectID, X, Y
ビットマップを1.5倍し、指定するX軸とY軸に描きます。ビットマップはそのオブジェ クトIDによって指定されます。このオブジェクトIDは、NSBasic IDE内のビットマップのプロ パティ(properties)にあるIDと同じです。
パラメータ:
ObjectID as Integer
X as Integer
Y as Integer
戻り値: 無
例
Dim ObjectID as Integer Dim X as Integer Dim Y as Integer ObjectID = 1155 X = 120 Y = 105 NSBH.VgaWinDrawBitmapExpanded ObjectID, X, Y