标签: spp

iOS 7是否通过蓝牙低功耗(v4.0)支持串行端口配置文件(SPP)?

我是否可以使用串行端口配置文件(SPP)通过蓝牙低功耗(v4.0)与iOS设备通信,而无需使用MFi芯片?

profile spp bluetooth-lowenergy ios7

14
推荐指数
3
解决办法
4万
查看次数

SPP配置文件蓝牙iOS

有没有人为iOS获得SPP通信(串行蓝牙)的示例代码?我需要在我的微芯片pic和iPhone或iPod之间进行通信.

我知道我需要一个批准的苹果蓝牙rs232 < - > BT加密狗,我也有一些与MFi合同;)

问候.

serial-port bluetooth ios spp

12
推荐指数
1
解决办法
1万
查看次数

Android 4.0和4.1蓝牙问题.检测破碎的通信并丢弃配对

嘿所有,

据我所知,Android的蓝牙堆栈(bluez)已在4.2上被取代.即使他们可能已经修复了许多以前的问题,但由于需要支持旧版本,我仍然需要与它们进行斗争.

如果有人事先处理过这个问题并且可以解释一些问题,我将非常感激.

问题#1 - 无法检测到损坏的通信(4.0和4.1 Android,Bluez蓝牙堆栈)

蓝牙应用程序连接到我们自己的自定义SPP设备(我们使用标准UUID).它使用蓝牙服务,运行在它自己的进程上.这个应用程序要求运行蓝牙工作几个小时.

省电/屏幕锁定期间,应用程序在数据通过蓝牙无线电进入时保持活动状态,并且我还定期检查设置的警报,我请求CPU时间重新连接并继续工作(如果需要)

现在; 该系统工作正常的大部分时间,但是,在某些罕见的情况下,当屏幕锁定,并在省电模式下,对于原因,我不明白,在写入输出流(蓝牙接口),一切似乎都在没有检测到断开连接的情况下通过.spp设备仍然声明连接和配对有效但没有收到任何信息.

在Android方面,日志显示对BluetoothSocket.cpp :: writeNative的本机调用(假设它与bluez蓝牙堆栈直接相关),似乎只是将字节正确地写入蓝牙无线电而不报告任何类型的错误.

写入输出流的代码段:

public void write(byte[] bytes) {
            try {
                Log.d(LOGGER.TAG_BLUETOOTH," bluetooth bytes to write : "+bytes);
                mmOutStream.write(bytes);
                mmOutStream.flush();
                Log.d(LOGGER.TAG_BLUETOOTH," bluetooth bytes written : "+bytes);
            } catch (IOException e) { 
                e.printStackTrace();
            }
        }
Run Code Online (Sandbox Code Playgroud)

logcat:

