NATOC API(プログラミングインタフェイス)


 NATOC API(プログラミングインタフェイス)は、MicroSoft Visual BasicまたはMicroSoft Visual C++からNATOCの機能を使うための関数です。
 NATOC APIの使い方についてはNATOC SDKで提供されるサンプルプログラムのソースコードも合わせて参照してください。

 なお本ページに記載されている関数名、定数名等は変更される事があります。NATOC.bas,NATOC.vb,NATOC.h,NATOC.csと異なる場合はこれらのファイルの方を優先させてください。

初期化
機能 NATOCとの通信の初期化を行う
VB書式 Function InitNATOC(ByVal mode As Long, ByVal hWnd As Long) As Integer
VB.NET書式 Function InitNATOC(ByVal mode As Integer, ByVal hWnd As Integer) As Short
C++書式 short InitNATOC(int mode, HWND hWnd);
C♯書式 short NATOC.InitNATOC(int mode, int hWnd);
戻り値 0 = 正常 -1 = 通信エラー  
引数 mode 通信モード 0を指定
  hWnd ライブ画像表示ウィンドウ・ハンドル NULL(0)を指定するとライブ画像はNATOC本体に表示される


列車位置取得
機能 列車の現在位置や周回数等を取得する
VB書式 Function GetTrainPosition(ByRef train_x As Integer, ByRef train_y As Integer,
  ByRef train_loop As Integer, ByRef train_angle As Integer) As Integer
VB.NET書式 Function GetTrainPosition(ByRef train_x As Short, ByRef train_y As Short,
  ByRef train_loop As Short, ByRef train_angle As Short) As Short
C++式 short GetTrainPosition(short *train_x, short *train_y, short *train_loop, short *train_angle);
C♯式 short NATOC.GetTrainPosition(out short train_x, out short train_y,
  out short train_loop, out short train_angle);
戻り値 0 = 正常 -1 = 通信エラー  
引数 train_x 列車位置X座標 カメラの座標系(左上=0,0)
  train_y 列車位置Y座標 カメラの座標系(左上=0,0)
  train_loop 列車の周回数 回る方向に関係なく1回転(角度変化が360以上)すると加算される
  train_angle 列車の角度変化 レイアウト中心に対する角度変化(0〜360)、
回る方向に関係なく角度が変化すると加算される


NATOC制御コマンド
機能 NATOC本体の制御をする
VB書式 Function ControlNATOC(ByVal command As Integer) As Integer
VB.NET書式 Function ControlNATOC(ByVal command As Short) As Short
C++書式 short ControlNATOC(short command);
C♯書式 short NATOC.ControlNATOC(short command);
戻り値 0 = 正常 -1 = 通信エラー -2 = 引数エラー
引数 command 制御コマンド
command SDK_AUTO_STOP 0 自動運転終了(アプリケーションのプログラム)
  SDK_AUTO_START 1 自動運転開始(アプリケーションのプログラム)
  NATOC_AUTO_STOP 10 自動運転終了(NATOC本体のプログラム)
  NATOC_AUTO_START 11 自動運転開始(NATOC本体のプログラム)
  自動運転のプログラムをアプリケーション側のものを使うかNATOC本体側のものを使うかで
使うコマンドが異なります。アプリケーションでプログラムを作った時はSDK_AUTO_STARTで
開始してください。


レイアウト制御コマンド
機能 レイアウトの制御をする
VB書式 Function ControlLayout(ByVal command As Integer) As Integer
VB.NET書式 Function ControlLayout(ByVal command As Short) As Short
C++書式 short ControlLayout(short command);
C♯書式 short NATOC.ControlLayout(short command);
戻り値 0 = 正常 -1 = 通信エラー -2 = 引数エラー
引数 command 制御コマンド
command LAYOUT_TRAIN_STOP 0 列車停止
  LAYOUT_TRAIN_FORWARD 1 列車前進(時計回り)
  LAYOUT_TRAIN_BACKWARD 2 列車後進(反時計回り)
  LAYOUT_POINT1_THROUGH 3 ポイント1切り替え(直進側)
  LAYOUT_POINT1_BRANCH 4 ポイント1切り替え(分岐側)
  LAYOUT_POINT2_THROUGH 5 ポイント2切り替え(直進側)
  LAYOUT_POINT2_BRANCH 6 ポイント2切り替え(分岐側)
  LAYOUT_POINT3_THROUGH 7 ポイント3切り替え(直進側)
  LAYOUT_POINT3_BRANCH 8 ポイント3切り替え(分岐側)
  LAYOUT_POINT4_THROUGH 9 ポイント4切り替え(直進側)
  LAYOUT_POINT4_BRANCH 10 ポイント4切り替え(分岐側)


サウンド制御コマンド
機能 サウンドの制御をする
VB書式 Function ControlSound(ByVal command As Integer, ByVal sound_no As Integer) As Integer
VB.NET書式 Function ControlSound(ByVal command As Short, ByVal sound_no As Short) As Short
C++書式 short ControlSound(short command, short sound_no);
C♯書式 short NATOC.ControlSound(short command, short sound_no);
戻り値 0 = 正常 -1 = 通信エラー -2 = 引数(command)エラー
-3 = 引数(sound_no)エラー
引数 command 制御コマンド
  sound_no サウンド番号 1〜100
command SOUND_PLAY_STOP 0 サウンド再生停止
  SOUND_PLAY_START 1 サウンド再生
  SOUND_PLAY_LOOP 2 サウンド繰返し再生
  SOUND_INIT_OVERLAP 3 重ね合わせ準備
  SOUND_INIT_OVERLAPは、別のサウンドを再生中にこの番号のサウンドを重ねる時に用います。
