|
<script type="text/javascript">
var obj = {
//"name":"t3-p3hyyy","address":"14:6B:9C:78:4A:B1"
address : '7C:03:AB:AE:81:AA',
UUID : '',
data : 'hello,word',
isHex : false,
charset : 'UTF-8',
bufferSize : 1024,
isReturnHex : true,
isNoReturnData : true,
returnStrCharset : 'UTF-8',
isConnected: false,
isConnecting: false,
isServerClient:true,
receiveDataArr:[]
}
var client={
type: Object,
required: true
}
var SPPServerTpl = {
isServerRun: false,
Server_UUID: "00001101-0000-1000-8000-00805F9B34FB",
client: null
}
var apiready = function(){
var cxgBluetoothBase = api.require('cxgBluetoothBase');
var cxgBluetoothClient = api.require('cxgBluetoothClient');
var cxgBluetoothServer = api.require('cxgBluetoothServer');
onsyncClientsInfo()
onsyncServersInfo()
onsetReadDataCallback(client)
}
//监听蓝牙状态
// function onisEnabledBluetooth(){
// // console.log(obj)
// api.require("cxgBluetoothBase").isEnabledBluetooth({}, function(ret, err) {
// if (!err) {
// alert(ret.state);
// console.log(ret.state)
// } else {
// alert("code: " + err.code + " msg: " + err.msg);
// console.log("code: " + err.code + " msg: " + err.msg)
// }
// });
// }
//打开蓝牙
function onopenBluetooth(){
api.require("cxgBluetoothBase").openBluetooth({}, function(ret, err) {
if (!err) {
// alert(ret.state);
// onstartServer();
// onsetReadDataCallback()
console.log(ret.state)
} else {
alert("code: " + err.code + " msg: " + err.msg);
}
});
}
//关闭蓝牙
function oncloseBluetooth(){
api.require("cxgBluetoothBase").closeBluetooth({}, function(ret, err) {
if (!err) {
alert(ret.state);
console.log(ret.state)
} else {
alert("code: " + err.code + " msg: " + err.msg);
console.log("code: " + err.code + " msg: " + err.msg)
}
});
}
//监听蓝牙的状态变化, 多次返回
// function onlistenBluetoothStatus(){
// api.require("cxgBluetoothBase").listenBluetoothStatus({}, function(ret, err) {
// if (!err) {
// alert(ret.status);
// console.log(ret.state)
// } else {
// alert("code: " + err.code + " msg: " + err.msg);
// console.log("code: " + err.code + " msg: " + err.msg)
// }
// });
// }
//获取已经配对的设备
// function onbondedDevices(){
// api.require("cxgBluetoothBase").bondedDevices({}, function(ret, err) {
// if (!err) {
// console.log(JSON.stringify(ret.data))
// alert(JSON.stringify(ret.data));
// } else {
// alert("code: " + err.code + " msg: " + err.msg);
// console.log("code: " + err.code + " msg: " + err.msg)
// }
// });
// }
//搜索蓝牙中
function onisScanning(){
api.require("cxgBluetoothBase").isScanning({}, function(ret, err) {
if (!err) {
alert(ret.state);
console.log(ret.state)
} else {
alert("code: " + err.code + " msg: " + err.msg);
console.log("code: " + err.code + " msg: " + err.msg)
}
});
}
//停止搜索蓝牙
function onstopScan(obj){
api.require("cxgBluetoothBase").stopScan({}, function(ret, err) {
if (!err) {
alert("搜索成功,请开启蓝牙服务后连接设备")
console.log(ret.state)
} else {
alert("code: " + err.code + " msg: " + err.msg);
console.log("code: " + err.code + " msg: " + err.msg)
}
});
}
//搜索蓝牙
function onscan(){
api.require("cxgBluetoothBase").scan({}, function(ret, err) {
if (!err) {
if (ret.data == "ACTION_DISCOVERY_FINISHED") {
alert("未搜到相关设备,请重新搜索");
} else {
if(ret.data.name == 't3-p3hyyy' || ret.data.name == 'HONOR 9X'|| ret.data.name == '红米手机'){
obj.address = ret.data.address
onstopScan()
}
console.log(JSON.stringify(ret.data))
}
} else {
alert("code: " + err.code + " msg: " + err.msg);
console.log("code: " + err.code + " msg: " + err.msg)
}
});
}
function ondisconnect(){
api.require("cxgBluetoothClient").disconnect({
address: obj.address,
UUID:"00001101-0000-1000-8000-00805F9B34FB"
}, function(ret, err) {
if (!err) {
obj.isConnected = false;
obj.isConnecting = false;
alert("断开连接成功");
} else {
alert("code: " + err.code + " msg: " + err.msg);
console.log("code: " + err.code + " msg: " + err.msg)
}
});
}
//发送数据
function onsendData(){
var objsendData = obj
api.require("cxgBluetoothClient").sendData({
address: obj.address,
UUID:"00001101-0000-1000-8000-00805F9B34FB",
data: obj.data,
isHex:false,
charset:obj.returnStrCharset,
},function(ret, err) {
if (!err) {
console.log(JSON.stringify(ret))
alert(`${obj.data}
发送成功`);
// objsendData.receiveDataArr.push(obj.data)
// add()
// onsendDataServerClient()
// onsyncServersInfo()
// onsetReadDataCallback(objsendData)
} else {
alert("code: " + err.code + " msg: " + err.msg);
console.log("code: " + err.code + " msg: " + err.msg)
}
});
}
//创建蓝牙服务UUID
function onstartServer(){
var objsendData = obj
api.require("cxgBluetoothServer").startServer({
isNewStartServer: false,
Server_UUID:SPPServerTpl.Server_UUID
}, function(ret, err) {
if (!err) {
if (typeof ret.data == "object") {
alert(JSON.stringify(ret.data));
console.log(JSON.stringify(ret))
obj.isConnected = true;
// onsetReadDataCallback(objsendData)
obj.address = ret.data.address;
onsyncClientsInfo()
onsetReadDataCallback(objsendData)
}
if (ret.data.disconnectAddress){
alert("外设断开");
}
if (ret.data === true) {
objsendData.isServerRun = true;
// setReadDataCallbackServerClient(serverData)
onsetReadDataCallback(objsendData)
alert("创建服务成功");
}
} else {
console.log("code: " + err.code + " msg: " + err.msg)
}
});
}
//连接蓝牙
function onconnect(){
var objsendData = obj
obj.isConnected = false;
obj.isConnecting = true;
api.require("cxgBluetoothClient").connect({
address: obj.address,
UUID:"00001101-0000-1000-8000-00805F9B34FB"
},function(ret, err) {
if (!err) {
if (ret.data === true) {
obj.isConnected = true;
obj.isConnecting = false;
// setReadDataCallbackServerClient()
onsetReadDataCallback(objsendData)
// onsyncClientsInfo(objsendData)
// onsyncServersInfo(objsendData)
alert("连接成功");
onsyncServersInfo()
// add()
}
if (ret.data.disconnectAddress) {
obj.isConnected = false;
obj.isConnecting = false;
alert("断开连接成功");
}
} else {
if(err.code == 5){
obj.isConnected = false;
obj.isConnecting = false;
alert("该客户端已连接");
}else{
obj.isConnected = false;
obj.isConnecting = false;
alert('连接失败,请重新连接');
console.log("code: " + err.code + " msg: " + err.msg)
}
}
});
}
//设置读取数据回调
function onsetReadDataCallback(objsendData,isHex = false){
api.require("cxgBluetoothClient").setReadDataCallback(
{
address: obj.address,
UUID:"00001101-0000-1000-8000-00805F9B34FB",
bufferSize: obj.bufferSize,
isReturnHex: isHex,
isNoReturnData: obj.isNoReturnData,
returnStrCharset:obj.returnStrCharset,
},
(ret, err) => {
if (!err) {
if (ret.data === true) {
objsendData.isReturnHex = isHex
alert("设置成功")
// return;
}
if (obj.receiveDataArr.length > 20) {
obj.receiveDataArr = [];
}
objsendData.receiveDataArr.push(ret.data);
alert(objsendData)
add(objsendData.receiveDataArr)
// console.log(JSON.stringify(obj))
} else {
objsendData.isConnected = false;
// alert("code: " + err.codeJ + " msg: " + err.msg);
// console.log("code: " + err.code + " msg: " + err.msg)
}
});
}
function add(receiveDataArr){
receiveDataArr.forEach((item)=>{
alert(item)
})
// alert(JSON.stringify(obj.data))
}
// onsetReadDataCallback()
//同步数据
function onsyncClientsInfo(){
api.require("cxgBluetoothClient").syncClientsInfo({},
function(ret, err) {
if (!err) {
//具体使用方法见demo
// ret.data[0].isServerClient =obj.isServerClient
console.log(JSON.stringify(ret.data))
alert('客户端')
} else {
alert("code: " + err.code + " msg: " + err.msg);
}
});
}
//同步服务端数据
function onsyncServersInfo(){
api.require("cxgBluetoothServer").syncServersInfo({},
function(ret, err) {
if (!err) {
// ret.data[0].client.isNoReturnData = obj.isNoReturnData
console.log(JSON.stringify(ret.data));
alert(JSON.stringify(ret.data));
alert('服务端')
} else {
alert("code: " + err.code + " msg: " + err.msg);
}
});
}
//关闭蓝牙服务
function onstopServer(){
api.require("cxgBluetoothServer").stopServer({
isRemove: false,
Server_UUID:"00001101-0000-1000-8000-00805F9B34FB"
}, function(ret, err) {
if (!err) {
alert("服务关闭");
} else {
alert("code: " + err.code + " msg: " + err.msg);
}
});
}
//读取数据
function setReadDataCallbackServerClient(serverData,isHex = false){
console.log(JSON.stringify(serverData))
api.require("cxgBluetoothServer").setReadDataCallbackServerClient(
{
address: serverData.address,
UUID:"00001101-0000-1000-8000-00805F9B34FB",
bufferSize: serverData.bufferSize,
isReturnHex: serverData.isReturnHex,
isNoReturnData: false,
},
function(ret, err) {
if (!err) {
if (ret.data === true) {
alert("设置成功");
return;
}
alert(ret.data);
} else {
alert("code: " + err.code + " msg: " + err.msg);
}
});
}
// setReadDataCallbackServerClient()
//发送数据
// function onsendDataServerClient(){
// api.require("cxgBluetoothServer").sendDataServerClient({
// Server_UUID:"00001101-0000-1000-8000-00805F9B34FB",
// data: "九星",
// isHex:false,
// charset:"UTF-8"
// },function(ret, err) {
// if (!err) {
// console.log(JSON.stringify(ret))
// alert("发送成功");
// } else {
// alert("code: " + err.code + " msg: " + err.msg);
// }
// });
// }
</script>
|
|