b2c信息网

您现在的位置是:首页 > 明日新闻 > 正文

明日新闻

手机蓝牙调试助手源码(蓝牙模块调试助手)

hacker2022-08-08 19:35:31明日新闻141
本文目录一览:1、谁有没有好用的蓝牙调试助手啊,安卓的2、

本文目录一览:

谁有没有好用的蓝牙调试助手啊,安卓的

如此简单,干脆用流行的串口软件,如格西烽火串口助手、串口调试助手等,都可以轻松实现

我写了一个查看Android手机的蓝牙模块是否开启的代码。在AVD上调试,因为是电脑,没有蓝牙适配器,可是

因为AVD上没有蓝牙适配器,会直接报nullPointer

可能在你的setBluetooth()这个方法中会报错。需要调试蓝牙相关的程序一定要用真机,并且是有带蓝牙模块的真机才行!~

android_studio手机蓝牙串口通信源代码

初涉android的蓝牙操作,按照固定MAC地址连接获取Device时,程序始终是异常终止,查了好多天代码都没查出原因。今天改了一下API版本,突然就成功连接了。总结之后发现果然是个坑爹之极的错误。

为了这种错误拼命查原因浪费大把时间是非常不值得的,但是问题不解决更是揪心。可惜我百度了那么多,都没有给出确切原因。今天特此mark,希望后来者遇到这个问题的时候能轻松解决。

下面是我的连接过程,中间崩溃原因及解决办法。

1:用AT指令获得蓝牙串口的MAC地址,地址是简写的,按照常理猜测可得标准格式。

2:开一个String adress= "************" //MAC地址, String MY_UUID= "************"//UUID根据通信而定,网上都有。

3:取得本地Adapter用getDefaultAdapter(); 远程的则用getRemoteDevice(adress); 之后便可用UUID开socket进行通信。

如果中途各种在getRemoteDevice处崩溃,大家可以查看一下当前的API版本,如果是2.1或以下版本的话,便能确定是API版本问题,只要换成2.2或者以上就都可以正常运行了~   这么坑爹的错误的确很为难初学者。  唉··········  为这种小trick浪费很多时间真是难过。

(另外有个重要地方,别忘了给manifest里面加以下两个蓝牙操作权限哦~)

uses-permission android:name="android.permission.BLUETOOTH"/uses-permission

uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/uses-permission

下面附上Android蓝牙操作中用固定MAC地址传输信息的模板,通用搜索模式日后再补删模板:

private BluetoothAdapter mBluetoothAdapter = null;

private BluetoothSocket btSocket = null;

private OutputStream outStream = null;

private InputStream inStream = null;

private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");  //这条是蓝牙串口通用的UUID,不要更改

private static String address = "00:12:02:22:06:61"; // ==要连接的蓝牙设备MAC地址

/*获得通信线路过程*/

/*1:获取本地BlueToothAdapter*/

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

if(mBluetoothAdapter == null)

{

Toast.makeText(this, "Bluetooth is not available.", Toast.LENGTH_LONG).show();

finish();

return;

}

if(!mBluetoothAdapter.isEnabled())

{

Toast.makeText(this, "Please enable your Bluetooth and re-run this program.", Toast.LENGTH_LONG).show();

finish();

return;

}

/*2:获取远程BlueToothDevice*/

BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);

if(mBluetoothAdapter == null)

{

Toast.makeText(this, "Can't get remote device.", Toast.LENGTH_LONG).show();

finish();

return;

}

/*3:获得Socket*/

try {

btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Socket creation failed.", e);

}

/*4:取消discovered节省资源*/

mBluetoothAdapter.cancelDiscovery();

/*5:连接*/

try {

btSocket.connect();

Log.e(TAG, "ON RESUME: BT connection established, data transfer link open.");

} catch (IOException e) {

try {

btSocket.close();

} catch (IOException e2) {

Log .e(TAG,"ON RESUME: Unable to close socket during connection failure", e2);

}

}

/*此时可以通信了,放在任意函数中*/

