LUA APIコールバック関数説明{{LUA APIこーるばかんすうせつめい}}
概要:概要
この記事では、LUAスクリプトAPI関数のコールバック関数の使用方法とコールバック関数の呼び出しに関する注意点、一般的なAPIコールバックインターフェイスを以下に示します。
- 初期化関数on_init
- システム·ティック1sコールバック関数on_systick
- コントロールはコールバック关数をトリガします。on__notify screen value
- 画面の切り替えコールバック関数on_screen_change screen
- タイマ·タイムアウト·コールバック関数on_timer timer_id
- 図面/線分/ジオメトリのコールバック関数on_draw screen
- USBドライブ、SDカード用のコールバック関数on_usb_inserted dir/on_usb_removed/on_sd_inserted dir/on_sd_removed
注:LUAの詳細はこちらLUAスクリプトAPI関数インタフェース{{LUAすくりぷとAPIかんすういんたふぇ ーす}} チャプターとウェブサイト:w w w.runoob.com/lua
対象範囲Mシリーズ、Wシリーズ、Xシリーズ、Fシリーズファームウェアバージョン= V4.2.401.0
ダウンロードリンク:LUA APIコールバック関数説明{{LUA APIこーるばかんすうせつめい}}”クリックジャンプ
注意事項について
- 大彩lua api内のコールバック関数は他の関数に呼び出されないことができません。受動的なトリガー、自動コールバック、例えばユーザーはテキストコントロールのキー値入力、トリガーコールバック関数on_control_notify screen control value
- コールバック関数の関数名、パラメータなどは変更できません
1.1関数on_init
このコールバック関数は、システムが起動してLUAスクリプトファイルをロードした直後に呼び出されます。通常、初期化操作を1回だけ実行します。
画面の設定
画面に2つのテキストコントロールを追加します。ID1は電圧値を表示し、ID2は電流を表示します。

LUAスクリプト
on_init()関数にテキストボックスの数値を設定するAPI関数を入力し、システムの初期化時に実行を呼び出します。具体的なコードを示す。
--***************************************************************************
** name on_
** tions このコールバック関数は、システムの初期化時に実行されます。
注意:コールバック関数のパラメータと関数名は変更できません。
***************************************************************************--]]
function on_init
set_value 1,1,10--テキストコントロールの値を設定します。
set_value 1,2,2--テキストコントロールの値を設定します。
End of Endシングルプレビューの実行
仮想スクリーンを運行し、この画面の電圧値は10で、電流値は2で、以下のように、ユーザーはluaスクリプトによって対応する値を修正することができ、更に熟知して了解する

1.2関数on_systick
このコールバック関数は1秒ごとに自動的に呼び出されます
画面の設定
この画面には、on_systick()コールバックがトリガーされた回数をカウントするテキストコントロールが追加されます。

LUAスクリプト
チュートリアルでは、on_systick()関数にコールバック関数の実行回数を表示するプログラムを追加しました。
--***************************************************************************
** Function name on_systick
** Descriptions 1秒ごとに自動的に呼び出されるタイミングコールバック関数。
注意:コールバック関数のパラメータと関数名は変更できません。
***************************************************************************--]]
function on_systick
_
set_value 2,1,sys_mer
End of Endシングルプレビューの実行
on_systick()関数が毎秒トリガーされ、次のようになります。

1.3関数on_timer timer_id
on_timer timer_idタイマータイムアウトコールバック関数。単独では有効ではありません。この関数は、start_timer timer_id timer_id timeout countdown repeatとともにコールバックをトリガーし、タイマーオーバーフローがタイムアウトするとon_timer timer_idをトリガーするためにタイマーをオンにします。
画面の設定
画面には2つのボタンがあります。1つは有効タイマー、1つは停止タイマー、およびタイマーがタイムアウトした後に呼び出された回数を示すテキストボックスです。

