蓝牙调试器app HC05、HC06(功能非常强大)

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA54ix5YaZ5Luj56CB55qE54yr,size_8,color_FFFFFF,t_70,g_se,x_16

 可以在百度搜索蓝牙调试器可下载。

下面介绍怎么使用以及接收代码

 分为两种模式:基础模式和专业模式

基础模式

基础模式非常的简单,设置相应的按键的值就可以显现发送数据,例如用按键控制灯的亮灭。具体设置1、点击编辑模式就可以编辑相应的按键值。2、点击按键弹出修改界面,在里面可以设置按键的名称、按下时发送的数据、松开时发送的数据和发送时的编码模式。

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA54ix5YaZ5Luj56CB55qE54yr,size_20,color_FFFFFF,t_70,g_se,x_16

 专业模式

专业模式可以自己编辑器件,例如摇杆、按键、能量条、波形图等。该模式可以编辑器件可玩性和可操作性能强。1、点击+图标可新建项目。2、编辑器件可以根据需要添加器件。3、通信设置设置可编辑发送数据的长度和类型。

 watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA54ix5YaZ5Luj56CB55qE54yr,size_20,color_FFFFFF,t_70,g_se,x_16

 器件编辑:进入器件编辑,最上方的标志分别是添加器件、链接器件和设置发送的值或范围(一定要链接要不然无法发送数据或者接收数据)、删除器件、退出。最右边的标志从上到下依次是移动器件、缩放器件图标大小和调节器件角度。

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA54ix5YaZ5Luj56CB55qE54yr,size_20,color_FFFFFF,t_70,g_se,x_16

通信设置(必须设置):通过设置发送或者接收数据的类型和数量(上面会显示相应的数据包的长度下图中数据包为12字节对应的单片机发送或者接收的字节都为12个字节)设置完后就可用在编辑器件中链接变量。

重点:该软件有一个简单的协议,数据包主要包括四部分:包头、原数据、校验和包尾,其中包头一定要是0XA5,包尾一定要是0X5A。

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA54ix5YaZ5Luj56CB55qE54yr,size_20,color_FFFFFF,t_70,g_se,x_16

 下面是我自己写的基于stm32f103的接收代码:

串口初始化代码

void uart_init(u32 bound){
    GPIO_InitTypeDef GPIO_InitStructure;
	USART_InitTypeDef USART_InitStructure;
	NVIC_InitTypeDef NVIC_InitStructure;
	 
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);	
  
	//USART1_TX   GPIOA.9
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
  
    //USART1_RX	  
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStructure);//³õʼ»¯GPIOA10  

 
    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;		
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			
	NVIC_Init(&NVIC_InitStructure);	
  


	USART_InitStructure.USART_BaudRate = bound;
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;
	USART_InitStructure.USART_StopBits = USART_StopBits_1;
	USART_InitStructure.USART_Parity = USART_Parity_No;
	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;	
    USART_Init(USART1, &USART_InitStructure); 
	
    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
    USART_Cmd(USART1, ENABLE);                   

}

发送和解析函数


#define E_START                    0   //准备成功
#define E_OK                       1   //成功
#define E_FRAME_HEADER_ERROR       2   //包头错误
#define E_FRAME_RTAIL_ERROR        3   //包尾错误
#define LINE_LIN                   12  //数据长度
uint8_t uart_flag;                     //接收标志
vu8 RX_lanya[12];


/*接收数据*/
void get_slave_data(uint8_t data)
{
    static uint8_t uart_num=0;
    RX_lanya[uart_num++]=data;
    if(1==uart_num)
    {
        //接收到第一个字节不是0xA5,包头错误
        if(0XA5!=RX_lanya[0])
        {
            uart_num=0;
            uart_flag=E_FRAME_HEADER_ERROR;
        }
    }
    if(LINE_LIN==uart_num)
    {
        uart_flag=E_OK;
        //接收到最后一个字节是0X5A
        if(0X5A==RX_lanya[LINE_LIN-1])
        {
            uart_flag=E_OK;
        }
        else    //接收到的最后一个字节不为ox5A,包尾错误
        {
            uart_flag=E_FRAME_RTAIL_ERROR;
        }
        uart_num=0;
    }

}



int key1=0,key2=0,key3=0,key4=0,key5=0;

/*解析数据*/
void lanya_receive(void)
{
	key1=RX_lanya[1];
	
	key2=((int)RX_lanya[3]<<8)|RX_lanya[2];
	
	key3=((int)RX_lanya[5]<<8)|RX_lanya[4];
	
	
	key4=((int)RX_lanya[7]<<8)|RX_lanya[6];
	
	key5=((int)RX_lanya[9]<<8)|RX_lanya[8];
	
}

UART中断接收函数

void USART1_IRQHandler(void)                	//中断服务函数
{
	
 uint8_t data;
    if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
    {
        USART_ClearITPendingBit(USART1,USART_IT_RXNE);
       data = USART_ReceiveData(USART1);
       get_slave_data(data);       //获取数据
			if(uart_flag==1)
			{
				uart_flag=0;
				lanya_receive();   //数据解析
			}
    }
}

  • 43
    点赞
  • 428
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 25
    评论
Delphi是一种强大的编程语言和集成开发环境(IDE),它可用于开发各种类型的应用程序,包括Windows、移动设备和嵌入式系统。在Delphi中进行蓝牙调试需要使用一些特定的库和组件来实现。 首先,您需要使用Delphi的系统蓝牙库来与蓝牙设备进行通信。这些库包括Bluetooth和BluetoothLE单元,它们提供了与蓝牙设备进行配对、连接和传输数据的功能。您可以使用这些库来搜索附近的蓝牙设备,建立连接并发送/接收数据。 在进行蓝牙调试时,您可能会遇到一些常见问题,例如连接失败、数据传输错误或设备不可用等。为了解决这些问题,您可以使用Delphi的调试工具和技术。 首先,您应该确保蓝牙设备和计算机之间的连接是正常的。您可以检查蓝牙设备的配对状态、连接状态和信号强度等信息。如果发现连接问题,您可以尝试重新启动设备或计算机,重新配对设备,并确保设备处于适当的范围内。 其次,您应该检查您的代码逻辑和蓝牙通信协议。确保您正确地使用了Delphi的蓝牙库函数和事件,并按照蓝牙设备的要求进行数据传输。您还可以使用调试输出和断点来跟踪代码执行情况,并查看是否存在错误或异常。 在调试过程中,您还可以使用一些辅助工具和设备来帮助调试。例如,您可以使用蓝牙调试器来监视和分析蓝牙数据包的传输情况。您还可以使用模拟器或虚拟设备来模拟蓝牙设备和环境,以便更方便地进行调试。 总之,Delphi提供了丰富的功能和工具来进行蓝牙调试。通过合理使用Delphi的蓝牙库、调试工具和技巧,您可以轻松解决蓝牙调试中遇到的各种问题,并成功开发出功能强大蓝牙应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱写代码的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值