SENSORセンサー関数

本ページには広告が含まれています。

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マップで表示

UWSC
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 : 配列 
// 【戻り値】
//   
//////////////////////////////////////////////////
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 : 文字列の一部を含むものを取得) 
// 【戻り値】
//   
//////////////////////////////////////////////////
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のときに返す値 
// 【戻り値】
//   
//////////////////////////////////////////////////
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を繰り返す回数 
// 【戻り値】
//   
//////////////////////////////////////////////////
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
使用関数