LUAスクリプト
チュートリアルでは、on_timer()関数にコールバック関数が実行された回数を表示するプログラムを追加しました。
--***************************************************************************
** Function name on_timer
** Descriptionsタイマがタイムアウトしました。このコールバック関数を実行します。
注意:コールバック関数のパラメータと関数名は変更できません。
** Input value timer_idタイミングタイムアウトのタイマID番号、タイマ番号0~31
***************************************************************************--]]
function on_mer mer_id
タイマー 0のタイムアウト。
if timer_id == 0
そして、Then
timer_out = timer_out +1
set_value 3,3,timer_out
End of Endシングル
End of Endシングル
--***************************************************************************
** Function name on_control_notify
** Descriptionsユーザーがタッチでコントロールを変更した後に、このコールバック関数を実行します。
ボタンコントロールのタップ、テキストコントロールの変更、スライドバーの変更によってトリガーされます。注意:コールバック関数のパラメータと関数名は変更できません。
** Input value screen 画面ID
Control IDコントロールID
valueコントロール値テキストコントロールの入力値を含む
***************************************************************************--]]
function on__noscreen value
--***********************************************************
--機能:画面4のコントロール1を押してタイマー 0を起動する
--関数を呼び出しますstart_timer timer_id timeout countdown repeat
機能:タイマーを起動する。
パラメータ:timer_id,タイマー ID;
-- タイムアウト、タイムアウト;
-- カウントダウン、1ダウン、0カウントダウン
-- repeatの タイミング回数,0無限ループ
--***********************************************************
画面== 3、制御== 1、値== 1の場合
そして、Then
start_timer 0、1000、1、0 --タイマー 0が作動し、タイマーを1秒に1回on_timerをトリガーする
画面== 3、制御== 2、値== 1
そして、Then
stop_timer 0 タイマー 0を停止します。
timer_out = 0
End of Endシングル
……
End of Endシングルプレビューの実行
タイマがオンになると、タイムアウトがon_timerをトリガし、以下のようになります。

1.4関数on_control_notify screen control value
このコールバック関数は、ユーザーが修正コントロールにタッチした後に実行されます。ボタンコントロールをクリックし、テキストコントロールを変更し、スライドバーを変更するなど、この機能をトリガーします。シングルチップシリアルコマンドが制御値を変更する場合、スクリプト設定set_valueまたは他のコントロールをトリガーする内蔵コマンドのボタンはコールバック関数をトリガーしません。ユーザー操作画面コントロールのみがトリガーされます。
PSボタンコントロールでは、次の2つの構成のいずれかが設定されています。ボタンコントロールはon_control_notifyをトリガーしません。
1.個々のボタンコントロールに対しては、[イベント通知]をNOに設定すると、ボタンコントロールが押下されても、次のようにon_control_notifyはトリガされない

2.エンジニアリングプロパティ構成、グローバル構成ボタンプロパティ【ボタンイベント通知】では、次のようになります。
- オフに設定すると、すべてのボタンコントロールがトリガーされません。
- “押すときのみ”に設定すると、すべてのボタンコントロールが押されたときにのみトリガーされます。
- “アップ時のみ”に設定すると、すべてのボタンコントロールがアップ時のみトリガーされます。
- “押してアップするとき”にしたすべてのボタンコントロールが押してアップするときにトリガーする

画面の設定
画面には、ボタン(ID1)、テキスト(ID2、キーボード入力)、アイコン(ID3、タッチ可能)、スライド選択コントロール(ID4)、メニューコントロール(ID5)、スライド選択コントロール(ID6)などの一般的なコントロールが設定されています。次に示すように、トリガーされたコントロールを記録するテキストコントロール(ID7)を追加します。

