Android蓝牙串口程序开发



本文主要介绍了针对android的蓝牙串口上位机开发。

程序下载地址:点击打开链接

一、帧定义

android客户端按照一定的数据帧格式通过蓝牙串口发送数据到连接到MCU的蓝牙从机,MCU接收到数据后,按照帧格式的定义,接收数据帧,并解析数据帧,得到需要的数据。

android客户端按照以下帧格式来发送和接收数据。




1.1客户端发送的数据帧内容

发送频率:10Hz



帧校验的和是从帧长开始到帧校验前所有数据的和对256取余。即sum%256。

pitch roll yaw数据各16位,由高低8位组成。MCU接收数据时需要将其再复合成一个16位数据。

0x5A:帧头

14:针长度

0xA1:帧功能,标明这帧数据是pitch yaw roll内容。

pitch_set_H:pitch高8位

pitch_set_L:pitch低8位

...

...

帧校验:(帧长+帧功能+数据)%256

0xA5:帧尾。

(注:帧是这么定义的,但实际上编写接收程序的时候,我将帧尾0xA5当作了一帧数据的帧头。这样帧头就变成了 0xA5 0x5A。此时就不存在帧尾了)

下面是android客户端发送字节信息的程序:

<span style="white-space:pre">	</span>b[0] = (byte)0XA5;  //帧头
         b[1] = (byte)14;     //帧长
         b[2] = (byte)0xA1;   //帧功能
        
         b[3] = (byte)(pitchSet>>8);     //数据
         b[4] = (byte)(pitchSet);
         b[5] = (byte)(rollSet>>8);
         b[6] = (byte)(rollSet);
         b[7] = (byte)(yawSet>>8);
         b[8] = (byte)(yawSet);
         b[9] = (byte)0;
         b[10] = (byte)0;
         b[11] = (byte)0;
         b[12] = (byte)0;
        
         int temp = 0;
         for(int j=1;j<13;j++)
         {
         temp = temp+b[j];
         }
         b[13] = (byte)(temp%256);  //校验     
        b[14] = (byte)0x5A;     //帧结束

1.2MCU接收帧数据

由于串口是按照一个一个字节的格式发送数据,所以MCU接收数据时,要按照客户端发送的帧格式的定义,找到一帧数据的开始与结束,确认一帧数据接收无误后,再将其中的数据解析出来。使用一个为来标志(状态机)接收程序对一阵数据的接收状态。

编写的DSP2808接收程序如下:

定义数据类型

typedef struct
{
	int status;   //data status
	int Rx_Data;	 //the receivced data
	int data[15];	//
	int rx_buf[13];
	int buf_index;
	int sum;
	int yawSet;
	int pitchSet;
	int rollSet;
}Sci_Data;
Sci_Data sci_data;

interrupt void SCIB_RX_ISR()          //以中断的方式接收数据
{
//接收程序
	sci_data.Rx_Data = ScibRegs.SCIRXBUF.all;        
	ScibRegs.SCIFFRX.bit.RXFFOVRCLR = 1;  //clear overflow flag
	ScibRegs.SCIFFRX.bit.RXFFINTCLR = 1;   //clear the interrupt flag
	PieCtrlRegs.PIEACK.all |= PIEACK_GROUP9;  //enable more interrupt from PIE group 9
	Decode_Frame(sci_data.Rx_Data);          //数据帧解码
}

void Decode_Frame(int rx_data)
{
	if(sci_data.status==0 && rx_data == 0x5A)   //判断帧尾 如果找到帧尾,status=1
	{
		sci_data.status = 1;
	}
	else if(sci_data.status == 1 &&rx_data == 0xA5)      //帧尾下一个字符是帧头,status=2

	{
		sci_data.status = 2;
	}
	else if(sci_data.status ==2) //帧头后是13个字节数据 从帧长到帧校验
	{
		if(sci_data.buf_index<13)
		{
			
			sci_data.rx_buf[sci_data.buf_index] = rx_data;        //  0-12 to save data length function data... sum		
			if(sci_data.buf_index<12) //求取校验和
			{
				sci_data.sum += sci_data.rx_buf[sci_data.buf_index];
			}

			sci_data.buf_index++;
		}
		
		if(sci_data.buf_index >= 13)
		{
			if(sci_data.rx_buf[12] == sci_data.sum%256)
			{
				int j=0;
				for(j=0;j<10;j++)
				{
					sci_data.data[j] = sci_data.rx_buf[j+2];    //save data to the data buf
					
				
				}
				sci_data.pitchSet = sci_data.data[0]<<8|sci_data.data[1];

			}
			sci_data.buf_index = 0;
			sci_data.status = 0;
			sci_data.sum = 0;
		}
	}
	else 
	{
		sci_data.buf_index = 0;
		sci_data.status = 0;
		sci_data.sum = 0;
	}
}

