Leica仪器通过蓝牙与Android手机连接
最近在捣鼓Leica仪器通过蓝牙与Android手机连接,把此事记录一下,希望对其他人有用。
一、各种连接不成功
最早自己使用的是Google官方的例子:BluetoothChat,相信很多人都是从这个例子开始研究蓝牙的,但这次却给我带来了不少麻烦:那就是各种连接不上。
先说说我遇到的情况:虽然自己在Leica的技术参考文件中找到了连接用的PIN码是0000,但还是显示连接不上。
二、咨询Leica官方客服
首先说Leica官方并没有给我解决问题,但给我指了一条路。
我描述了一下自己遇到的问题,Leica那面表示仪器的设置并没有问题,可以找找其他的问题(当时他们建议我用电脑先连一下试试,结果用电脑很快就连通了,没有遇到任何问题)。这时才意识到自己的方向搞错了。
当时总结可能有两方面原因:
1、蓝牙版本问题。第一时间就想否认此问题的,因为一般设备都是向下兼容的。在网络上查了也的确是这样,就排除了这个问题。
2、蓝牙协议问题。经网络搜索,真的是这个问题,具体下面细说。
三、关于蓝牙的协议
对于蓝牙协议现在了没有搞太清楚,大致就是Android之间相互连接用的应该是一种比较新的协议,然后低端的单片机、Windows CE设备等用的是SPP协议。SPP协议的根本想法是将蓝牙的数据模拟成串口数据。当时一看到这个就感觉自己找对了,因为在全站仪上确实需要像设置串口一样设置蓝牙。
3.1 Leica仪器设置 
仪器端口设置如下:
设备中的RS232是通过“F5”设置的。对于协议这里多说一句,如果选用“GSI输出”的话用无就可以了。一般在使用GeoCOM时选用“ RS232 GSI”,选用了此协议的话,仪器每发出一条信息需要手机给发一个特定的回执才能继续工作,否则仪器会弹出提示信息。
3.2 Android手机设置
首先明确一点,Android手机的蓝牙设置中有一个“蓝牙配对”的功能,不必使用这个功能,因为协议的问题,用此功能对全站仪进行连接时无法连接成功。需要手动编写代码才能连接成功。
不要把写代码看的很复杂,因为有很多大神已经将代码写好了,你只要引用就可以了,下面隆重介绍一个蓝牙SPP的库:BluetoothSPPLibrary,一个泰国的人写的,用起来非常简单。这用这个写了一个简单的示例程序,大家可以下载:ConnectToTotalStation
简单的说明一下连接过程:
1、导入类库
2、权限声明
1 2 |
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> |
3、声明蓝牙SPP类
1 |
BluetoothSPP bt = new BluetoothSPP(Context); |
4、确认蓝牙是否可用
1 2 3 |
if(!bt.isBluetoothAvailable()) { // any command for bluetooth is not available } |
5、连接蓝牙
1 |
bt.startService(BluetoothState.DEVICE_OTHER); |
6、断开连接
1 |
bt.stopService(); |
当然,这个类库还有更多的功能大家自己去发现吧。
关于全站仪蓝牙连接就写么多了。
原创文章,文章首发于:Riley Ge (@rileyge) — Steemit
原创文章,转载请注明: 转载自TsonTec:测量解决方案提供者
本文链接地址: Leica仪器通过蓝牙与Android手机连接
博主,你全站仪是用的模拟器么?最近在研究,但手里没有全站仪。
对你爱爱爱不完,我可以天天月月年年看你博客到永远!
从百度进来的,博客不错哦!
谢谢
很棒!感谢分享
学习使人进步,到此拜读!