全志XR806蓝牙透传(单向)测试

评测三 蓝牙透传(单向)
有时无线透传在无法布线时有很方便的效用,不妨试试蓝牙透传,效果如下:

具体是无线数据->串口数据,串口数据->无线数据,目前前者实现了,后者还有些问题未解决,

在这里插入图片描述

实现过程如下,基于工程demo/Bluetooth/peripheral_demo改成peripheral_uart_demo,同时目录下peripheral_uart_demo/gcc/defconfig文件里工程名也改成peripheral_uart_demo,然后引入串口读写独立接口即把demo/at_demo下的serial.c、serial.h、serial_debug.h复制到刚才peripheral_uart_demo工程下,由于要无线写以及串口写转无线,所以profile涉及到write_without_rsp和notify,具体配置为:
服务 特征
UUID 12345678-1234-5678-56789abcdef0 12345678-1234-5678-56789abcdef1
Properties Write no response/Notify

static struct bt_gatt_attr vnd_attrs[] = {/* Vendor Primary Service Declaration */BT_GATT_PRIMARY_SERVICE(&vnd_uuid),BT_GATT_CHARACTERISTIC(&vnd_enc_uuid.uuid,BT_GATT_CHRC_WRITE_WITHOUT_RESP | BT_GATT_CHRC_NOTIFY,BT_GATT_PERM_WRITE,NULL, write_without_rsp_vnd, &vnd_value),BT_GATT_CCC(vnd_ccc_notify_changed, BT_GATT_PERM_READ|BT_GATT_PERM_WRITE),
};

写回调接口为:

/**********************vnd_write_cmd_uuid*****************************/
static ssize_t write_without_rsp_vnd(struct bt_conn *conn,const struct bt_gatt_attr *attr,const void *buf, uint16_t len, uint16_t offset,uint8_t flags)
{uint8_t *value = attr->user_data;/* Write request received. Reject it since this char only accepts* Write Commands.*/if (!(flags & BT_GATT_WRITE_FLAG_CMD)) {return BT_GATT_ERR(BT_ATT_ERR_WRITE_REQ_REJECTED);}if (offset + len > sizeof(vnd_value)) {return BT_GATT_ERR(BT_ATT_ERR_INVALID_OFFSET);}memset(value, 0, sizeof(vnd_value));memcpy(value + offset, buf, len);serial_write(value + offset, len);*(value + offset + len) = '\0';printf("\r\nwrite_without_rsp_vnd");return len;
}

串口转无线回调(有问题):

static void vnd_notify(void)
{static uint8_t vnd[MAX_LONG_DATA];uint16_t len=0;if (!vnd_notif_enabled)return;printf("\r\nnotify\r\n");serial_read(vnd_notify_value,len);if(len>MAX_LONG_DATA || len==0)return;memcpy(vnd, vnd_notify_value, len);printf("\r\nvnd_notify\r\n");bt_gatt_notify(NULL, &vnd_svc.attrs[1], vnd, sizeof(vnd));
}

然后在bt_app_init函数里加入透传口UART1的初始化代码即可:

	serial_init(SERIAL_UART_ID, 115200, UART_DATA_BITS_8, UART_PARITY_NONE,UART_STOP_BITS_1, 0);serial_start();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

支持生成接口文档!Apipost IDEA插件使用体验

前言 Idea 是一款功能强大的集成开发环境(IDE),它可以帮助开发人员更加高效地编写、调试和部署软件应用程序,Idea 还具有许多插件和扩展,可以根据开发人员的需要进行定制和扩展,从而提高开发效率,今天我们就来介绍一款…

持续集成交付CICD:Sonarqube多分支代码扫描

目录 一、实验 1.Sonarqube安装插件 2.Sonarqube多分支代码扫描 一、实验 1.Sonarqube安装插件 (1)不同软件版本对应不同插件版本 (2)插件对应版本下载安装 将下载好的插件包(sonarqube-community-branch-plugin…

三层交换机配置DHCP服务

第一步:进入二层交换机Switch 1)输入命令: Switch(config)#vlan 10 Switch(config)#vlan 20 2)修改F0/1 和F0/2为access口,F0/24为trunk口 第二步:进入三层交换机 1)输入命令 Switch(config)#…

每日一练2023.12.7—— 情人节【PTA】

题目链接:L1-035 情人节 题目要求: 以上是朋友圈中一奇葩贴:“2月14情人节了,我决定造福大家。第2个赞和第14个赞的,我介绍你俩认识…………咱三吃饭…你俩请…”。现给出此贴下点赞的朋友名单,请你找出…

深入理解HTTPS加密协议

在现代网络环境中,数据安全和隐私保护至关重要。HTTPS(全称为HyperText Transfer Protocol Secure)是一种用于保障互联网通信安全的加密协议,它通过在HTTP协议的基础上添加SSL/TLS层来实现对数据的加密传输。本文将详细介绍HTTPS的…

axios创建实例对象,发送ajax请求,配置baseUrl

