var responseData = {code : '',
status:'',
mgdl:'',
mmoll:'',
data:{}}
var save_point = 0
// 数据包
var packetArr = []
// function appendPacket(dataStr){
// var dataArr = packetArr
// // 拆分成数组
// while (i < dataStr.length) {
// dataArr.push(dataStr.substr(i, 2))
// i += 2
// if (dataArr[0] == '55' && dataArr.length >= 8 && dataArr[2] == '03') {
// }
// }
// if (dataStr.substr(0,2) == '55'){
// packetStr = dataStr
// save_point = packetStr.length
// if (save_point > 8) {
// save_point = 0
// return true
// }
// return false
// }
// packetStr = packetStr + dataStr
// return false
// }
function clearData(){
responseData = {
code: '',
status: '',
mgdl: '',
mmoll: '',
data: {}
}
packetArr = []
}
function bioland_analysisPacket_bloodPressure(dataStr, callBack){
// 第6位才能区分包类别 低于6位肯定不是正确数据
if (dataStr.length > 6) {
var dataArr = []
var i = 0
// 拆分成数组
while (i < dataStr.length) {
dataArr.push(dataStr.substr(i, 2))
i += 2
}
// 固定码不对 证明不是正确数据
if (dataArr[0] != '55') {
responseData = {}
return
}
// 信息包 过程 结果 错误 结束
switch (dataArr[2]) {
case '00':
deviceInfo(dataArr)
console.log('信息包')
break
case '02':
measuring[dataArr]
break
case '03':
console.log('结果包', dataArr)
measurementComplete(dataArr)
break
case 'ee':
errorData(dataArr)
console.log('错误包')
break
case '05':
transmitComplete(dataArr)
console.log('结束包')
break
}
callBack(responseData)
}
}
function deviceInfo(dataArr) {
responseData.code = '0'
responseData.status = '成功获取到设备信息'
// if(dataArr[5] != '02'){
// responseData.code = 'e'
// responseData.status = '设备不匹配,请连接指定血压计'
// }
}
function errorData(dataArr) {
hexToDecimal(dataArr)
responseData.code = 'e'
responseData.status = '测量出错'
responseData.data.errorCode = dataArr[3]
}
// 获取到测量结果
function measurementComplete(dataArr) {
responseData.code = '3'
responseData.status = '测量完成'
console.log("measurementComplete:",dataArr)
var munber = parseInt(dataArr[10] + dataArr[9], 16)
responseData.mgdl = munber
responseData.mmoll = (munber/18).toFixed(1)
// // 收缩压 数据的高字节加低字节
// responseData.data.systolic = parseInt(dataArr[10] + dataArr[9], 16)
// // 舒张压
// responseData.data.diastolic = parseInt(dataArr[11], 16)
// responseData.data.pulse = parseInt(dataArr[12], 16)
}
// 测量中
function measuring(dataArr) {
responseData.code = '2'
responseData.status = '测量中...'
// 压力值
// responseData.data.pressure = dataArr[5] + dataArr[6]
// responseData.data.heartbeat = dataArr[3]
}
// 传输完成
function transmitComplete(dataArr) {
responseData.code = '5'
responseData.status = '测量完成'
}
function responseDataChange(){
callBack(responseData)
}
// 把包类别之后的16进制数据转换为10进制数据
function hexToDecimal(dataArr) {
dataArr.map(function (item,index) {
if(index > 2){
item = parseInt(item, 16)
}
return item
})
}
module.exports = {
bioland_analysisPacket_bloodPressure: bioland_analysisPacket_bloodPressure,
clearData: clearData
}