/*  try {

outStream = btSocket.getOutputStream();

inStream = btSocket.getInputStream(); //可在TextView里显示

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Output stream creation failed.", e);

}

String message = "1";

byte[] msgBuffer = message.getBytes();

try {

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Exception during write.", e);

}

*/

通用搜索模式代码模板:

简洁简洁方式1 demo

作用: 用VerticalSeekBar控制一个 LED屏幕的亮暗。

直接上码咯~

package com.example.seed2;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.Dialog;

import android.os.Bundle;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.UUID;

import android.bluetooth.BluetoothAdapter;

import android.bluetooth.BluetoothDevice;

import android.bluetooth.BluetoothSocket;

import android.content.DialogInterface;

import android.util.Log;

import android.view.KeyEvent;

import android.widget.Toast;

public class MetalSeed extends Activity {

private static final String TAG = "BluetoothTest";

private BluetoothAdapter mBluetoothAdapter = null;

private BluetoothSocket btSocket = null;

private OutputStream outStream = null;

private InputStream inStream = null;

private VerticalSeekBar vskb = null;

private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");  //这条是蓝牙串口通用的UUID,不要更改

private static String address = "00:12:02:22:06:61"; // ==要连接的蓝牙设备MAC地址

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

this.vskb = (VerticalSeekBar)super.findViewById(R.id.mskb);

this.vskb.setOnSeekBarChangeListener(new OnSeekBarChangeListenerX());

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

if(mBluetoothAdapter == null)

{

Toast.makeText(this, "Bluetooth is not available.", Toast.LENGTH_LONG).show();

finish();

return;

}

if(!mBluetoothAdapter.isEnabled())

{

Toast.makeText(this, "Please enable your Bluetooth and re-run this program.", Toast.LENGTH_LONG).show();

finish();

return;

}

}

private class OnSeekBarChangeListenerX implements VerticalSeekBar.OnSeekBarChangeListener {

public void onProgressChanged(VerticalSeekBar seekBar, int progress, boolean fromUser) {

//Main.this.clue.setText(seekBar.getProgress());

/*  String message;

byte [] msgBuffer;

try {

outStream = btSocket.getOutputStream();

} catch (IOException e) {

Log.e(TAG,"ON RESUME : Output Stream creation failed.", e);

}

message =Integer.toString( seekBar.getProgress() );

msgBuffer = message.getBytes();

try{

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e (TAG, "ON RESUME : Exception during write.", e);

}       */

}

public void onStartTrackingTouch(VerticalSeekBar seekBar) {

String message;

byte [] msgBuffer;

try {

outStream = btSocket.getOutputStream();

} catch (IOException e) {

Log.e(TAG,"ON RESUME : Output Stream creation failed.", e);

}

message =Integer.toString( seekBar.getProgress() );

msgBuffer = message.getBytes();

try{

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e (TAG, "ON RESUME : Exception during write.", e);

}

}

public void onStopTrackingTouch(VerticalSeekBar seekBar) {

String message;

byte [] msgBuffer;

try {

outStream = btSocket.getOutputStream();

} catch (IOException e) {

Log.e(TAG,"ON RESUME : Output Stream creation failed.", e);

}

message =Integer.toString( seekBar.getProgress() );

msgBuffer = message.getBytes();

try{

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e (TAG, "ON RESUME : Exception during write.", e);

}

}

}

@Override

public void onStart()

{

super.onStart();

}

@Override

public void onResume()

{

super.onResume();

BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);

try {

btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Socket creation failed.", e);

}

mBluetoothAdapter.cancelDiscovery();

try {

btSocket.connect();

Log.e(TAG, "ON RESUME: BT connection established, data transfer link open.");

} catch (IOException e) {

try {

btSocket.close();

} catch (IOException e2) {

Log .e(TAG,"ON RESUME: Unable to close socket during connection failure", e2);

}

}

// Create a data stream so we can talk to server.