axios创建实例对象,发送ajax请求,配置baseUrl // 创建实例对象 import axios from axiosconst duanzi axios.create({baseURL: https://172.11.11.11:1010,timeout: 2000});duanzi({url: /api-getJoke/testIndex,method: post,responseType: blob,data…

PPT设置章节

0 Preface/Foreward 1 添加章节方法 选择 > 开始 > 节 可以进行: 新增节重命名节删除所有节 相关节的内容如下:

antd 表单各种验证

表单中需要很多验证&#xff0c;有时某项不是必须项&#xff0c;但是如果填写的必须遵守某种规则&#xff0c;所以就总结一下&#xff0c;比如手机号不是必须项&#xff0c;但是如果填写了必须遵守正则规则&#xff1a; <a-formlayout"horizontal":form"form…

超大规模集成电路设计----FPGA时序模型及FSM的设计(八)

本文仅供学习&#xff0c;不作任何商业用途&#xff0c;严禁转载。绝大部分资料来自----数字集成电路——电路、系统与设计(第二版)及中国科学院段成华教授PPT 超大规模集成电路设计----RTL级设计之FSM&#xff08;八&#xff09; 7.1 CPLD的时序模型7.1.1 XPLA3 时序模型7.1.…

maven篇---第三篇

系列文章目录 文章目录 系列文章目录前言一、如何解决依赖传递引起的版本冲突?二、说说maven的依赖原则三、说说依赖的解析机制?四、说说插件的解析机制前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男…

UVa1339古老的密码题解

题目 给你两个字符串&#xff0c;看你能不能将第一个字符变化位置&#xff08;重排&#xff09;&#xff0c;变成和第二个字符串的26个字母一一对应。 解题思路&#xff1a;将两个字符串的各个字符的数量统计出来&#xff0c;如果各个字符串的数量都是一样的&#xff0c;那么就…

postgresql从入门到精通 - 第37讲:postgres物理备份和恢复概述

PostgreSQL从小白到专家&#xff0c;是从入门逐渐能力提升的一个系列教程&#xff0c;内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容&#xff0c;希望对热爱PG、学习PG的同学们有帮助&#xff0c;欢迎持续关注CUUG PG技术大讲堂。 第37讲&#…

麒麟信安系统下的硬盘分区情况说明

目前飞腾平台上面麒麟信安系统分区情况如下&#xff1a; Tmpfs为内存文件系统&#xff0c;可以不考虑&#xff0c;真正使用的是两个分区 两个分区加起来为51G 查看cat /etc/fstab可以看到/data这个分区下包含了home opt root等常用文件夹 再加上这个分区容量只有17G&#xff0c…

关于kotlin的属性委托,报错的,实际原因剖析

报错&#xff1a;Property delegate must have a ‘getValue(SecurityCheckView, KProperty*>)’ method. None of the following functions are suitable 解决方案&#xff1a;就是在根目录的build.gradle中改变 kotlin的插件版本 classpath “org.jetbrains.kotlin:kotli…

TCP单聊和UDP群聊

TCP协议单聊 服务端&#xff1a; import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.V…

EG网关串口连接威纶通触摸屏应用案例

EG网关串口连接威纶通触摸屏应用案例 威纶通触摸屏广泛应于工业控制领域&#xff0c;是一款性能高&#xff0c;运行稳定的人机交互设备。此次我们要把威纶通的触摸屏通过Modbus-RTU协议连接EG系列网关&#xff0c;实现电脑Web页面和手机APP对威纶通触摸屏的远程数据采集和读取…

种下一棵栀子花

女孩说自己是男孩当年伸手就可触及的栀子花.男孩沉默了,明白了当初失去了什么. 时光倒流,13年前的一个夏天夜晚,男孩与女孩同在沪城,女孩分享了自己的照片给男孩.男孩站在窗前,那晚的夜空很美丽,仿佛托着那个白衣裳女孩的纯真的梦,来到了自己的身边. 女孩说彼此间只是少了一个深…

11K+ Star!图解计算机网络、操作系统、计算机组成、数据库!

大家好&#xff0c;我是 Java陈序员。 俗话说得好&#xff0c;面试造火箭&#xff0c;入职拧螺丝。我们在工作中&#xff0c;其实很少用到一些计算机底层知识&#xff0c;往往只要编码完事。但是&#xff0c;知其然还要知其所以然&#xff0c;我们不仅要做一个合格的“CV 工程…

pip的基本命令和使用:程序猿的必备技能

pip的基本命令和使用&#xff1a;程序猿的必备技能 大家好&#xff0c;我是微赚淘客系统的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我将为大家介绍Python开发中不可或缺的工具——pip的基本命令和使用。掌握这些命令&#xff0c;对…

校园后勤数字化转型要怎么做?的修工单管理系统的功能强大吗?

2023年11月27日-29日&#xff0c;由中国教育后勤协会主办&#xff0c;广东省高校后勤协会、物业管理专业委员会、能源管理专业委员会、安全管理专业委员会、中小学后勤分会等协办的第六届中国教育后勤展览会在深圳圆满落幕。 广东工程宝科技有限公司以其创新的“的修工单管理系…