当前位置: 首页 > news >正文

蓝牙 bluez 的编程 C C++

蓝牙 bluez 的编程 C C++

简介
bluez目录有一个libbluetooth.a文件
有一个目录 lib目录里面存储这网络连接的部分代码
基于库的代码编程.
在linux下如果自带了蓝牙,可以通过gcc **.c -lbluetooth 直接编出一个可执行文件.

参考文献

下面的连接提供了一个测试代码.
博客链接

另外,关于 ble 使用库的方式一直出现失败的情况,是因为,没有设置ble的相关参数,具体可以参考
博客链接
中的enable_advertising函数

 int device_id = hci_get_route(NULL);

        int device_handle = 0;
        if ((device_handle = hci_open_dev(device_id)) < 0) {
                perror("Could not open device");
                exit(1);
        }

        le_set_advertising_parameters_cp adv_params_cp = { 0 };
        adv_params_cp.min_interval = htobs(advertising_interval);
        adv_params_cp.max_interval = htobs(advertising_interval);
        adv_params_cp.chan_map = 7;

        uint8_t status;
        struct hci_request rq = { 0 };
        rq.ogf = OGF_LE_CTL;
        rq.ocf = OCF_LE_SET_ADVERTISING_PARAMETERS;
        rq.cparam = &adv_params_cp;
        rq.clen = LE_SET_ADVERTISING_PARAMETERS_CP_SIZE;
        rq.rparam = &status;
        rq.rlen = 1;

        int ret = hci_send_req(device_handle, &rq, 1000);
        if (ret < 0) {
                hci_close_dev(device_handle);
                fprintf(stderr, "Can't send request %s (%d)\n", strerror(errno), errno);
                return (1);
        }

        le_set_advertise_enable_cp advertise_cp = { 0 };
        advertise_cp.enable = 0x01;

        memset(&rq, 0, sizeof(rq));
        rq.ogf = OGF_LE_CTL;
        rq.ocf = OCF_LE_SET_ADVERTISE_ENABLE;
        rq.cparam = &advertise_cp;
        rq.clen = LE_SET_ADVERTISE_ENABLE_CP_SIZE;
        rq.rparam = &status;
        rq.rlen = 1;

        ret = hci_send_req(device_handle, &rq, 1000);

        if (ret < 0) {
                hci_close_dev(device_handle);
                fprintf(stderr, "Can't send request %s (%d)\n", strerror(errno), errno);
                return (1);
        }

转载于:https://www.cnblogs.com/eat-too-much/p/8885522.html

相关文章:

  • Golang自定义包总结
  • Js基础——数据类型之Null和Undefined
  • 如何调用带返回值类型的函数
  • 通过pfSense阻止对某个网站的访问
  • scala基础语法(二)
  • python subprocess
  • linux笔记4.0
  • Oracle毙掉JavaOne
  • node入门
  • HTML5+CSS3+jQuery Mobile轻松构造APP与移动网站 (陈婉凌) 中文pdf扫描版
  • 拓展jquery js动态添加html代码 初始化数据
  • 几种编码格式
  • “Head First 设计模式“ :适配器模式
  • 一个披萨电影夜,你到底泄露了多少个人数据?
  • web项目中web.xml的作用
  • Android Volley源码解析
  • angular组件开发
  • Babel配置的不完全指南
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • ERLANG 网工修炼笔记 ---- UDP
  • httpie使用详解
  • java概述
  • JSONP原理
  • LeetCode29.两数相除 JavaScript
  • python3 使用 asyncio 代替线程
  • python学习笔记 - ThreadLocal
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • 阿里云Kubernetes容器服务上体验Knative
  • 检测对象或数组
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 前端性能优化——回流与重绘
  • 我感觉这是史上最牛的防sql注入方法类
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 阿里云重庆大学大数据训练营落地分享
  • ​VRRP 虚拟路由冗余协议(华为)
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转) Face-Resources
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • .apk文件,IIS不支持下载解决
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .net 按比例显示图片的缩略图
  • .project文件
  • ::什么意思
  • @Bean有哪些属性
  • @ResponseBody
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • [].shift.call( arguments ) 和 [].slice.call( arguments )
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution