2014-05-17 19:49:54 mr_raptor 阅读数 31318
  • Android 高级专题

    本课程包含23章,共计95个小节课程,内容包括:Android多线程、网络编程、数据解析、数据存储、多媒体、Android 图形图像、Android 动画、GPS 定位、 Android 传感器编程、蓝牙、NDK、消息推送、二维码生成与扫描、分享和第三方登录、Bmob云服务、Afinal框架、 XUtils框架、版本控制、性能测试(听云)、App发布上线、Vitamio 跨平台播放器、EventBus、Android MVP 架构等。

    10596 人正在学习 去看看 郭宏志

PS:最近一直在搞Android上的蓝牙应用,每次在PC上调试蓝牙设备中的数据还可以,但是在Android手机上就非常不方便,所以自己写了个简单的Android蓝牙调试助手,希望各位下载使用,如有问题和Bug跟贴。

 

源码下载地址:

https://github.com/michaeltom/BluetoothHelper

 

程序文件名:

 BluetoothHelper.apk

 

文件大小:29K

 

图标:

 

安装:

如果装有手机助手,直接双击安装即可。

 

运行截图:

 

点击“Scan”按钮,进入选择设备页面。

 

 

 

 

 

 

 

 

 

2015-07-14 09:22:06 yanyan2009145339 阅读数 1291
  • Android 高级专题

    本课程包含23章,共计95个小节课程,内容包括:Android多线程、网络编程、数据解析、数据存储、多媒体、Android 图形图像、Android 动画、GPS 定位、 Android 传感器编程、蓝牙、NDK、消息推送、二维码生成与扫描、分享和第三方登录、Bmob云服务、Afinal框架、 XUtils框架、版本控制、性能测试(听云)、App发布上线、Vitamio 跨平台播放器、EventBus、Android MVP 架构等。

    10596 人正在学习 去看看 郭宏志
1,创建蓝牙工程
2,导入头文件
  #import <CoreBluetooth/CoreBluetooth.h>
3,实现代理 <CBCentralManagerDelegate,CBPeripheralDelegate>
4,创建中心设备和外部设备数组,并初始化。

   中心设备和外设联机的文字描述为:

        1):iOS这边蓝牙中心管理器开始扫描广播包(扫描的时长可以自己写一个定时器控制,并且可以设定扫描的具体条件)
        2):外设开始广播(当然外设的广播时长也是可以设定的,这是硬件那边的事,不太懂)
        3):iOS发现有广播包,就请求连接外设(这是底层自动实现,我们不需要写代码),之后外设会接收到连接请求,如果外设接收这个连接请求,就会给iOS那边发送一个连接请求的确认包,当iOS这边收到这个包后,两边设备就完成了连接.
        4):连接成功之后IOS这边就可以读取外设的相关信息了,比如服务号CBService,特征值号CBCharacteristic,还有外设的一些硬件信息,电池电量,信号强度RSSI什么的.
        5):在正常连接的过程中总会出现点意外,如果两个设备突然断掉了连接,一般我们还是希望它们能够再次连接的,这里就得要看硬件和iOS程序里对于连接断开的处理代码了.
        6):外设和IOS端也可以主动发起断开连接的请求.
     //中心设备
     @property (nonatomic,strong)CBCentralManager *cBCenterMgr;
     //外部设备数组
     @property (nonatomic,strong)NSMutableArray *perpheralArray;

