本ページには広告が含まれています。
USB型の環境センサーを接続することで値が取得できます。取得できない場合Emptyを返します。
- 構文
- SENSOR( 取得項目 )
- 引数
- 取得項目 (#sensor)必須
- 取得項目:以下の定数
- SNSR_Biometric_HumanPresense
- 人が存在した場合に True
- SNSR_Biometric_HumanProximity
- 人との距離(メートル)
- SNSR_Electrical_Capacitance
- 静電容量(ファラド)
- SNSR_Electrical_Resistance
- 電気抵抗(オーム)
- SNSR_Electrical_Inductance
- 誘導係数(ヘンリー)
- SNSR_Electrical_Current
- 電流(アンペア)
- SNSR_Electrical_Voltage
- 電圧(ボルト)
- SNSR_Electrical_Power
- 電力(ワット)
- SNSR_Environmental_Temperature
- 気温(セ氏)
- SNSR_Environmental_Pressure
- 気圧(バール)
- SNSR_Environmental_Humidity
- 湿度(パーセンテージ)
- SNSR_Environmental_WindDirection
- 風向(度数)
- SNSR_Environmental_WindSpeed
- 風速(メートル毎秒)
- SNSR_Light_Lux
- 照度(ルクス)
- SNSR_Light_Temperature
- 光色温度(ケルビン)
- SNSR_Mechanical_Force
- 力(ニュートン)
- SNSR_Mechanical_AbsPressure
- 絶対圧(パスカル)
- SNSR_Mechanical_GaugePressure
- ゲージ圧(パスカル)
- SNSR_Mechanical_Weight
- 重量(キログラム)
- SNSR_Motion_AccelerationX, Y, Z
- X/Y/Z軸 加速度(ガル)
- SNSR_Motion_AngleAccelX, Y, Z
- X/Y/Z軸 角加速度(度毎秒毎秒)
- SNSR_Motion_Speed
- 速度(メートル毎秒)
- SNSR_Scanner_RFIDTag
- RFIDタグの40ビット値
- SNSR_Scanner_BarcodeData
- バーコードデータを表す文字列
- SNSR_Orientation_TiltX, Y, Z
- X/Y/Z 軸角(度)
- SNSR_Orientation_DistanceX, Y, Z
- X/Y/Z 距離(メートル)
- SNSR_Orientation_MagHeading
- 磁北基準未補正コンパス方位
- SNSR_Orientation_TrueHeading
- 真北基準未補正コンパス方位
- SNSR_Orientation_CompMagHeading
- 磁北基準補正済みコンパス方位
- SNSR_Orientation_CompTrueHeading
- 真北基準補正済みコンパス方位
- SNSR_Location_Altitude
- 海抜(メートル)
- SNSR_Location_Latitude
- 緯度(度数)
- SNSR_Location_Longitude
- 経度(度数)
- SNSR_Location_Speed
- スピード(メートル毎秒)
- 戻り値
- 取得したセンサー値
プログラム実行例
環境センサーから位置情報を取得し、Googleマップで表示
DIM IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.Visible = TRUE
DIM latitude = SENSOR(SNSR_Location_Latitude)
DIM longitude = SENSOR(SNSR_Location_Longitude)
IE.Navigate("https://www.google.co.jp/maps/@" + latitude + "," + longitude + ",15z?hl=ja")
BusyWait(IE)
// 終了する
// IE.Quit
//////////////////////////////////////////////////
// 【引数】
// array : 要素を追加する配列(参照引数)
// values : 追加する要素をvalue1から指定
// 【戻り値】
// 処理後の配列の要素の数
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
DIM i = 1
WHILE EVAL("value" + i) <> EMPTY
DIM res = RESIZE(array, UBound(array) + 1)
array[res] = EVAL("value" + i)
i = i + 1
WEND
RESULT = LENGTH(array)
FEND
//////////////////////////////////////////////////
// 【引数】
// needle : 検索する値
// haystack : 配列
// 【戻り値】
// needleが見つかった場合に配列のキー
//////////////////////////////////////////////////
FUNCTION arraySearch(needle, haystack[])
DIM i = 0
FOR item IN haystack
IFB item = needle THEN
RESULT = i
EXIT
ENDIF
i = i + 1
NEXT
FEND
//////////////////////////////////////////////////
// 【引数】
// IE : IEオブジェクト
// 【戻り値】
//
//////////////////////////////////////////////////
PROCEDURE BusyWait(Var IE)
SLEEP(0.500)
DIM t = GETTIME()
TRY
REPEAT
DIM tm = GETTIME() - t
FUKIDASI("BusyWait:" + tm)
SLEEP(0.010)
IF tm >= 60 THEN BREAK
UNTIL !IE.Busy AND IE.readyState = 4
EXCEPT
IE = getIEObj(-1)
PRINT IE.document.URL + " のIEオブジェクトを取得しました。"
BusyWait(IE)
ENDTRY
FUKIDASI()
FEND
//////////////////////////////////////////////////
// 【引数】
// 文字列 or 数値 : 取得したい<a href="https://uwsc.jp/com/ie/" >InternetExplorer オブジェクト</a>のタイトル・URLもしくは数値を指定
// 完全一致フラグ : (TRUE : 文字列が完全一致したものを取得、FALSE : 文字列の一部を含むものを取得)
// 【戻り値】
// 条件に一致する<a href="https://uwsc.jp/com/ie" >InternetExplorer</a>
//////////////////////////////////////////////////
FUNCTION getIEObj(str, flg = FALSE)
DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM ShellWindows = Shell.Windows
DIM IE[-1]
FOR i = 0 TO ShellWindows.Count - 1
TRY
IFB ShellWindows.Item(i).Name = "Internet Explorer" THEN
arrayPush(IE, ShellWindows.Item(i))
ENDIF
EXCEPT
ENDTRY
NEXT
SELECT CHKNUM(str)
CASE TRUE
IFB str = 0 THEN
RESULT = LENGTH(IE)
ELSE
IF str < 0 THEN str = str + LENGTH(IE) + 1
TRY
RESULT = IE[str-1]
EXCEPT
RESULT = ERR_VALUE
ENDTRY
ENDIF
CASE FALSE
DIM pattern = IIF(flg, "^" + str + "$", str)
DIM titleList = SLICE(IE)
FOR i = 0 TO UBound(titleList)
titleList[i] = titleList[i].Document.title
NEXT
DIM urlList = SLICE(IE)
FOR i = 0 TO UBound(urlList)
urlList[i] = urlList[i].Document.URL
NEXT
DIM num = ERR_VALUE
SELECT TRUE
CASE pregGrep(pattern, titleList) <> FALSE; num = arraySearch(pregGrep(pattern, titleList)[0], titleList)
CASE pregGrep(pattern, urlList) <> FALSE; num = arraySearch(pregGrep(pattern, urlList)[0], urlList)
SELEND
TRY
RESULT = IE[num]
EXCEPT
RESULT = ERR_VALUE
ENDTRY
SELEND
FEND
//////////////////////////////////////////////////
// 【引数】
// expr : 評価する式
// truepart : 評価した式がTrueのときに返す値
// falsepart : 評価した式がFalseのときに返す値
// 【戻り値】
// truepart : 評価した式がTrueのとき、falsepart : 評価した式がFalseのとき
//////////////////////////////////////////////////
FUNCTION IIF(expr, truepart, falsepart)
IFB EVAL(expr) THEN
RESULT = truepart
ELSE
RESULT = falsepart
ENDIF
FEND
//////////////////////////////////////////////////
// 【引数】
// pattern : 検索するパターンを表す文字列
// array : 検索される配列
// 【戻り値】
//
//////////////////////////////////////////////////
FUNCTION pregGrep(pattern, array[], flags = 0)
DIM res[-1]
FOR item IN array
IF reTest(item, pattern) THEN arrayPush(res, item)
NEXT
RESULT = SLICE(res)
FEND
//////////////////////////////////////////////////
// 【引数】
// str : 正規表現による検索の対象となる文字列
// Pattern : 正規表現で使用するパターンを設定
// IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse
// Global : 文字列全体を検索する場合はTrue、しない場合はFalse
// 【戻り値】
// 正規表現にマッチするかどうかを示すブール値
//////////////////////////////////////////////////
FUNCTION reTest(str, Pattern, IgnoreCase = TRUE, Global = TRUE)
DIM re = CREATEOLEOBJ("VBScript.RegExp")
re.Pattern = Pattern
re.IgnoreCase = IgnoreCase
re.Global = Global
RESULT = re.Test(str)
FEND
//////////////////////////////////////////////////
// 【引数】
// inputs : 繰り返す文字列
// multiplier : inputsを繰り返す回数
// 【戻り値】
// inputsをmultiplier回を繰り返した文字列を返します
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
DIM res = ""
FOR n = 1 TO multiplier
res = res + inputs
NEXT
RESULT = res
FEND
//////////////////////////////////////////////////
// 【引数】
// arrayname : 上限値を求める配列の名前
// dimension : 返す次元を示す整数
// 【戻り値】
// 配列の上限値
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
使用関数