忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
Bluetooth通信を備えたハンディスキャナではその通信でプリンタなどへの データの送受信ができます。

■Bluetooth機器との送受信について

Bluetooth通信で外部機器とデータの送受信を行う場合は、以下の一連の命令の実行で行います。

・OPEN命令によりBluetoothデバイスファイルをオープンする。
 (リモートデバイスへのシリアルポート接続が行われる)
・シリアル通信処理を行う。
 (送信処理:PRINT #命令
 (受信処理:INPUT$関数LOC関数EOF関数などを使用)
・バーコードバッファから読込まれた文字列を取得する。
・CLOSE命令によりBluetoothデバイスファイルをクローズする。

Bluetoothデバイスのオープンの OPEN命令 について説明します。

[書式]
 OPEN "COM4:M, サービスプロファイル [, [デバイスアドレス][, [パスキー][, [タイムアウト]
[, [セキュリティモード]]]]]" AS [#] ファイル番号
<引き数>
・[COM4:M]は自分自身をマスタとして接続先をスレーブとする
・サービスプロファイル
 ■SDAP:サービス検索
 ■SPP:シリアルポートプロファイル
 ■DUN:ダイヤルアップ接続プロファイル

・[デバイスアドレス]:Bluetooth デバイスアドレス
  12 文字の16 進数文字列で指定

・[パスキー]:Bluetooth パスキー

・[タイムアウト]:接続が完了までの最大待ち時間(1~255秒)

・[セキュリティモード]:接続時のセキュリティモード
  1:セキュリティなし
  2:セキュリティあり
  3:セキュリティあり、暗号化あり
  4:シンプルペアリング

上記の他の詳しい内容については各BHTの取説を見てください。

■オープン指定の例

OPEN "COM4:M,SPP,112233AABBCC,,30,1" AS #2

この例では自分自身をマスタとして、 シリアルポートプロファイルを使用してBluetooth 通信行います。 Bluetooth デバイスアドレスは 112233AABBCC で、接続タイムアウトは30秒です。
このオープン例を使ったプログラムは以下の様になりますが、 各機器に合わせてシリアル送受信処理は組む必要があります。
  'Bluetoothオープン
  OPEN "COM4:M,SPP,112233AABBCC,,30,1" AS #2
  'シリアル通信処理
  
  '--データ送信処理--
  PRINT #2,"TESTDATA";	'送信データは仮のもの
  
  '--データ受信処理--
  'ここにINPUT$関数などでデータを取得し、
  '各機器ごとに合わせた処理を記述する

  'Bluetoothクローズ
  CLOSE #2


■Bluetoothデバイスアドレス取得について

対応する機器のアドレスが前もってわかっているのであれば、 直接そのアドレスをプログラムに埋め込んでもいいのですが、 実際の場合は機器交換などもありますので、 Bluetoothデバイスから通信で取得できた方がいいと思います。

Bluetoothデバイスアドレス取得を行う簡単なプログラムを以下に示します。

	SCREEN 1				'漢字モード
	LOCATE , , 2			'カーソルをブロック表示

	PRIVATE I%
	PRIVATE strBtAddr$(7)[12]	'Bluetoothデバイスアドレス
	PRIVATE intBtNum%			'Bluetoothデバイス数
	'Bluetooth検出オープン
	OPEN "COM4:I,60,1" AS #2 ' デバイス検出時間:60秒
	'検出機器数:8台
	intBtNum% = 8
	'検出結果を読み出し
	CALL "BT.FN3" .fcBTInqRes intBtNum%, strBtAddr$()
	'Bluetooth検出クローズ
	CLOSE #2
	'検出したBluetoothアドレス表示
	PRINT "BlueTooth-Addr"
	FOR I% = 0 TO 7
		PRINT "Addr" + STR$(I%) + ":" + strBtAddr$(i%)
	NEXT I%
	WAIT 0, &H1
	END

Bluetooth機器が複数あった場合にはその台数分のアドレスが検出できます。 但し、1台だけに絞る場合は、対象Bluetooth機器のみを電源投入し検出すればできるとは思います。



=====
2016/04/02:の時の情報











PR

コメント

コメントを書く