5,实现代理方法
    #pragma mark----CBCentralManagerDelegate
      //判断中心设备蓝牙开启状态,如果开启,则启动扫描。
                 这个方法主要是来检查IOS设备的蓝牙硬件的状态的,比如说设备不支持蓝牙4.0,或者说设备的蓝牙没有开启,没有被授权什么的,一般是确定了iOS设备的蓝牙处于打开的情况下,才应该执行扫描的动作,
      - (void)centralManagerDidUpdateState:(CBCentralManager *)central;
      //发现设备,如果发现设备,则加入中心设备数组。
      - (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI;
      //链接蓝牙设备。
      - (void)connectPeripheral:(CBPeripheral *)peripheral options:(NSDictionary *)options;
             //取消连接设备
      - (void)cancelPeripheralConnection:(CBPeripheral *)peripheral;
      //链接外设成功回调,在这个方法里,可以执行停止中心设备的扫描的操作。
               如果能回调到下面这个方法,说明已经成功连接外设了
      - (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral
      //断开外设后回调,在这个方法里,可以执行重连等操作。
      - (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error

    #pragma mark----CBPeripheralDelegate
       //扫描外设中的服务
      - (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error
      {
          [peripheral discoverCharacteristics:nil forService:service];
      }
       //扫描服务中的特征,在这个方法中,可以取到特定的特征。

                能进入到这个方法,说明已经读取到某个特征值UUID了,到达这一步,我们基本上也完成对外设的层层剥离了,接下来就是一些对某个特征值的读写操作了,当然我们首先要找到我们需要写数据的特征值UUID了,这里我们可以简单地通过循环来找出外设含有的某个特征值UUID。
      - (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService          *)service error:(NSError *)error
      //中心读取外设实时数据
      - (void)peripheral:(CBPeripheral *)peripheral didUpdateNotificationStateForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error
      {
         if (characteristic.isNotifying) {
             [peripheral readValueForCharacteristic:characteristic];
          }
       }
       //检测中心向外设写数据是否成功
      -(void)peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error
      
        //获取外设发来的数据,不论是readnotify,获取数据都是从这个方法中读取。
      - (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error
      
6,设置通知,往特征里写数据。(写入数据和设置通知的特征是不同的两个特征),可以根据通过 characteristic.properties来查看各个特征的属性值,先设置通知,再写入值。
      - (void)setNotifyValue:(BOOL)enabled forCharacteristic:(CBCharacteristic *)characteristic;
      - (void)writeValue:(NSData *)data forCharacteristic:(CBCharacteristic *)characteristic type:(CBCharacteristicWriteType)type;
7,取出从外设传来的数据。
2017-01-07 15:39:22 xiaojie0000 阅读数 1863
  • Android 高级专题

    本课程包含23章,共计95个小节课程,内容包括:Android多线程、网络编程、数据解析、数据存储、多媒体、Android 图形图像、Android 动画、GPS 定位、 Android 传感器编程、蓝牙、NDK、消息推送、二维码生成与扫描、分享和第三方登录、Bmob云服务、Afinal框架、 XUtils框架、版本控制、性能测试(听云)、App发布上线、Vitamio 跨平台播放器、EventBus、Android MVP 架构等。

    10596 人正在学习 去看看 郭宏志

android平台的网络和蓝牙调试助手,包括UDP,TCP服务端,TCP客户端,手机之间蓝牙通讯,手机与蓝牙串口模块之间通讯,比较适合学生,测试用,小白作品。

下载地址:http://download.csdn.net/detail/xiaojie0000/9731394

效果图:


2016-08-03 15:20:58 fengshiguang2012 阅读数 1205
  • Android 高级专题

    本课程包含23章,共计95个小节课程,内容包括:Android多线程、网络编程、数据解析、数据存储、多媒体、Android 图形图像、Android 动画、GPS 定位、 Android 传感器编程、蓝牙、NDK、消息推送、二维码生成与扫描、分享和第三方登录、Bmob云服务、Afinal框架、 XUtils框架、版本控制、性能测试(听云)、App发布上线、Vitamio 跨平台播放器、EventBus、Android MVP 架构等。

    10596 人正在学习 去看看 郭宏志

1.首先,打开手表的蓝牙调试,一般点击版本号7次可以打开开发者选项

2.下载Android Wear中国版,在设置中通过蓝牙调试会显示:主机:断开连接,目标:已连接

3.在CMD中执行

adb forward tcp:4444 localabstract:/adb-hub

adb connect 127.0.0.1:4444

则会显示:主机:已连接,目标:已连接

4.然后运行程序时就可以选择华为Watch了。

5.常用命令:

 进入手表Shell

adb -s 127.0.0.1:4444 shell

截图

screencap -p /sdcard/DCIM/t1.png

导出文件

adb -s 127.0.0.1:4444 pull /sdcard/DCIM/t1.png

卸载程序

adb -s 127.0.0.1:4444 uninstall com.example.admin.wearapplication

2019-08-14 16:57:54 XLazyDog 阅读数 263
  • Android 高级专题

    本课程包含23章,共计95个小节课程,内容包括:Android多线程、网络编程、数据解析、数据存储、多媒体、Android 图形图像、Android 动画、GPS 定位、 Android 传感器编程、蓝牙、NDK、消息推送、二维码生成与扫描、分享和第三方登录、Bmob云服务、Afinal框架、 XUtils框架、版本控制、性能测试(听云)、App发布上线、Vitamio 跨平台播放器、EventBus、Android MVP 架构等。

    10596 人正在学习 去看看 郭宏志

蓝牙调试器

    这篇文章的受众是本专科院校有理想的青年或已经踏入社会的电子工程师们。本文章旨在介绍一款在Android设备上通过使用蓝牙功能实现无线调试的应用。

一、蓝牙调试器介绍

    此蓝牙调试器历时一个多月开发完成,其基于安卓设备,通过安卓设备的蓝牙通信功能实现单片机的无线调试。编写这款软件的目的主要是为了盈利, 嗯,当然是为了广大的单片机开发爱好者,拯救他们于繁琐的调试步骤之中。没错,我已经做好了一分钱都收不到的觉悟了,为此我在这个应用的开头加了个广告,至少保证我能一天收入一根冰棍。

   先说一下本应用适用的场景,首先最迫切需要本应用的场景是采用PID或者其它控制器的单片机系统,比如自写飞行器飞控、自写直立车控制、智能车竞赛、板球控制系统、风力摆控制系统、倒立摆控制系统、电机调速系统、温控系统、液位系统等等。总之所有需要不断设置参数以获得最佳效果的单片机系统都是我要搭救的目标。

    不说废话了,前方大量截图警报!!!

在使用本应用前,你首先需要有这种模块(HC-05、HC-06 或者 其它支持串口数据透传的模块):

 

蓝牙串口模块

    本应用针对一些BLE透传模块专门做过优化,可以支持一部分BLE蓝牙透传模块,如JDY-08型,至于其它的模块由于舍不得买我也就不知道能不能用了。

二、设备的扫描和连接

 

设备扫描列表

    打开应用,会出现上图的界面。应用提供了一个蓝牙设备扫描和连接的界面,点击下方的圆形按钮可以启动扫描功能,扫描到的设备会出现在列表中。

    点击列表中右方的加号按钮进行连接,初次连接可能会弹出设备配对的对话框,需要输入配对密码,此时不要慌,尝试输入0000或者 1234,一般是会通过的,不然就输入123456,如果还不行那只有一种可能就是此蓝牙模块的配对密码被改动过。

    配对成功后,再次点击加号按钮,此时不出意外的话,就可以连接成功了,连接成功后,加号会变成红色的“X”,如果在点击此“X”号的话,则应用会断开与此模块的连接。

    在连接成功后,界面最上方的状态栏会显示已经连接的设备,并且显示当前蓝牙连接的数据收发的情况。

注意:1.当开启扫描时,应用会自动断开当前正在连接的设备

           2.应用无法连接手机等设备,只能与蓝牙串口模块建立通信

三、简单文本收发

 

对话模式

    成功连接设备后,可以使用应用直接与蓝牙模块实现文本形式的发送和接收。在下方的输入框输入要发送的文本数据,然后点击向上的箭头,文本就会被发送到蓝牙模块。此时单片机就可以从蓝牙模块的TX口接收到传输的数据。

注意:1、蓝牙模块的串口波特率的设定是非常重要的,单片机的串口在配置时一定要与蓝牙模块的串口波特率一致,否则只能接收到乱码。

           2、在传输较大量的数据时(超过每秒500B),需要确保蓝牙模块被设定为较高的串口波特率。

四、快捷按钮发送

 

按钮界面

    应用共11个可自定义的按钮,按下和抬起时都会发送不同的数据,从而适用更多的使用场景。画面上方的空白横条将会将会显示从单片机传输过来的数据,可以用来观察单片机的状态。点击右下角的编辑模式,然后点击按钮即可编辑按钮。

 

按钮编辑

    对于每个按钮,都可以编辑其显示名称、按下时发送的数据和松开时发送的数据。编辑结束后,可以按下“结束编辑”按钮,应用会退出编辑模式,再按按钮时即发送数据,这一点非常人性化,嗯,个人认为。

五、调试工程

5.1 添加工程

 

调试工程列表

    调试工程这一功能是应用最核心的功能,它提供了高度自由化的控制界面让你可以为你的设计实时调试参数,实时反馈状态,并以波形的形式显示出来。对于每一个设计你都可以对应的建立一个工程。

点击下面的“+”按钮可以添加新的工程。

 

添加新工程

    在此,你可以为你的工程命名,并可以选择以横屏或者竖屏的界面来调试。

 

工程列表

    可以看到已经添加了一个工程,这个工程所有的配置会一直保留,直到你将应用卸载。此时点击此工程可以弹出操作选项。

调试工程下方的四个选项

    工程下有四个选项,第一个是修改名称,同时也可以改变调试的横竖屏方向。第二个是控件布局的编辑,你可以自由定义多种控件以支持你的调试。第三个是通信设置,设置通信结构是最为重要的一个环节,你需要根据实际要反馈的状态和要设定的参数进行配置。第四个是删除工程。

此时点开“编辑控件”按钮。

5.2 编辑控件

 

控件编辑

    图为编辑控件的界面,右上角有一堆工具,靠上方的分别是:新建控件、控件数据链接、控件参数设置、控件删除以及退出调试。靠右方的三个按钮则是编辑模式切换:分别为位置、大小和旋转。

此时点击“新建控件”。

 

控件列表

    本应用支持多种控件,可以根据实际要操作的变量合理选择。此时点击“按钮”控件。

为控件链接数据

    此时会出现链接对话框,要求你为新建的控件链接一个变量。之后当你按下按钮时,其链接的变量就会被赋值。然后发送到单片机端。由于我事先没有在“通信设置”中添加变量,因此现在暂时不链接。点击对话框以外的区域跳过此步骤。

 

按钮

    此时会发现画面中多了一个按钮,你可以按住它并来回拖动,左下方会显示该按钮的坐标以及尺寸。如果你觉得按钮太小,可以点击右上角的缩放按钮,然后手指在屏幕中向右下角滑动

 

按钮放大

如此就实现了控件缩放的调整。如果你想要控件摆放的不拘一格,那么你可以点击右上角的旋转按钮,然后手指在屏幕中左右滑动。

 

按钮旋转

    如此就实现了控件的旋转,现在多添加几个控件。

 

几种不同的控件

    从上到下依次是按钮、开关、文本框、可编辑文本框、能量槽、滑动条和参数微调框。

此外,还有三个大家伙:

 

三个大控件

分别是X-Y型波形图,摇杆和Y-T型波形图:

X-Y型波形图可以显示由两个变量表示的点,并记录和显示这个点的轨迹。

摇杆,就是摇杆,手指在摇杆区域拖动时,其XY轴链接的两个变量也会变化。

Y-T型波形图其实就是波形图,最多可以显示六个通道的波形。

编辑完成后,可点击右上角的“X”按钮回到主界面。

5.3 调试界面

 

调试界面

    在主界面中点击调试工程右边的“运行”(三角)按钮。进入调试界面,如上图,此时没有控件编辑的一堆工具了,右上角只有一个“X”,左上角的标签正在显示实时的通信速率。Tx  Rx分别代表手机通过蓝牙发送和接收的速率。而Err则表示手机接收到的数据不准确速率。如果此速率与Rx相近,则说明,单片机没有按照指定的数据包协议传输数据。

    以上是没有链接变量的调试界面,接下来要加入变量了。

5.4 数据设置

5.4.1 数据包结构设置

数据结构设置

    在主界面,点击调试工程下面的黑色按钮“通信设置”。进入通信设置界面,可能你会感到一阵头晕,东西好抽象。其实一点都不抽象,让我来理一理。首先,看界面的上半部分,有一个白色区域,里面有比例条状图形,这个比例条状的图就描述了数据包的结构中各个成分的占比。比如我现在没有添加变量,那么只有一个黑色的包头字节和灰色的校验和包尾字节,共三个字节。点击右上角的“?”看一下数据包的解释。

 

数据包解释

    这已经是我能想到的最简单的一种可以按结构进行数据传输的协议了。包头、校验、包尾的存在意义就是为了同步,将数据按照一定的结构发出去然后从接收端取出来。再看下半部分:

 

五种类型的变量

    本应用支持五种不同类型的变量:分别为逻辑值、字节值、短整形、整形和浮点型。之所以分类分得如此细,是为了减少通信的数据,减轻单片机的负担,并提高通信的速率。比如逻辑bool类型的值取值只有0和1,而一个逻辑值只占1/8个字节的大小,当控制等的开关,电机的启停、状态的使能时都可以使用bool类型以减轻通信负担。字节类型的取值范围为-128~127,短整形则为-32768~32767,以及范围更大的整形和浮点型。

    对于每一个类型的变量,在右上角都有相应的编辑按钮,“+”为添加变量。绿色按钮为修改名称。“X”为删除变量。

现在添加一个逻辑值变量:

 

添加一个变量

 

添加变量后

     可以看到,在界面上半部分的比例条状图中,多出了一个紫色块,下面的列表中多了一个“led1”的圆圈。再多添加几个变量:

添加多个变量

    你可以自由地无限添加变量,数目是没有限制的。配置好发送数据包后,可以在下方可以选择接收数据包,接收数据包描述的是单片机发过来的数据的结构,因此你在通过单片机回传数据的时候,也要以规定的协议发送数据。

5.4.2 通信模式设置

然后是“通信模式”的设置。点击下方的通信模式按钮,进入设置界面:

通信模式设置

    应用支持三种通信行为,一种是定时向单片机发送数据包,单片机接收到数据后,将当前需要的状态数据打包回传到手机。第二种是不发送只接收单片机定时向手机发送的数据包。第三种则是比较高级,由于用户并不是每时每刻都在修改参数,因此定时发送的数据包会有大量的重复,发送没有意义。为了解决这个问题,在第三种模式下,应用只有在用户操作控件时才发送数据包。这样可以大幅减轻单片机处理数据的负担。除了设置通信模式外,还可以设置定时发送时的发送间隔。以及控件操作时发送的数据间隔等。

5.5 控件数据链接

    设置好数据包变量后,进入“控件编辑”界面,为现有的控件链接变量。如下图所示

 

选中摇杆

点击选中中间的摇杆,然后点击上方的绿色链接按钮,出现如下画面

链接变量

    在此界面中,你可以选择要连接的变量的方向、类型以及名称。这里我链接了之前定义的发送方向、short类型的X变量和Y变量。选定后点击对话框周围的区域进入下一步。

控件参数设定

    应用需要你指定这个摇杆的上下限,默认为-128~127,同时你也可以设置其它参数比如使摇杆在你松开后自动归零。此时点击“OK”。以同样的方法配置其它的控件,返回主界面,进入调试界面:

调试界面

    可以看到在下面的波形显示中已经有一条黄线了,只是由于现在没有配置好接收数据包的结构,因此波形没有起伏。至此调试功能基本就简单的介绍到这了,里面各种控件的使用可以自行摸索。

六、设置

设置

    设置界面主要是设置关于蓝牙的表现,如自动扫描,自动连接等。同时应用支持过滤的功能,你可以通过输入关键字的方式让设备列表中只出现相关的设备,而不会出现手机等设备乱入的情况。

    好了,这就是关于蓝牙调试器的简单介绍了,之后会以实战的形式带大家领略其强大的功能。相信我,用这个应用可以让你把单片机玩出花来。

其实现在这个应用还远没有做到预期效果,目前正在考虑加入 重力感应控件、二值化图像传输、HEX收发功能,添加TCP/IP网络设备调试等。但我已经花费了一个月多的时间,现在看来并没有多少人用,心中难免失落。

如果你觉得我做的东西有些意义的话, 评论或者打赏支持一下吧,让我有坚持“不务正业”下去的动力。

蓝牙Android

阅读数 288

没有更多推荐了,返回首页