LUAスクリプト
この章では、コールバック関数表示でon_control_notify対応するコントロールをトリガーし、押下された情報をテキストコントロールID7に表示します。具体的なコードは以下のとおりです。
--***************************************************************************
** Function name on_control_notify
** Descriptionsユーザーがタッチでコントロールを変更した後に、このコールバック関数を実行します。
ボタンコントロールのタップ、テキストコントロールの変更、スライドバーの変更によってトリガーされます。注意:コールバック関数のパラメータと関数名は変更できません。
** Input value screen 画面ID
Control IDコントロールID
valueコントロール値テキストコントロールの入力値を含む
***************************************************************************--]]
function on__noscreen value
--***********************************************************
--機能:画面4のコントロール1を押してタイマー 0を起動する
--関数を呼び出しますstart_timer timer_id timeout countdown repeat
機能:タイマーを起動する。
パラメータ:timer_id,タイマー ID;
-- タイムアウト、タイムアウト;
-- カウントダウン、1ダウン、0カウントダウン
-- repeatの タイミング回数,0無限ループ
--***********************************************************
……
スクリーンの場合== 4
そして、Then
制御== 1と値== 1の場合 --value == 1ボタンを押す
そして、Then
set_text 4、7、“ボタン押し”
制御== 1と値== 0 --value == 0ボタンアップ
そして、Then
set_text 4、7、“ボタンアップ”
Elseif Control == 2 - テキスト入力。
そして、Then
set_text 4 7“テキスト入力”
elseif control == 3 --アイコンコントロール
そして、Then
set_text 4,7“タッチアイコン”
elseif control == 4 - 選択コントロールのスライド
そして、Then
set_text 4、7、“選択のスライド”
elseif control == 5 - メニューのコントロール
そして、Then
set_text 4 7“メニュー选択”
elseif control == 6 --スライダコントロール
そして、Then
set_text 4、7、“スライダスライド”
End of Endシングル
End of Endシングル
……
End of Endシングルプレビューの実行
コントロールID1~ID6をクリックすると、以下のようになります。

1.5関数on_screen_change screen {{かんすうon_screen_change screen}}
画面が切り替わると、このコールバック関数を実行します。
- screen:画面切り替え后の目的画面ID.画面Aが画面Bに切り替わり、この動作が完了すると、screenは画面Bの画面ID値となる
注:on_screen_change screenでchange_screen切り替え画面を呼び出しても、on_screen_changeはトリガされません。
画面の設定
本稿では,ボタンコントロールの属性を画面切替に設定し,このボタンコントロールをクリックすると指定した画面に画面が切り替わり,以下のようになる.

テスト画面に、二つのテキストコントロールを追加し、スクリプトがコールバック関数on_screen_changeをトリガする時、コントロールID1が現在の画面のIDを表示し、コントロールID2が数値を表示し、設定は以下の通りである

LUAスクリプト
画面を切り替えると同時に、コールバック関数on_screen_changeをトリガし、画面を切り替えると、ターゲット画面の2つのテキストコントロールを変更することができます。
--***************************************************************************
** name on_screen_change
** DescriptionsピクチャがターゲットピクチャIDに切り替わったときにこのコールバック関数を実行する
注意:コールバック関数のパラメータと関数名は変更できません。
** Input value screenターゲット画面ID
*******************************************************************************--]]
function on_screen_change screen
スクリーンの場合== 8 --画面9に切り替えたとき、コントロール1、2のデータを修正する
set_value 8 1 screen コントロール1のデータを変更する
set_value 8、2、30 コントロール2のデータを変更する。
End of Endシングル
End of Endシングルプレビューの実行
on_screen_changeをトリガーすると、次のようになります。

1.6関数on_draw {{かんすうon_draw}}
このコールバック関数は、再描画時に実行されます。通常、すべての描画、描画ジオメトリ円、長方形、線、点などの操作はこの関数で実装されます。この関数は、画面のコントロールが更新されたときにもトリガーされます。通常はredrawで使用されます。
- screen :必要な画像ID
画面の設定
この画面に2つのボタンコントロールを追加し、それぞれを押すと、異なる画像が表示されます。

