スクリプト機能(AJFG)を使用する3
この節ではAJFGの端子の入出力について詳しく説明します。
端子への出力のタイミング
端子への出力の記述方法は下記の2パターン存在します.
- [対象端子] <= 値
- [対象端子] = 値
"<=" を使用した場合は,その場で値の出力が行われます.
一方,"=" を使用した場合はすぐには出力されず,次に"<="が実行されたときに出力が行われます.
jEXPORT int jmain()
{
...
for (int i = 0; i < 100; i++) {
LED_OP <= 0; ・・・ここでLED_OPに値が出力される
LED_OP = i; ・・・ここではまだ値は出力されない
Sleep(100);
HOGE_OP <= 1; ・・・ここでHOGE_OPと一緒にLED_OPの値も出力される
}
...
return 0;
}
{
...
for (int i = 0; i < 100; i++) {
LED_OP <= 0; ・・・ここでLED_OPに値が出力される
LED_OP = i; ・・・ここではまだ値は出力されない
Sleep(100);
HOGE_OP <= 1; ・・・ここでHOGE_OPと一緒にLED_OPの値も出力される
}
...
return 0;
}
端子からの入力方法
全体の流れとしましては,まず端子の入力値をサンプリングし,
その後その値をCプログラム内で利用します.
サンプリングは下記のように端子をハイインピーダンスにしたときに行われます.
[対象端子] <= "Z"; もしくは [対象端子] = "Z";
サンプリングした値をプログラム中で使用する方法は次の2パターン存在します.
- (int)[対象端子] としてint型にキャストして使用する方法
- [対象端子].to_val() として.to_val()を利用する方法
実際のコードは下記のようになります.
その1で紹介したプログラムをプッシュスイッチで止めるように改良しました.
for (int i = 0, PUSHSW_IP <= "Z"; (int)PUSHSW_IP == 0; i++) {
LED_OP <= i;
Sleep(100);
PUSHSW_IP <= "Z"
}
LED_OP <= i;
Sleep(100);
PUSHSW_IP <= "Z"
}
もしくは
for (int i = 0, PUSHSW_IP <= "Z"; PUSHSW_IP.to_val() == 0; i++) {
LED_OP <= i;
Sleep(100);
PUSHSW_IP <= "Z"
}
LED_OP <= i;
Sleep(100);
PUSHSW_IP <= "Z"
}
