| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398 |
- const data_trans = getApp()
- const utils_base64 = require('../../utils/util.js')
- const websocket_api = require('../../utils/socket_api.js')
- const get_date_api = require('../../utils/getDate.js')
- var initData = '以下为操作结果:'
- var extraLine = [];
- Page({
- data: {
- log_text: initData,
- inputText: '',
- receiveText: '',
- log_text_area: '',
- connectedDeviceId: '',
- services: {},
- characteristics: {},
- name:'',
- advertisData:'',
- connected: true,
- salt:'',
- //下拉框相关的.
- display: 'none',
- proShow: false,
- proindex: 0, //255
- proData: [],
- phyAddrInfoLIst: [], //保存物理地址信息,包括中文名,英文名,枚举值
- claShow: false,
- claindex: 0, //255
- claData: [],
- didNameInfoList:[], //保存did信息,包括中文名,英文名
- },
- add: function (e) {
- extraLine.push(e)
- this.setData({
- log_text_area: initData + '\n' + extraLine.join('\n')
- })
- },
- remove: function (e) {
- if (extraLine.length > 0) {
- extraLine.pop(e)
- this.setData({
- log_text_area: initData + '\n' + extraLine.join('\n')
- })
- }
- },
- // 点击下拉专业显示框
- selectCom() {
- var that = this;
- console.log(that.data.proShow)
- if (that.data.proShow) {
- that.setData({
- display: 'none'
- })
- } else {
- that.setData({
- display: 'block',
- })
- }
- that.setData({
- proShow: !that.data.proShow,
- claShow: false
- })
- },
- //点击选择部件
- optionUnit(e) {
- var that = this;
- var phyAddrIndex = e.currentTarget.dataset.proindex;
- console.log("phyAddrIndex:", phyAddrIndex)
- console.log("name_cn:", that.data.phyAddrInfoLIst.args[phyAddrIndex].name_cn)
- console.log("enum_value:", that.data.phyAddrInfoLIst.args[phyAddrIndex].enum_value)
- that.setData({
- proindex: phyAddrIndex,
- proShow: !that.data.proShow,
- display: 'none',
- })
- wx.request({
- url: 'http://www.id27149.com:2222/codecInfo',//服务器接口地址
- method:'POST',//请求类型
- header: {'content-type': 'application/json'},
- data: {'method':'get_read_did_name_list','args':["BMW_790", that.data.phyAddrInfoLIst.args[phyAddrIndex].enum_value]},
- success: function(res) {
- console.log('请求did列表成功,res:', res.data)
- //把请求到的原始数据放到phyAddrInfoLIst里
- that.setData({
- didNameInfoList: res.data
- })
- //把请求到的部件名称放到下拉框列表里面
- var did_list = []
- for (var i = 0; i < res.data.args.length; i++) {
- did_list[i] = res.data.args[i][1]
- }
- that.setData({
- claData: did_list
- })
- },
- fail: function() {
- console.log('请求did列表失败')
- }
- })
- },
- //点击下拉框:功能支持情况
- selectFeature() {
- var that = this;
- if (that.data.claShow) {
- that.setData({
- display: 'none',
- })
- } else {
- that.setData({
- display: 'block',
- })
- }
- that.setData({
- claShow: !that.data.claShow,
- proShow: false
- })
- },
- optionFeature(e) {
- var that = this;
- var claindex = e.currentTarget.dataset.claindex;
- console.log("optionFeature:", claindex)
- that.setData({
- claindex: claindex,
- claShow: !that.data.claShow,
- display: 'none'
- })
- },
- //隐藏遮罩层
- hiddenShadow:function(){
- this.setData({
- display:'none',
- proShow:false,
- claShow:false
- })
- },
-
- GetSelectListInfo:function(){
- var that = this;
- console.log("按下获取下拉框选择情况按钮")
- if(that.data.proData != null){
- console.log("当前选择物理地址情况如下:")
- console.log("proindex:", that.data.proindex)
- console.log("name_cn:", that.data.phyAddrInfoLIst.args[that.data.proindex].name_cn)
- console.log("enum_value:", that.data.phyAddrInfoLIst.args[that.data.proindex].enum_value)
- }else{
- console.log("部件下拉列表框更新失败")
- }
- if(that.data.claData != null){
- console.log("当前选择did情况如下:")
- console.log("optionFeature:", that.data.claindex)
- console.log("name_en:", that.data.didNameInfoList.args[that.data.claindex][0])
- console.log("name_ch:", that.data.didNameInfoList.args[that.data.claindex][1])
- }else{
- console.log("功能下拉列表框更新失败")
- }
- console.log("点击获取信息按钮,向服务器请求did")
- var phy_enum_val = that.data.phyAddrInfoLIst.args[that.data.proindex].enum_value
- var did_name = that.data.didNameInfoList.args[that.data.claindex][0]
- websocket_api.SocketTxMsg(
- JSON.stringify({
- "method": "read_did",
- "args": {'N_TA':phy_enum_val,'did_list':[did_name]}
- }),
- this.WebsocketSendSuccessEvent,
- this.WebsocketSendFailEvent
- )
- },
- //获取文字输入框内容
- bindInput: function (e) {
- this.setData({
- inputText: e.detail.value
- })
- console.log(e.detail.value)
- },
- WebsocketSendSuccessEvent:function (res) {
- console.log("socket发送成功,res:",res)
- },
- WebsocketSendFailEvent:function (res) {
- console.log("socket发送失败,res:", res)
- },
- //发送指令
- SendBleData: function (str) {
- var that = this
- //正常的下发蓝牙数据
- if (that.data.connected) {
- // 把string转换为hex后进行发送
- var buffer = data_trans.stringToHexBuffer(str)
- wx.writeBLECharacteristicValue({
- deviceId: that.data.connectedDeviceId,
- serviceId: '0000FEE7-0000-1000-8000-00805F9B34FB',
- characteristicId: '000036F5-0000-1000-8000-00805F9B34FB',
- value: buffer,
- success: function (res) {
- console.log('发送成功')
- }
- })
- }
- else {
- wx.showModal({
- title: '提示',
- content: '蓝牙已断开',
- showCancel: false,
- success: function (res) {
- that.setData({
- searching: false
- })
- }
- })
- }
- },
- onSocketMessageCallback:function(res){
- console.log("收到编解码socket消息:", res);
- if(res == "heartbeat") {
- console.log("rx server heartbeat")
- } else {
- //字符串转为字典.
- const dict = JSON.parse(res)
- if(dict['method'] == "send_data"){
- console.log("将数据通过蓝牙发送至设备,", dict['args'])
- this.SendBleData(dict['args'])
- } else if(dict['method'] == "task_result") {
- //显示到界面上
- var that = this
- // that.setData({receiveText: JSON.stringify(dict['args'])})
- var date = new Date()
- // var nowtime = util.formatTime(date);
- this.add(get_date_api.formatTime(date) + ":" + JSON.stringify(dict['args']))
- // this.add(JSON.stringify(dict['args']))
- // that.setData({log_text_area: JSON.stringify(dict['args'])})
- }
- }
- },
- WebsocketConnStart:function () {
- console.log("启动连接编解码socket")
- const Host = 'ws://id27149.com:2222/codec'
- websocket_api.connectSocket(
- Host,
- this.WebsocketConnSuccessEvent,
- this.WebsocketConnFailEvent
- )},
- WebsocketCloseSuccessEvent:function (res) {
- console.log("编解码socket连接关闭成功",)
- },
-
- WebsocketCloseFailEvent:function (res) {
- console.log("编解码socket连接关闭失败,res:", res)
- },
- onLoad: function (options) {
- //进入页面时的操作.
- var that = this
- //建立socket连接.
- this.WebsocketConnStart()
- // 设置socket接收到消息的回调
- websocket_api.onSocketMessageCallback = this.onSocketMessageCallback;
- //刚进入界面时请求下下拉框列表
- wx.request({
- url: 'http://www.id27149.com:2222/codecInfo',//更新下拉框内容服务器接口地址
- method:'POST',//请求类型
- header: {'content-type': 'application/json'},
- data: {'method':'get_device_phy_value_list','args':["BMW_790"]},
- success: function(res) {
- console.log('请求物理列表成功,res:', res.data)
- //把请求到的原始数据放到phyAddrInfoLIst里
- that.setData({
- phyAddrInfoLIst: res.data
- })
- //把请求到的部件名称放到下拉框列表里面
- var phy_list = []
- for (var i = 0; i < res.data.args.length; i++) {
- phy_list[i] = res.data.args[i].name_cn
- }
- that.setData({
- proData: phy_list
- })
- console.log("当前选中的物理列表index:", that.data.proindex)
- console.log("当前选中的物理value:", that.data.phyAddrInfoLIst.args[that.data.proindex].enum_value)
- //紧接着请求当前物理部件的did list
- wx.request({
- url: 'http://www.id27149.com:2222/codecInfo',//服务器接口地址
- method:'POST',//请求类型
- header: {'content-type': 'application/json'},
- data: {'method':'get_read_did_name_list','args':["BMW_790", that.data.phyAddrInfoLIst.args[that.data.proindex].enum_value]},
- success: function(res) {
- console.log('请求did列表成功,res:', res.data)
- //把请求到的原始数据放到phyAddrInfoLIst里
- that.setData({
- didNameInfoList: res.data
- })
- //把请求到的部件名称放到下拉框列表里面
- var did_list = []
- for (var i = 0; i < res.data.args.length; i++) {
- did_list[i] = res.data.args[i][1]
- }
- that.setData({
- claData: did_list
- })
- },
- fail: function() {
- console.log('请求did列表失败')
- }
- })
- },
- fail: function() {
- console.log('请求物理列表失败')
- }
- })
- that.setData({
- connectedDeviceId: options.connectedDeviceId,
- name:options.name,
- advertisData:options.advertisData
- })
- wx.getBLEDeviceServices({
- deviceId: that.data.connectedDeviceId,
- success: function (res) {
- console.log(res.services)
- that.setData({
- services: res.services
- })
- wx.getBLEDeviceCharacteristics({
- deviceId: options.connectedDeviceId,
- serviceId: res.services[0].uuid,
- success: function (res) {
- console.log(res.characteristics)
- that.setData({
- characteristics: res.characteristics
- })
- wx.notifyBLECharacteristicValueChange({
- state: true,
- deviceId: options.connectedDeviceId,
- serviceId: '0000FEE7-0000-1000-8000-00805F9B34FB',
- characteristicId: '000036F6-0000-1000-8000-00805F9B34FB',
- success: function (res) {
- console.log('启用notify成功')
- }
- })
- }
- })
- }
- })
- wx.onBLEConnectionStateChange(function (res) {
- console.log(res.connected)
- that.setData({
- connected: res.connected
- })
- })
-
- //注册接收到蓝牙消息之后的回调函数
- //蓝牙设备发送的消息
- wx.onBLECharacteristicValueChange(function (res) {
- var receiveText = data_trans.ab2hex(res.value)
- console.log('接收到以下蓝牙数据透传至服务器:' + receiveText)
- //发送至服务器,
- websocket_api.SocketTxMsg(
- JSON.stringify({"method": "data","args": receiveText}),
- this.WebsocketSendSuccessEvent,
- this.WebsocketSendFailEvent
- )
- // //显示到界面上
- // that.setData({receiveText: receiveText})
- })
- },
-
- onUnload: function(){
- console.log("页面退出,关闭socket连接")
- websocket_api.closeSocket(this.WebsocketCloseSuccessEvent, this.WebsocketCloseFailEvent);
- },
- onReady: function () {
- },
- onShow: function () {
- },
- onHide: function () {
- console.log('hide')
- }
- })
|