본문 바로가기

타이젠

타이젠 블루투스 (빌드 전)

블루투스 근거리 무선기술 표준. 기기 간에 무선 연결을 통해 쌍방 통신을 할 수 있도록 지원한다.

 

화면 구성

<body>

<div data-role=“page” id=“pageList”>

<div data-role=“header” data-position=“fixed”>

<h1>블루투스검색</h1>

</div><!-- /header-->

<div data-role=“content”>

<div data-role=“button” id=“btnCreate”>블루투스 연결</div>

<div id=“divAdapter”></div>

<div data-role=“button” id=“btnDiscovery”>주변기기 찾기</div>

<ul data-role=“listview” id=“listDevice” data-fast scroll=“true”>

</ul>

</div><!--/content-->

</div><!--/page-->

<div data-role=“page” id=“pageDetail”>

<div data-role=“header” data-position=“fixed”>

<h1>블루투스데이터전송</h1>

</div><!--/header-->

<div data-role=“content”>

<label>선택된 디바이스</label>

<input type=“text” id=“txtDeviceName”>

<input type=“text” id=“txtDeviceAddress”>

<div data-role=“button” id=“btnDevice”>디바이스연결</div>

<div id=“divDeviceInfo”></div>

<hr/>

<input type=“text” id=“txtSendData”

<div data-role=“button” id=“btnSendData”>데이터 보내기</div>

<div id=“divReceiveData”></div>

</div><!--/content-->

</div><!--/page-->

</body>

 

블루투스 목록을 읽어오고 블루투스를 선택하면 통신한다.

 

var adapter;

var listDeviceElement;

var listDevice;

var cancelDiscovery = function(){

adapter.stopDiscovery(function(){

console.log(“Stop discovery success.”);

},

function (e){

console.log(“Error while stopDiscovery:” + e.message);

});

}

var startDiscovery = function(){

var discoverDevicesSuccessCallback = {

onstarted:function(){

//찾기 시작

},

ondevicefound:function(device){

listDevice.addItem(“<li devicename=’”+device.name+“’deviceaddress=’”+device.address+“’>Name:”+device.name+“,Address:”+device.address+“</li>”);

listDevice.refresh();

cancelDiscovery();

},

ondevicedisappeared:function(address){

},

onfinished:function(devices){

}

};

//소켓찾기

adapter.discoverDevices(discoverDevicesSuccessCallback, function(e){

alert(“디바이스를 찾을 수 없습니다.”)

});

}

var onSetPoweredError = function(e){

alert(e.message);

}

var onSocketError = function(err){

alert(err.name);

}

var onSocketConnected = function(socket){

socket.onmessage = function(){

document.getElementById(“divReceiveData”).innerHTML=

String.fromCharCode.apply(String, socket.readData()) + “<br/>”+

document.getElementById(“divReceiveData”).innerHTML;

};

socket.onclose = function(){

alert(“소켓이 종료되었습니다.”+socket.peer.name);

};

//데이터를 전송한다.

tau.event.on(document.getElementById(“btnSendData”),“tap”,function(){

var sendData = document.getElementById(“txtSendData”).value;

var sendDataArray = new Array();

for(var i = 0; i < sendData.length; i++){

sendDataArray[i] = sendData.charCodeAt(i);

}

socket.writeData(sendDataArray);

});

}

//디바이스가 준비되었을 경우

onDeviceReady = function(device){

document.getElementById(“divDeviceinfo”).innerHTML=

“uuids:”+device.uuids+“<br>”+

“name:”+device.name+“<br>”+

“address:”+device.address+“<br>”+

“isBonded:”+device.isBonded+“<br>”+

“deviceClass:”+device.deviceClass+“<br>”;

var uuidss = “” + device.uuids;//string형태로 변경

if(device.uuids.indexOf(uuids) != -1){

device.connectToServiceByUUID(uuids.onSocketConnected, onSocketError);

}

else{

alert(“연결할 수 없습니다.”);

}

}

//함수 초기화

var init = function(){

console.log(“init() called”);

listDeviceElement = document.getElementById(“listDevice”);

listDevice = tau.widget.Listview(listDeviceElement);

//목록에서 디바이스를 선택함

tau.event.on(listDeviceElement, “tap”, function(event){

document.getElementById(“txtDevicename”).value=

event.target.getAttribute(“devicename”);

document.getElementById(“txtDeviceAddress”).value=

event.target.getAttribute(“deviceaddress”);

tau.changepage(“#pageDetail”);

});

//어댑터를 생성함

tau.event.on(document.getElementById(“btnCreate”),“tap”,function(){

adapter = tizen.bluetooth.getDefaultAdapter();

document.getElementById(“divAdapter”).innerHTML = “어댑터 생성”;

});

//주변기기를 생성함

tau.event.on(document.getElementById(“btnDiscovery”),“tap”,function(){

adapter.setPowered(true,startDiscovery,onSetPoweredError);

});

//디바이스를 생성함

tau.event.on(document.getElementById(“btnDevice”),“tap”,function(){

adapter.getDevice(document.getElementById(“txtDeviceAddress”).value,

onDeviceReady,

function(e) {alert(e.message); });

})

};


책에 있는 내용을 직접 입력한 것이므로 오타가 있을 수 있음. 아직 타이젠 스튜디오 상에서 빌드 안해봄.