精华内容
下载资源
问答
  • 微信蓝牙设备开发教程之获取蓝牙设备deviceid和设备二维码,微信获取蓝牙设备id和二维码

    已推出最新微信硬件jsapi学习笔记 地址 http://www.vxzsk.com/282.html

    要想获取设备的deviceid和设备的二维码,必须满足1个条件,设备所属的产品号码product_id,产品的id在添加设备列表中查询,@V型知识库原创如下图:


    红色圈箭头所指的就是产品号码product_id

    java代码如下:

    package com.wepayweb.weixin.util.device;
    /***
     * V型知识库 www.vxzsk.com
     */
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;
    public class DeviceTest {
         
        public static String sendGet(String url, String charset, int timeout)
          {
            String result = "";
            try
            {
              URL u = new URL(url);
              try
              {
                URLConnection conn = u.openConnection();
                conn.connect();
                conn.setConnectTimeout(timeout);
                BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));
                String line="";
                while ((line = in.readLine()) != null)
                {
                 
                  result = result + line;
                }
                in.close();
              } catch (IOException e) {
                return result;
              }
            }
            catch (MalformedURLException e)
            {
              return result;
            }
             
            return result;
          }
     
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String access_token="";//
            String product_id="";
            String data = DeviceTest.sendGet("https://api.weixin.qq.com/device/getqrcode?access_token="+access_token+"&product_id="+product_id, "utf-8", 30000);
            System.out.println("获取设备的deviceid和二维码:"+data);
        }
     
    }
    main方法中大概是49行acess_token参数请参考如何获取access_token章节。

    第二个参数product_id已经在上面说过,还是不清楚的读者请看上面的图片所标示的。

    执行main方法后,返回的数据大概结构如下:

    正确的Json返回结果:

    {"base_resp":{"errcode":0,"errmsg":"ok"},"deviceid":"gh_1755c346b0b9_004cb738ac631af0","qrticket":"http:\/\/we.qq.com\/d\/AQ2DBteOl389f6b19HSo_uPMm-7ubPTjFztb-iCSa"}
    上面的json字符串是我给我自己的蓝牙设备产品生成了一个唯一的二维码,deviceid已经写的很清楚了,可能初学者很迷惑,二维码呢?在哪里在哪里?其实qrticket这个字段就是二维码,我们把qrticket的值复制出来,然后百度二维码生成器,把连接复制到生成器里点击生成即可生成图片样式的二维码,操作如下:



    图示中的链接实际上有个小问题,就是"\"一定要去掉

    错误的Json返回示例:

    {resp_msg:{"ret_code":-1," error_info":"system error"}}

    如果返回错误 请核查自己的product_id和access_token是否正确。

    好了,到此我们已经获取到蓝牙设备的deviceid和二维码了,特别说明:我们这里生成的deviceid并不是硬件厂商给设备烧制的id而是微信公众平台自行给我们生成的设备id 和硬件厂商烧制的并不是同一个id。

    提醒读者,生成设备的二维码图片不要急于打开微信和手机蓝牙,扫描绑定设备连接,因为我们只是生成了设备的二维码和id而已,即使绑定设备后,也是无法和设备的进行蓝牙连接的,因为我们还未给设备授权。下一节将会讲解设备授权,敬请期待!



     

    展开全文
  • 蓝牙设备开发的三种方式

    千次阅读 2014-08-05 22:21:45
    蓝牙设备开发一般包含蓝牙芯片及主机的开发。主机部分根据应用情况可以是PC,单片机,ARM等。蓝牙通讯协议是一组协议的集合,从最底层的硬件驱动,到上层的通讯协议,都由明确的规定。蓝牙设备必须实现这些协议组,...
    

    蓝牙设备开发一般包含蓝牙芯片及主机的开发。主机部分根据应用情况可以是PC,单片机,ARM等。蓝牙通讯协议是一组协议的集合,从最底层的硬件驱动,到上层的通讯协议,都由明确的规定。蓝牙设备必须实现这些协议组,才能与其他标准蓝牙设备进行无缝通讯。

    对于中上层的协议,既可以由主机实现,也可以在蓝牙芯片上实现,根据蓝牙芯片与主机所要实现的协议多少,可以分为三种蓝牙设备的开发方式。

     

    方式一:

    主机实现到HCI层,底层由蓝牙芯片实现。HCI层实现的是蓝牙芯片与主机通讯的方式。目前一般是串口或者USB通讯。所谓的USB也不是真正意义上的USB通讯,而是类似与USB转串口的方式,即通过驱动模拟USB设备实现串口通讯。目前USB蓝牙适配器基本都是这种设备模式。PC端实现了L2CAP, SDP, RFCOMM协议,以及USB转串口的驱动。Windows XP SP2操作系统以上版本的都内置了这些协议栈,还有如WIDCOMM等公司提供的第三方协议栈。


    方式二:

     

                这类设备其实所有的蓝牙相关的协议都由蓝牙芯片实现了。主机端只进行应用程序的开发。一般像单片机等资源较少的主机采用这种方式。比如目前的蓝牙串口适配器,单片机只需要与该适配器进行串口通讯,蓝牙所有的通讯协议都由蓝牙芯片进行实现。

     

    方式三:

     

    这种方式一般就不需要主机端,是真正意义上的单芯片方案。所有的程序包括协议的实现以及应用程序都由蓝牙芯片实现。比如现在市场上卖的蓝牙耳机,就是采用这种方式。蓝牙芯片不仅实现音频数据的蓝牙收发,而且实现了音频数据的解码播发。

    http://blog.chinaunix.net/uid-14753126-id-3038262.html

    展开全文
  • 微信硬件平台蓝牙设备开发(一)

    千次阅读 2016-11-11 11:03:38
    微信硬件平台蓝牙设备开发——接入 需求:用户关注微信公众号(服务号)后可控制特定蓝牙硬件设备。 实现方案:通过微信硬件平台提供的硬件JSAPI来实现蓝牙设备与微信之间的互联和通讯,框架如下图,核心为:开发H5...

    微信硬件平台蓝牙设备开发——接入


    需求:用户关注微信公众号(服务号)后可控制特定蓝牙硬件设备。

    实现方案:通过微信硬件平台提供的硬件JSAPI来实现蓝牙设备与微信之间的互联和通讯,框架如下图,核心为:开发H5页面,链入公众号菜单内。




    1、申请公众号

     开发测试号已经可以使用JSAPI,前期可使用测试号进行开发调试,本文主要以测试号示例。

    测试帐号申请:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

    公众号申请(服务号): https://mp.weixin.qq.com


    2、开通设备功能、添加产品

    公众平台,点击左边功能栏的"添加功能插件",选择"设备功能"。 测试号在“功能服务”→设备功能中打开。

    添加产品中设置选择“蓝牙”、“蓝牙发现”。


    3.配置服务器

    接口配置信息填写服务器地址(URL)、Token 。Token可由任意填写,用作生成签名,URL需要处理微信服务器将发送的GET请求,需要部署到服务器。

    接入指南:http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html#


    4、设备授权

    硬件需先在微信平台授权后才可接入。授权接口如下
    http请求方式: POST
    https://api.weixin.qq.com/device/authorize_device?access_token=ACCESS_TOKEN

    String deviceId = "gh_248e6ca70bbb_5aab93a29ec0xxxx";  
            String mac = "000E0B10xxxx";// 设备mac地址  
            String params = "{\"device_num\":\"1\",\"device_list\":[{"  
                    + "\"id\":\"" + deviceId + "\"," + "\"mac\":\"" + mac + "\","  
                    + "\"connect_protocol\":\"3\"," + "\"auth_key\":\"\","  
                    + "\"close_strategy\":\"1\"," + "\"conn_strategy\":\"1\","  
                    + "\"crypt_method\":\"0\"," + "\"auth_ver\":\"0\","  
                    + "\"manu_mac_pos\":\"-1\"," + "\"ser_mac_pos\":\"-2\","  
                    + "\"ble_simple_protocol\": \"0\"" + "}],"  
                    + "\"op_type\":\"1\"" + "}";  
            String s = DeviceUtil.sendPost(  
                    "https://api.weixin.qq.com/device/authorize_device?access_token="  
                            + at.getToken(), params);  
    

    
    
    参数获取:
    device_id由公众平台生成,是设备的唯一标识,且与二维码(qrticket字段)存在对应关系。
    获取deviceid和设备二维码方式:

    product_id设备的产品编号(由微信硬件平台分配)。可在公众号设备功能管理页面查询。如下图。


    access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_tokenaccess_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。故需要在服务端进行缓存,定时刷新。

    https://mp.weixin.qq.com/wiki/14/9f9c82c1af308e3b14ba9b973f99a8ba.html

    http请求方式: GET

    完成以上步骤即可编写html控制页面。



    展开全文
  • 微信硬件平台蓝牙设备开发(二)

    千次阅读 2016-11-11 17:21:50
    微信硬件平台蓝牙设备开发——控制 JSAPI:微信JSAPI是网页javascript的接口,通过JSAPI可以对支持该接口的蓝牙设备进行操作。例如扫描设备,连接设备,收发数据,绑定设备等。其与JS-SDK的关系:微信硬件JSAPI接口...

    微信硬件平台蓝牙设备开发——控制

    JSAPI:微信JSAPI是网页javascript的接口,通过JSAPI可以对支持该接口的蓝牙设备进行操作。例如扫描设备,连接设备,收发数据,绑定设备等。
    其与JS-SDK的关系:微信硬件JSAPI接口属于微信JS-SDK的一部分,所以硬件JSAPI的使用首先需要遵循微信JS-SDK的使用规范。
    1、绑定域名
    先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。域名配置有误会报错 “invalid url domain”。
    2、引入JS文件
    新建html页面,并引入如下JS文件:http://res.wx.qq.com/open/js/jweixin-1.0.0.js
    
    3、config接口配置

    wx.config({
        beta:true,   //设置为true ,会在注入wx.invoke方法来调用还未开放的jsapi方法。
        debug: true,  //开启调试模式,
        appId:'wxf74686d92b161ff7',        //登录公众号平台可见
        timestamp: <%=timestamp%>,          
        nonceStr: '<%=nonceStr%>',        
        signature: '<%=signature%>',           
        jsApiList: [                //需要使用的JS接口列表,需要调用的方法都在此声明一下
            "openWXDeviceLib",//初始化设备库
            "closeWXDeviceLib",//关闭设备库
            "getWXDeviceInfos",//获取设备信息(已绑定的蓝牙设备列表)
            "sendDataToWXDevice",//发送数据给设备
            "startScanWXDevice",//扫描设备
            "stopScanWXDevice",//停止扫描
            "connectWXDevice",//连接
            "disconnectWXDevice",//断开连接
            "getWXDeviceTicket",//获取操作证书
            "onWXDeviceBindStateChange",//设备绑定状态被改变时触发
            "onWXDeviceStateChange",//监听连接状态
            "onReceiveDataFromWXDevice",//接收来自连接设备所发送的数据
            "onScanWXDeviceResult",//扫描到设备时会被触发
            "onWXDeviceBluetoothStateChange",//蓝牙开/关切换时触发
        ]
        
    });
    


    签名算法获取signature(附录1中)


    需要参数:noncestr(随机字符串)、timestamp(时间戳)、jsapi_ticket(临时票据)、url(当前网页的URL)。

    示例代码:http://demo.open.weixin.qq.com/jssdk/sample.zip


    4、初始化库
    config 初始化配置成功执行,则会自动调用wx.ready(function(){});所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。
    wx.ready(function () {
    
    	wx.invoke("openWXDeviceLib", {"brandUserName":"gh_248e6ca70bbb"}, function (res) {
    		alert("openWXDeviceLib" + JSON.stringify(res));
    	});
    	wx.on("onWXDeviceBluetoothStateChange", function (res) {
    		alert("onWXDeviceBluetoothStateChange::" + JSON.stringify(res));
    	});
    	wx.on("onWXDeviceBindStateChange", function (res) {
    		alert("onWXDeviceBindStateChange::" + JSON.stringify(res));
    	});
    	wx.on("onWXDeviceStateChange", function (res) {
    		alert("onWXDeviceStateChange::" + JSON.stringify(res));
    	});
    	wx.on("onReceiveDataFromWXDevice", function (res) {
      
    		console.log("onReceiveDataFromWXDevice:: " + str);
    	});
    	});
    


    5、扫描设备


    需要绑定设备时则需先扫描设备,当到某个设备的时候,html会收到事件回调(onScanWXDevicesResult)。

    function staScanWXDevice() {
    		alert("staScanWXDevice");
    //监听扫描结果
    	wx.on("onScanWXDeviceResult", function (res) {
    	    //解析res,获取deviceid,绑定设备需传人此字段 
    	});
    
    //开始扫描
    	wx.invoke("startScanWXDevice", {"btVersion":"ble"}, function (res) {
    	});
    }
    


    6、绑定设备

    /绑定设备
    //先获取操作凭证(type为获取的操作凭证类型,1:绑定设备 2:解绑设备)deviceId  是扫描设备时解析出
    wx.invoke('getWXDeviceTicket',{"deviceId":"gh_248e6ca70bbb_5aab93a29ec00965","type":1},function(res){
        if(res.err_msg !="getWXDeviceTicket:ok"){
                alert("获取操作凭证失败,请重试");  
                return;
        }else{
                    alert("获取操作凭证成功");  
        
            //2. 绑定操作应有后台完成,此处将deviceID和操作凭证传给后台进行绑定   
            //绑定操作需传入用户对应的openid,后台数据库应存储此字段
    		// 获取openid 需进行网页授权
    //https://mp.weixin.qq.com/wiki/4/9ac2e7b1f1d22e9e57260f6553822520.html }
    });
            
    


    7、收发数据

    当前用户绑定设备成功后,再次打开公众号时将尝试自动连接所绑定的设备,android 微信连接成功如图,当连上设备之后,即可对设备进行收发数据。收发数据前需进行base64的编解码。

    发送数据:

    wx.invoke('sendDataToWXDevice', {'deviceId':'gh_248e6ca70bbb_5aab93a29ec0xxxx',"base64Data":base64encode('xxxx')}, function(res){
    	   	alert("connectWXDevice"+JSON.stringify(res));
    
        if(res.err_msg =="sendDataToWXDevice:ok"){
                alert("数据发送成功");
        }else{
                alert("数据发送失败");
    }});
    
    

    接收数据:

    //接收数据
        wx.on('onReceiveDataFromWXDevice',function(res){ 
    	//base64解码
        });
    
    以上实现了与蓝牙硬件设备间的信息交互,发送特定的指令到设备来实现对蓝牙硬件的控制。


    展开全文
  • 微信蓝牙设备开发之初步接入微信硬件jsapi接口
  • 登录微信开发平台 2、开始添加设备 开始添加设备内容 最后直接添加就行 3、生成二维码 写一个http请求 package com.rinlink.intelligent.test; import java.io.BufferedReader; ...
  • 微信硬件开发设备授权
  • 通过BluetoothAdapter的api来开启蓝牙设备,搜索周边的蓝牙设备,然后Android系统以广播的方式告知用户开始,发现,结束三个阶段,并在发现阶段以BluetoothDevice对象的形式发送来蓝牙的相关信息
  • Android对于蓝牙开发从2.0... 首先,要操作蓝牙,先要在AndroidManifest.xml里加入权限 // 管理蓝牙设备的权限 &lt;uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN" /&gt;...
  • 零基础开发蓝牙设备

    千次阅读 2020-11-28 10:40:16
    所以这里我们可以用shineblink.com提供的core物联网核心板,基于core我们能够在短短几分钟内只用几行代码就可以定制出我们自己的蓝牙设备,并且基于core配套的《免开发App》,我们甚至连手机端App开发的工作都省掉了...
  • 安卓蓝牙BLE设备开发

    千次阅读 2016-07-05 14:29:51
    前段时间做了一个有关于安卓蓝牙BLE设备开发项目,主要的功能包括了搜索蓝牙ble设备和ble设备的数据读写等等,本篇博客用于记录安卓蓝牙ble设备的通信的细节。  其实关于BLE设备的通信在API中已经讲地比较清楚了...
  • 需要做一个类似于美团单车小程序扫码开锁的程序,需要使用到微信小程序的蓝牙模块功能与蓝牙锁进行交互 一、这里我先把我遇到的两个天坑在这里先说明一下: 1、根据锁的开发文档描述:读特征值是000036F6-0000-1000...
  • Android蓝牙开发教程(一)——搜索蓝牙设备

    万次阅读 多人点赞 2016-09-05 17:59:16
    本教程主要讲解搜索蓝牙设备蓝牙设备之间的连接和蓝牙之间的通讯三个主要模块。掌握了这三个,基本就能进行简单的蓝牙开发了。 先上效果图 界面比较简单。主要有三个按钮,两个文本和一个列表。三个按钮...
  • Android蓝牙开发(一)之打开蓝牙设备搜索

    万次阅读 多人点赞 2018-08-29 17:10:04
    Android蓝牙开发系列目录: https://blog.csdn.net/huangliniqng/article/details/82185635 一、判断是否系统是否支持蓝牙 在使用蓝牙之前,我们首先要判断手机设备是否支持蓝牙,虽然现在基本都支持蓝牙了,但是...
  • Android Bluetooth蓝牙开发:发现Bluetooth蓝牙设备(1) Android Bluetooth蓝牙作为设备,要与其他蓝牙设备互联,那么先决条件就是已经被发现,本文先简介Android Bluetooth蓝牙的发现。 (1)启动代码后,首先要...
  • 蓝牙通信是我们日常生活中比较方便的一种通信技术,Android从2.0版本的SDK就开始支持蓝牙。对开发人员来说,应用程序中蓝牙还是一种用来创建点对点连接通信的简单而高效的方式。
  • 在上一篇中已经介绍如何搜索附近可连接的蓝牙设备,如果你还没阅读过,建议先看看上一篇文章Android蓝牙开发教程(一)——搜索蓝牙设备获取到设备后就可以开始处理蓝牙设备之间的连接。在上一篇教程中我们将搜索到...
  • 请先阅读: http://blog.csdn.net/angcyo/article/details/520358941:AndroidManifest.xml注册蓝牙扫描广播...--蓝牙广播--> android:name="com.angcyo.bluetooth.BluetoothReceiver" android:exported="true">
  • 进入小程序,先提示用户打开蓝牙,之后再进行下一步操作 Page({ onLoad: function (options) { this.startBlue(); }, startBlue: function () { var _this = this; wx.openBluetoothAdapter({//初始化蓝牙模块...
  • Android Bluetooth蓝牙开发:Bluetooth蓝牙设备之间数据传输(4) 附录文章3简介了Android Bluetooth蓝牙设备之间的连接建立,和Java网络编程的socket套接字连接建立一样,Android不同的Bluetooth蓝牙设备间的...
  • Android Bluetooth蓝牙开发:Bluetooth蓝牙设备之间的连接建立(3) Android Bluetooth蓝牙设备的连接编程模型和Java socket网络连接编程模型类型。Android不同设备间的蓝牙连接,首先在编程模型上分为“服务器端...
  • Android蓝牙开发教程(三)——蓝牙设备相互通讯

    千次阅读 热门讨论 2016-09-06 11:22:10
    在上一篇中已经介绍如何连接我们搜索到的蓝牙设备,如果你还没阅读过,建议先看看上一篇文章Android蓝牙开发教程(二)——连接蓝牙设备在上一篇文章中,无论是自动连接还是被动连接,连接成功后,都是将获取到的...
  • 讲解了打开蓝牙设备和搜索蓝牙设备,这篇文章来讲解蓝牙配对和蓝牙连接 1.蓝牙配对 搜索到蓝牙设备后,将设备信息填充到listview中,点击listiew则请求配对 蓝牙配对有点击配对和自动配对,点击配对就是我们...
  • Android蓝牙开发—经典蓝牙详细开发流程

    万次阅读 多人点赞 2018-07-16 13:41:12
    Android蓝牙开发前,首先要区分是经典蓝牙开发还是BLE(低功耗)蓝牙开发,它们的开发是有区别的,如果还分不清经典蓝牙和BLE(低功耗)蓝牙的小伙伴,可以先看Android蓝牙开发—经典蓝牙和BLE(低功耗)蓝牙的区别 ...
  • 近期做一个扫描附近低功耗蓝牙设备获取到rssi并进行一系列的相对的定位的功能。在开发前期一直使用低版本(Android6.0以下)的手机进行测试,没有任何问题。在运行到Android6.0的手机上后,出了一个问题。 每当扫描...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,672
精华内容 16,268
关键字:

蓝牙设备开发