블루투스 – 근거리 무선기술 표준. 기기 간에 무선 연결을 통해 쌍방 통신을 할 수 있도록 지원한다.
화면 구성
<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); });
})
};
책에 있는 내용을 직접 입력한 것이므로 오타가 있을 수 있음. 아직 타이젠 스튜디오 상에서 빌드 안해봄.
'타이젠' 카테고리의 다른 글
타이젠 폰에서 받아온 count 값을 js와 php로 db 저장하기 (0) | 2018.02.17 |
---|---|
타이젠 블루투스 (0) | 2018.01.27 |
웹앱으로 Hello World! 출력 (0) | 2017.11.10 |
타이젠 개발자 포럼에 올린 질문 글에 대한 답변 (0) | 2017.10.25 |
타이젠 개발자 포럼에 올린 질문 글 (0) | 2017.10.17 |