このコマンドは処理に時間がかかるため自動運転開始直後に行ってください。
(実行中だとタイミングがずれます)
なおこのコマンドを行っていないサウンド番号のものを再生をすると前のサウンドは停止されます。


オプション出力制御コマンド
機能 オプションのリレーの制御をする
VB書式 Function ControlOption(ByVal command As Integer, ByVal relay_no As Integer) As Integer
VB.NET書式 Function ControlOption(ByVal command As Short, ByVal relay_no As Short) As Short
C++書式 short ControlOption(short command, short relay_no);
C♯書式 short NATOC.ControlOption(short command, short relay_no);
戻り値 0 = 正常 -1 = 通信エラー -2 = 引数(command)エラー
-3 = 引数(relay_no)エラー
引数 command 制御コマンド
  relay_no リレー番号 7〜10
command OPTION_RELAY_OFF 0 オプション出力オフ
  OPTION_RELAY_ON 1 オプション出力オン


転車台制御コマンド
機能 転車台の制御をする
VB書式 Function ControlTurnTable(ByVal command As Integer, ByVal line_no As Integer) As Integer
VB.NET書式 Function ControlTurnTable(ByVal command As Short, ByVal line_no As Short) As Short
C++書式 short ControlTurnTable(short command, short line_no);
C♯書式 short NATOC.ControlTurnTable(short command, short line_no);
戻り値 0 = 正常 -1 = 通信エラー -2 = 引数(command)エラー
-3 = 引数(line_no)エラー
引数 command 制御コマンド
  line_no 接続線番号 1〜5
command TURN_TABLE_OFF 0 転車台電源オフ
  TURN_TABLE_ON 1 転車台電源オン
  TURN_TABLE_ROATE 2 転車台接続(正方向)
  TURN_TABLE_REVERSE 3 転車台接続(逆方向)
  転車台電源制御の場合は接続線の指定は任意の値で構いません。


センサー監視コマンド
機能 センサーの監視をする
VB書式 Function SensorWatch(ByVal sensor_no As Integer, ByVal time_out As Integer) As Integer
VB.NET書式 Function SensorWatch(ByVal sensor_no As Short, ByVal time_out As Short) As Short
C++書式 short SensorWatch(short sensor_no, short time_out);
C♯書式 short NATOC.SensorWatch(short sensor_no, short time_out);
戻り値 0 = 正常 -1 = 通信エラー -2 = 引数(sensor_no)エラー
-3 = 引数(time_out)エラー
引数 sensor_no センサー番号 0〜5
  time_out タイムアウト(秒) 0〜3600
  列車が指定したセンサーを通過するかタイムアウトになるまで関数から戻りません。


列車速度制御コマンド
機能 列車速度の制御をする
VB書式 Function ControlSpeed(ByVal speed As Integer, ByVal fade As Integer) As Integer
VB.NET書式 Function ControlSpeed(ByVal speed As Short, ByVal fade As Short) As Short
C++書式 short ControlOption(short speed, short fade);
C♯書式 short NATOC.ControlOption(short speed, short fade);
戻り値 0 = 正常 -1 = 通信エラー -2 = 引数(speed)エラー
-3 = 引数(fade)エラー
  speed 列車速度 0〜100
  fade フェード時間(秒) 0〜60
  フェード時間を指定すると徐々に加速減速して指定した秒数後に指定した速度にします。
0を指定すると直ちに指定した速度にします。

プログラム実行コマンド
機能 NATOCのプログラムを実行する
VB書式 Function ExecProgram(ByVal program As String, ByVal wait_done As Integer) As Integer
VB.NET書式 Function ExecProgram(ByVal program As String, ByVal wait_done As Short) As Short
C++書式 short ExecProgram(LPCTSTR program, short wait_done);
C♯書式 short NATOC.ExecProgram(string program, short wait_done);
戻り値 0 = 正常 -1 = 通信エラー -2 = 引数(program)エラー
-3 = 引数(wait_done)エラー
  program プログラムパス 拡張子.ntc、相対パス可(NATOC実行ディレクトリより)
  wait_done プログラム終了 0:終了を待たない 1:終了を待つ(プログラムが終了するまで
アプリケーションへの制御は戻りません)
  本機能を使うにはNATOC本体のリビジョンが2.50以上でなければいけません。
プログラムはループ等で繰り返さないようにしておく必要があります。


コントローラー状態取得
機能 本体のコントローラーの状態を取得する
VB書式 Function GetControlStatus(ByRef status As Integer) As Integer
VB.NET書式 Function GetControlStatus(ByRef status As Short) As Short
C++書式 short GetControlStaus(short *status);
C♯書式 short NATOC.GetControlStaus(out short status);
戻り値 0 = 正常 -1 = 通信エラー
引数 status スイッチ状態
status CONTROL_STATUS_POWER 0x01(&H1) 電源スイッチ(プログラム終了)
  CONTROL_STATUS_START 0x02(&H2) 運転/停止(運転)
  CONTROL_STATUS_DIRECT 0x04(&H4) 進行方向スイッチ(反時計周り)
  CONTROL_STATUS_POINT1 0x08(&H8) ポイント1切り替えスイッチ(分岐側)
  CONTROL_STATUS_POINT2 0x10(&H10) ポイント2切り替えスイッチ(分岐側)
  CONTROL_STATUS_POINT3 0x20(&H20) ポイント3切り替えスイッチ(分岐側)
  CONTROL_STATUS_POINT4 0x40(&H40) ポイント4切り替えスイッチ(分岐側)
  CONTROL_STATUS_AUTO 0x80(&H80) 自動運転スイッチ(自動運転)
  スイッチの状態はstatusのビットで返されます。
ビットがONの時はスイッチが上記カッコ内の状態であることを表します。



目次に戻る