D/com.our.app.bluetooth(8711):发送字节:[B @ 41e0bcf8

D/com.our.app.bluetooth(8711):要写的蓝牙字节:[B @ …

android bluetooth spp bluez android-bluetooth

10
推荐指数
1
解决办法
1351
查看次数

检查服务器上是否存在SPP UUID 00001101-0000-1000-8000-00805F9B34FB

我使用Windows 7 PC作为服务器.码:

public class PCSPPServer {
    //start server
    private void startServer() throws IOException{

        //Create a UUID for SPP
        UUID uuid = new UUID("1101", true);
        //Create the servicve url
        String connectionString = "btspp://localhost:" + uuid +";name=Sample SPP Server";

        //open server url
        StreamConnectionNotifier streamConnNotifier = (StreamConnectionNotifier)Connector.open( connectionString );

        //Wait for client connection
        System.out.println("\nServer Started. Waiting for clients to connect...");
        StreamConnection connection=streamConnNotifier.acceptAndOpen();

        RemoteDevice dev = RemoteDevice.getRemoteDevice(connection);
        System.out.println("Remote device address: "+dev.getBluetoothAddress());
        System.out.println("Remote device name: "+dev.getFriendlyName(true));

        //read string from spp client
        InputStream inStream=connection.openInputStream();
        BufferedReader …
Run Code Online (Sandbox Code Playgroud)

uuid android bluetooth spp

9
推荐指数
1
解决办法
1万
查看次数

489次成功连接后,android蓝牙连接失败

不幸的是,我的android蓝牙有一些问题.对于我的测试环境,我使用的是带有Android 4.4.2的Nexus 4.

我的PC上有一个Java应用程序,它使用bluecove作为客户端进行SPP连接.该程序正在寻找一个特殊的服务名称,并与我的Android手机连接.然后它发送72个字节到我的Android手机,并等待答案.得到答案时,程序会睡3秒钟而不是重新开始.

在我的Android手机上,我有一个带有后台蓝牙监听器的应用程序,它在启动时启动.此应用程序基于BluetoothChat示例演示.当接收蓝牙数据时,我检查传入的数据并发回答案.

一切正常.但是在489蓝牙连接之后,Android应用程序在PC-java-app正在进行时失败并显示以下错误代码:

getBluetoothService() called with no BluetoothManagerCallback
Shutting down VM
threadid=1: thread exiting with uncaught exception (group=0x41b34ba8)
FATAL EXCEPTION: main
Process: de.tum.lme.diamantum:remote_blue, PID: 21567
java.lang.NullPointerException: FileDescriptor must not be null
    at android.os.ParcelFileDescriptor.<init>(ParcelFileDescriptor.java:174)
    at android.os.ParcelFileDescriptor$1.createFromParcel(ParcelFileDescriptor.java:905)
    at android.os.ParcelFileDescriptor$1.createFromParcel(ParcelFileDescriptor.java:897)
    at android.bluetooth.IBluetooth$Stub$Proxy.createSocketChannel(IBluetooth.java:1355)
    at android.bluetooth.BluetoothSocket.bindListen(BluetoothSocket.java:349)
    at android.bluetooth.BluetoothAdapter.createNewRfcommSocketAndRecord(BluetoothAdapter.java:1055)
    at android.bluetooth.BluetoothAdapter.listenUsingRfcommWithServiceRecord(BluetoothAdapter.java:976)
    at com.test.btconn.BluetoothHandling$AcceptThread.<init>(BluetoothHandling.java:449)
    at com.test.btconn.BluetoothHandling.start(BluetoothHandling.java:216)
    at com.test.btconn.BluetoothListenerService.setupBtSockets(BluetoothListenerService.java:330)
    at com.test.btconn.BluetoothListenerService.manageBtState(BluetoothListenerService.java:249)
    at com.test.btconn.BluetoothListenerService.setBtStateDisconnected(BluetoothListenerService.java:383)
    at com.test.btconn.BluetoothListenerService.access$5(BluetoothListenerService.java:378)
    at com.test.btconn.BluetoothListenerService$2.handleMessage(BluetoothListenerService.java:421)
Run Code Online (Sandbox Code Playgroud)

因此,应用程序的ParcelFileDescriptor存在问题,该问题突然变为空.但为什么?

当改变PC-java-app上的暂停时间时,使用各种数据大小来传输和使用不同的智能手机时,也会发生上述所有情况.当使用反射"listenUsingRfcommWithServiceRecord"时,505传输后也会发生相同的情况.使用唤醒锁也没有任何改变.

顺便说一下,使用BluetoothChat样本时我也有同样的行为.

所以,有人提示,会发生什么?

更新:

如果蓝牙状态为3,则每次连接后BluetoothServerSocket都会关闭,BluetoothSocket会关闭.

java android bluetooth spp

9
推荐指数
1
解决办法
3176
查看次数

将激光测距仪(Bosch Disto GLM 50 C)与智能手机(Android Studio)连接

我遇到了一个特殊的问题(我想).对于一个研究项目,我必须制作一个可以连接到激光测距仪(Bosch GLM 50 C Distometer)的Android应用程序.到目前为止,我在Stackoverflow和其他来源处经历了无数的教程和提示.

我是Android的新手,并且不堪重负.任务是创建一个应用程序,该应用程序读取博世设备上的测量距离,并通过蓝牙在智能手机上显示/保存.

现在我的具体问题是:是否可以读取蓝牙设备发送的数据(例如2.083m)?任何建议如何实现?

我能够与设备建立连接,按照本教程我发现:

package com.test.bluetooth;

import java.io.DataInputStream;

public class Main_Activity extends Activity implements OnItemClickListener {

TextView measuredValue;
ArrayAdapter<String> listAdapter;
ListView listView;
BluetoothAdapter btAdapter;
Set<BluetoothDevice> devicesArray;
ArrayList<String> pairedDevices;
ArrayList<BluetoothDevice> devices;
public static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
protected static final int SUCCESS_CONNECT = 0;
protected static final int MESSAGE_READ = 1;
IntentFilter filter;
BroadcastReceiver receiver;
String tag = "debugging";
Handler mHandler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        // TODO Auto-generated method stub
        Log.i(tag, …
Run Code Online (Sandbox Code Playgroud)

io android bluetooth inputstream spp

9
推荐指数
1
解决办法
2659
查看次数

如何使蓝牙SPP连接过程更可靠?

我们即将发布我们软件的新版本,对于之后的版本,我们的目标是使我们的蓝牙SPP连接的连接过程更加可靠.我们在产品中使用RN42模块,目前有时可能需要多次尝试才能连接到我们的主板.

这是我目前的代码:

class ConnectThread extends Thread {
    BluetoothDevice mDevice;

    public ConnectThread(BluetoothDevice device) throws SecurityException, NoSuchMethodException {
        mDevice = device;
        UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
        try {
            btSocket = mDevice.createInsecureRfcommSocketToServiceRecord(uuid);
        } catch (IOException e) {
            Log.e("Error", "Could not create socket!");
        }
    }

    public void cancel() {
        interrupt();
        try {
            Log.i("Treadmill", "in connect thread cancellation");
            btSocket.close();
        } catch (IOException localIOException) {
            Log.e("Treadmill", "exception + " + localIOException.getMessage());
        }
    }

    public void run() {
        btAdapter.cancelDiscovery();
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            Log.e("whatever", …
Run Code Online (Sandbox Code Playgroud)

android bluetooth rfcomm spp android-bluetooth

8
推荐指数
1
解决办法
1170
查看次数

为Android设置一个pc蓝牙服务器

可能重复:
在Android上使用蓝牙的服务发现失败异常

好吧,过去两三天我一直在阅读很多话题,似乎没有人问过这个问题.

我正在为我的andriod设备编写PC端服务器,这是用于交换一些信息和一般调试.最终我将连接到SPP设备来控制微控制器.

我已经管理,使用以下(Android到PC)连接到rfcomm通道11并在我的Android设备和我的电脑之间交换数据.

方法m = device.getClass().getMethod("createRfcommSocket",new Class [] {int.class}); tmp =(BluetoothSocket)m.invoke(device,Integer.valueOf(11));

我尝试了createRfcommSocketToServiceRecord(UUID)方法,绝对没有运气.

对于PC端,我一直在使用C Bluez堆栈用于linux.我有以下代码注册服务并打开服务器套接字:

int main(int argc, char **argv)
{
    struct sockaddr_rc loc_addr = { 0 }, rem_addr = { 0 };
    char buf[1024] = { 0 };
    char str[1024] = { 0 };
    int s, client, bytes_read;
    sdp_session_t *session;
    socklen_t opt = sizeof(rem_addr);

    session = register_service();
    s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
    loc_addr.rc_family = AF_BLUETOOTH;
    loc_addr.rc_bdaddr = *BDADDR_ANY;
    loc_addr.rc_channel = (uint8_t) 11;
    bind(s, (struct sockaddr *)&loc_addr, sizeof(loc_addr));
    listen(s, …
Run Code Online (Sandbox Code Playgroud)

android bluetooth spp bluez

7
推荐指数
1
解决办法
8739
查看次数

蓝牙或wifi流(spp)是否会丢失字节或损坏字节?

多年来困扰我的事情.我使用了很多蓝牙和最近的wifi流(spp).这些流始终连接到特定设备,并通过简单的字节命令进行通信.

一些设备(他们的微控制器)我自己编程,我必须始终检查线上的信号是否是我所期望的,发送和检查crcs.

不知何故,我想在我的智能手机上做同样的事情,因为我用"readByte"访问我的流并逐字节读取,我总是想知道是否实际上可能a)消息中的一个字节可能丢失b)消息到达混合或"不按顺序"

我不知道底层硬件有多少功能.它是否使用crc检查每条消息,并在消息损坏时再次请求消息?或者它是否盲目地将每个字节传递给我的"readByte"方法?

如果设备发送消息a然后b,是否有可能接收器在a之前接收b并在传递我的代码b之前或甚至混合像拉链这样的字节并给我一个[0]然后b [0]然后a [1]等等.

我应该对这些流有多少信任?一些澄清将不胜感激

android bluetooth wifi spp

7
推荐指数
1
解决办法
887
查看次数

蓝牙串行端口通信 (SPP)

我们正在开发一个通过蓝牙使用 SPP(串行端口配置文件)的应用程序,开发人员正在讨论使用某种类型的协议和数据包传输,还是仅在没有任何形式的 ACK、序列或大小信息的情况下流式传输数据。

蓝牙是否提供有保证的传输和数据完整性,以便我们不需要数据包协议设计的开销?

我们可以仅依靠蓝牙来确保数据传输吗?

protocols bluetooth transmission data-integrity spp

6
推荐指数
2
解决办法
4588
查看次数