INPUT  (ステートメント)


RS232CおよびEthernetポートからのデータを得ます。


INPUT [#<回線番号>,]<変数名>[,WTIME=<タイムアウト時間> [,RVAL=<格納変数>]]
[,<変数名>[,WTIME=<タイムアウト時間> [,RVAL=<格納変数>]]…]


RS232CおよびEthernetポートに受信したデータを、<変数名>で指定した変数に格納します。
<回線番号>には、使用するRS232CおよびEthernetポートの回線番号を指定します。<回線番号>を省略するとデフォルト値のch2となります。ch1はティーチングペンダント用に使用するため指定できません。(「2.4.1 回線番号」参照) 複数の情報を、それと同数の変数で受ける場合は、個々の変数間にカンマ(,)を付けます。
デリミタ(CRまたはCR+LF)の直前までのすべてを、指定した変数に格納します。
デリミタは、変数には読み込まれません。
ボーレートは、システムパラメータで指定します。
<タイムアウト時間> [RC7_Ver2.2以降]
変数毎にタイムアウト時間を指定できます。入力データがない場合、指定時間を経過した後、現在の変数に対しての入力待ちを終了し、次に制御が移ります。単位はmsですが、実際の遅延時間は1/60s単位で増減します。
<格納変数> [RC7_Ver2.2以降]
<タイムアウト時間>の設定と対で使います。入力データを受けて正常に抜けた場合TRUE(1)が入り、タイムアウトで抜けたときは指定した変数にFALSE(0)が入ります。
  • データの受信に先立って、受信データの入力バッファに残っているデータをクリアするために、FLUSHコマンドを実行してください。
  • 入力したデータが、代入する変数の型が表せる値の最大値を超えている場合、結果はその型の最大値となります。



例1:
DIM li1 As Integer
defint li
DEFSTR ls1, ls2, ls3, ls4
INPUT #1, ls1
'ch2からのデータをls1に書きます。
INPUT #1, li1, ls2, ls3
'ch2からのデータをli1, ls2, ls3に書きます。
INPUT ls4
'ch2からのデータをls4に書きます。
INPUT ls4 ,WTIME=100,RVAL=li
'入力がない場合100msec時間後次のコマン
'ドへ処理が移ります。liにはタイムアウト
'で抜けたことを表す0が入ります。

次の用例2、用例3は、文字列情報がカンマ(,)で区切られ、その区切られた数と同じ要素数の変数で受けることができるので余分な文字列演算の必要はありません。
例2:外部から、"505.425,-125.325,400.238"を送った場合(6軸ロボットの例)
DIM lv1 AS VECTOR
INPUT #1,lv1
LETP P11=lv1
'受信したx,y,zをP11へ代入
LETR P11=RVEC(P10)
'姿勢データに基準位置P10の値を代入
LETF P11=FIG(P10)
'形態データに基準位置P10の値を代入
MOVE P,@E P11,S=100

例3:外部から、"505.425,-125.325,400.238,180,0,180,5"を送った場合(6軸ロボットの例)
INPUT #1,P11
MOVE P,@E P11,S=100