LUAスクリプト
LUAのボタンが押されたときに、show_pictureに別の値を割り当て、redrawを呼び出したときにコールバック関数on_drawをトリガして指定されたピクチャを表示する
--***************************************************************************
** name on_w
** Descriptions画面が更新されたとき、またはAPI関数redrawを使用して再描画をリクエストしたときに、このコールバック関数を実行します。
注意:コールバック関数のパラメータと関数名は変更できません。
** Input value screenターゲット画面ID
***************************************************************************--]]
function on_draw screen
--******************************************************************************
--関数を呼び出します。draw_image image_id frame_id dstx dsty width height srcx srcy
--機能:画像IDに基づいて描画
--引数:image_id画像リソースのID
-frame_id対応アイコン、フレームIDを設定でき、その他の画像は0に固定
-DSTX X座標の画像
-DSTY Y座標を示す。
--width 画像は幅を示す。
-height。 写真は高さ。
-srCX 画像のX座標
-SRCY 画像のカットと座標
--*****************************************************************************
screen == 6とshow_picture == 1の場合
そして、Then
draw_image 23、0、190、160、430、230、0、0
elseif screen == 6およびshow_picture === 2
そして、Then
draw_image 24、0、190、160、430、230、0、0
End of Endシングル
End of Endシングル
function on__noscreen value
スクリーンの場合== 5
そして、Then
制御== 1と値== 1の場合 - 絵を描く1
そして、Then
show_picture = 1
redraw --再描画の申請
制御== 2と値== 1 写真を描く2。
そして、Then
show_picture = 2
redraw - 再描画の申請
End of Endシングル
End of Endシングル
End of Endシングルプレビューの実行
描画の効果は次のとおりです

1.7 USB/SDカードコールバック関数
USBドライブとSDカードが挿入されると、on_usb_inserted dirまたはon_sd_inserted dir関数が起動されます。USBドライブとSDカードを取り外すと、on_usb_removed関数またはon_sd_removed関数がトリガーされます。
- dir:USBドライブまたはSDカードの文字を表します。
注:具体的にはSDまたはUディスク、物理画面に基づいて、テストエクスペリエンスAPIは、物理画面でテストしてください。
エンジニアリング構成
画面には、USBスティックのトリガに関する情報を表示するためのコントロールID1とSDカードのトリガに関する情報を表示するためのコントロールID2の2つのテキストコントロールが追加されます。

LUAスクリプト
USB/SDカードの挿入および取り外し時のLUAスクリプトコードは以下のとおりです。
--***************************************************************************
** name on__inserted
** Descriptionsスティック挿入後にこのコールバック関数を実行
注意:コールバック関数のパラメータと関数名は変更できません。
** Input value dirスティックへのパス
***************************************************************************--]]
function on__inserted dir
set_text 7 1 dir --USBパスを表示
End of Endシングル
--***************************************************************************
** name on__inserted
** Descriptions SDカードの挿入後にこのコールバック関数を実行します。
注意:コールバック関数のパラメータと関数名は変更できません。
** Input value dir SDカードへのパス
***************************************************************************--]]
function on__inserted dir
set_text 7 2 dir --SDカードパスを表示
End of Endシングル
--***************************************************************************
** name on__inserted
** Descriptionsスティックを抜いた後にこのコールバック関数を実行
注意:コールバック関数のパラメータと関数名は変更できません。
***************************************************************************--]]
function on_usb_removed
set_text 7 1“USBスティックが引き抜かれました”
End of Endシングル
--***************************************************************************
** name on__inserted
** Descriptions SDカードを抜いた後にこのコールバック関数を実行します
注意:コールバック関数のパラメータと関数名は変更できません。
***************************************************************************--]]
function on_sd_removed
set_text 7 2“SDカードが引き抜かれました”
End of Endシングル
发表回复