这样DSP2808就接收到了从客户端发送来的数据。保存在sci_data.pitchSet、sci_data.rollSet、sci_data.yawSet三个变量中。 


二、android客户端开发流程

问题:检测蓝牙的连接状态

android蓝牙串口程序状态机

在程序中,通过broadcast来检测蓝牙的连接状态,根绝蓝牙的连接状态来决定操作。

打开蓝牙---扫描设备---选择设备---连接设备---连接正常---发送数据---






  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Android蓝牙串口助手是一款应用程序,可以将Android设备的蓝牙功能和串口通信结合起来。它的主要功能是通过蓝牙与其他设备建立连接,并实现与这些设备的串口通信。 蓝牙串口助手的使用非常方便。用户只需在Android设备上安装该应用程序,并与目标设备建立蓝牙连接。然后,用户可以在应用程序中设置串口参数,如波特率、数据位、校验位等。一旦串口参数设置完成,用户就可以开始通过应用程序与目标设备进行串口通信。 该应用程序提供了一个简洁而直观的用户界面,用户可以轻松地发送和接收串口数据。用户可以编写自定义的串口指令,并通过应用程序将这些指令发送给目标设备。同时,应用程序还能够实时显示从目标设备接收到的串口数据,方便用户进行实时监测和调试。 Android蓝牙串口助手在很多实际应用中具有广泛的用途。例如,它可以用于与嵌入式设备进行通信,如单片机、传感器等。它也可以用于与蓝牙设备进行通信,如蓝牙打印机、蓝牙耳机等。通过蓝牙串口助手,用户可以在Android设备上实现与这些设备的便捷和高效的串口通信。 总结来说,Android蓝牙串口助手是一款实用的应用程序,它能够将Android设备的蓝牙功能和串口通信相结合,实现与各种设备的串口通信。无论是在嵌入式系统开发、传感器监测还是与蓝牙设备交互等方面,该应用程序都能够帮助用户实现便捷而高效的通信。 ### 回答2: Android蓝牙串口助手是一款在安卓平台上的应用程序,用于实现通过蓝牙无线通信来连接设备的串口通信功能。串口通信是一种基于物理接口的数据传输方式,通过该功能,用户可以与其他通过串口进行数据传输的设备进行通信。 Android蓝牙串口助手通常具备如下功能: 1. 蓝牙设备搜索和连接:可以搜索和选择附近可用的蓝牙设备,并与目标设备进行无线连接。 2. 串口参数设置:用户可以设置串口通信时的波特率、数据位数、校验位以及停止位等参数,以确保与目标设备的通信正常进行。 3. 数据收发:用户可以通过串口助手发送指令或数据给目标设备,同时也可以接收到目标设备发送的数据。 4. 数据解析:部分串口助手可以提供数据的解析功能,将接收到的数据进行解析并以可读的方式展示给用户。 5. 脚本命令:一些串口助手还支持自定义脚本命令,用户可以通过编写脚本实现对目标设备的一系列操作。 Android蓝牙串口助手通常适用于需要和其他设备进行串口通信的场景,比如与嵌入式开发板、传感器、无线模块等进行数据交互的需求。用户可以通过安装和使用Android蓝牙串口助手,通过蓝牙无线连接实现与这些设备的数据收发和控制,提高了设备之间的无线互联性和便利性。 ### 回答3: Android蓝牙串口助手是一款在Android系统上运行的应用程序,可以通过蓝牙技术实现与其他设备之间的串口通信。它可以作为一个中间层,将Android设备的蓝牙功能转换为串口通信的功能。 通过Android蓝牙串口助手,用户可以将Android设备与其他串口设备(例如传感器、控制器等)连接起来,实现数据的双向传输。用户可以通过应用程序的界面,设置串口的通信参数,例如波特率、数据位、停止位等等。 Android蓝牙串口助手不仅提供了串口通信的功能,还包括了一些其他的功能。例如,用户可以通过它来搜索附近的蓝牙设备,并且可以通过蓝牙设备与其他设备进行配对和连接。同时,它还提供了数据的收发功能,用户可以通过应用程序发送数据到其他设备,也可以接收其他设备发送过来的数据。 此外,Android蓝牙串口助手还支持数据的实时显示和保存。用户可以在应用程序界面上实时监测串口数据的发送和接收情况,并且可以将数据保存到设备的存储器中,方便后续的查看和分析。 总而言之,Android蓝牙串口助手是一款帮助用户实现Android设备与串口设备之间通信的应用程序。它提供了串口通信的设置与控制功能,支持蓝牙设备搜索、连接和配对,并且具备数据的实时显示和保存功能。通过使用这款助手,用户可以方便地实现Android设备与其他串口设备之间的数据传输和交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值