/*  try {

outStream = btSocket.getOutputStream();

inStream = btSocket.getInputStream();

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Output stream creation failed.", e);

}

String message = "read";

byte[] msgBuffer = message.getBytes();

try {

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Exception during write.", e);

}

int ret  = -1;

while( ret != -1)

{

try {

ret = inStream.read();

} catch (IOException e)

{

e.printStackTrace();

}

}

*/

}

@Override

手机蓝牙与单片机的通信如何实现?

一、准备工作:

1.一款带串口的单片机。

2.USB转串口模块(自己焊接的,所以很丑,当然也可以用学习板上的串口部分)。

3.蓝牙转串口模块。

4.如果你的手机系统是Android的,下载个android蓝牙调试助手。

5.电脑上安装一个串口调试助手。

6.若干杜邦线等。

二、调试工作

万事俱备,只欠东风。

1.调试蓝牙模块

用杜邦线连接USB转串口模块和蓝牙模块。

串口模块   蓝牙模块。

VCC---------VCC。

TXD----------RXD。

RXD----------TXD。

GND---------GND。

打开手机蓝牙助手,连接到该蓝牙模块,成功后随便输入一些字符,就会在电脑上看到串口助手上有显示该字符,前提是串口的波特率和蓝牙模块的波特率对应(默认是9600)。

2.调试单片机的串口

还是用杜邦线连接USB转串口模块和单片机,在电脑上打开串口调试助手调试。

接线方式参考调试蓝牙模块。

单片机的程序就不说了,这里假设已经做好了。如果正常则会看到预期效果。

三、连接工作

把蓝牙模块和单片机模块连接起来,然后打开蓝牙调试助手,连接蓝牙模块发送数据。

这个时候,就好像你在电脑上用串口助手给单片机发送数据一样。

单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。

在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。

哪位有编写过网络调试助手的源代码

根据TCP/IP编程,用.net编写比较容易,用户界面可以参考现成的,例如格西烽火、网络调试助手等都不错。

怎么用手机蓝牙调试助手控制51单片机上的LED灯亮

#includereg52.h

typedef unsigned char unit8;

typedef unsigned short unit_16;

void Receive_Handle(unit8 Value)

{

switch(Value)//具体发送过来的是什么数据 需要自己自己通过串口调试助手查看

//改变这里面对应的数据即可

{

case 0x00:P2=0xff;break;

case 0x01:P2=0xfe;break;

case 0x02;P2=0xfd;break;

case 0x03:P2=0xfb;break;

case 0x04:P2=0xf7;break;

default:P2=0xff;break;

}

}

void main()

{

TMOD |= 0x20;//定时器1 工作方式2 8位自动重装模式

SCON = 0x50;//串口工作方式1 允许接收 8位数据位

TH1 = 0xfd; //波特率9600

TR1 = 1;

ES = 1;

EA = 1;

while(1);

}

void UART1_Rountine()interrupt 4

{

static unit8 Receive_Data=0;

ES = 0;

while(!RI);

RI=0;

Receive_Data = SBUF;

Receive_Handle(Receive_Data);

ES = 1;

}

/*---------------------------------------------------------------------------------------

如有问题可再咨询

----------------------------------------------------------------------------------------*/

发表评论

评论列表

  • 泪灼路弥(2022-08-08 21:01:07)回复取消回复

    器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速

  • 俗了清风1(2022-08-08 22:58:01)回复取消回复

    1000-8000-00805F9B34FB");  //这条是蓝牙串口通用的UUID,不要更改private static String address = "00:1

  • 鸽吻泪灼(2022-08-09 02:40:02)回复取消回复

    连接USB转串口模块和单片机,在电脑上打开串口调试助手调试。接线方式参考调试蓝牙模块。单片机的程序就不说了,这里假设已经做好了。如果正常则会看到预期效果。三、连接工作把蓝牙模块和

  • 莣萳玖橘(2022-08-08 21:03:35)回复取消回复

    er(); 远程的则用getRemoteDevice(adress); 之后便可用UUID开socket进行通信。如果中途各种在getRemoteDevice处崩溃,大家可以查看一下当前的AP