使用HID_Keyboard_peripheral这个工程,怎么判断当前是使用的hid服务还是peripheral服务

请问下,现在使用HID_Keyboard_peripheral这个工程,怎么判断当前是使用的hid服务还是peripheral服务,想要实现如果当前是hid,就发送键值到文本,如果是peripheral就通过SIMPLEPROFILE_SERV_UUID 协议通信发送数组

你好,BLE HID服务UUID为0x1812(标准规范),主机搜索到扫描应答包可以通过此区分。image.png


我们要做的应用是,ch592去判断当前与主机连接的是什么服务,功能是如果与主机连接的是hid 有按键按下就发送传感器值如图一,如果是peripheral服务 按键不生效,如主机app发送通信协议,则返回数据如图二,现在不知道判断

1693793845167947.jpg

1693793845191891.png



你好,如果基于HID设备添加peripheral的读写通知功能,直接参考你现在手上的这份代码即可。实现的功能逻辑就是连接手机端APP,则默认为NOTI的数据透传功能。代码即你手上目前已有的;

如果是HID功能和peripheral功能分开,那就是分开对应代码进行初始化的。初始化的时候注意广播包填写的数据,将名称做好区分,这样主机在搜索到的时候可以判断为是何种设备。或者在初始化的时候进行切换,如按下1按键则HID功能,按下2按键则为peripheral功能,那就是根据按键做区分了。可以根据复位状态寄存器判断复位原因进行区分。留个邮箱提供一篇博客参考。



基于HID设备添加peripheral的读写通知功能 “实现的功能逻辑就是连接手机端APP,则默认为NOTI的数据透传功能”,怎么判断它是与主机的蓝牙直接连接还是与手机端APP


个人信息保护,已隐藏



基于HID设备添加读写通知功能不需要做区分,因为这是在HID里面添加的服务,所以本质上没有区分。直接进行使用即可,系统蓝牙连接直接会上传键值,APP连接可以进行透传功能。

邮件已发送,请查收。


我们之前有款产品用的其它蓝牙芯片比较简单也是HID键盘+数据传输服务能判断出当前使用的是那个服务


“”直接进行使用即可,系统蓝牙连接直接会上传键值,APP连接可以进行透传功能。“”这个出现了APP连接但是按键值也在发送的问题f461091c91595e32d41c37d07a8adee.jpg


有两种方式处理:

①基于HID设备增加一个服务,包含read/write/noti的透传功能,也就是你之前收到的代码。

在使用APP连接后,会枚举出所有的服务,其中包含了透传。因此可以使用APP连接实现透传功能。

同时HID上传键值也在,但是使用APP连接,所以系统不会表现有键值出现。实际的HID对应服务会有数据收到。如果不需要这个上传键值,在APP连接后,可以先通过noti下发一个字节,然后芯片收到数据后立马关闭HID上传键值的TMOS任务。

②在HID增加peripheral的功能,即最新发给你的代码。

上电复位和外部手动复位,执行HID功能;按下PB22执行软复位,执行peripheral功能。这两者功能是独立的。

image.png

如果还是存在问题,请直接发送邮件至邮箱lpc@wch.cn,我们提供对应的技术支持。



HID_Keyboard_peripheral这个工程peripheral蓝牙数据包最大只有20个字节,怎么修改这个最大长度


这里修改一下:

1.png


还有一个问题,使用默认MAC地址uuid为ffe0的服务就枚举不出来,换成自定义MAC就能枚举



理论上是不会出现该情况的,我们也基本上使用默认的MAC

你把自定义的MAC改成跟默认的一样试试看,看下是否跟周围别的MAC地址重合。


自定义的MAC改成跟默认的一样 就会枚举不出ffe0


周围也查没有与它相同的MAC地址


只有登录才能回复,可以选择微信账号登录