随便写写,不一定是最好的方法
一. 优缺点
缺点
1. 做不到秒切,每次切换都有1-2秒的延迟,如果做成秒切的那种,ESP32会报一个内存分配的错误,E (780391) BT_INIT: Malloc failed E (874750) BT_INIT: Malloc failed,虽然实测并不会影响使用,但是始终是个隐患,所以最后采用的办法是每次切换都彻底重启一遍ESP32,切换速度取决于esp32的重启速度
2. 同一台设备(电脑)与同一个ESP32(开发板)的蓝牙只能配对一次, 也就是假如电脑1连接了一次ESP32的蓝牙1,那么就不能再次连接ESP32的蓝牙2,否则会出现一直连接不上! 如果不小心配对了两次,只需要将电脑上的同名设备删除重新配对就行了
优点
1. 支持配对设备的数量很多很多!!! (目前只做了10个,也就是键盘上的0-9,ESP32有一个默认16个配对设备的限制,应该可以改)对的没错,如果你能接受上面的2个缺点的话,这会是最完美的方案!
2. 使用快捷键,键盘鼠标同时切换, 现在的键鼠设备,想在多个电脑上切换连接的话,除了使用专业KVM切换器,就只能一个一个的切换连接,也就是先把键盘切换连接到电脑2,再去切换鼠标
二. 实现功能的相关代码
1.多设备间切换的实现
使用电脑键盘的 右Ctrl+右Alt+键盘数字键(0-9) 完成切换, 这段代码是检测到同时按下了右Ctrl+右Alt 后不发送这两个键值到电脑,同时发送松开这两个键值的指令到电脑
下面这段代码是检测到同时按下了右Ctrl+右Alt 后,如果还按下了键盘上的数字键(0-9)的话,就切换ESP32的MAC地址
看到这里,相信大家都已经知道了多设备切换的原理了,没错!就是通过改变MAC地址来实现曲线救国!
其实ESP32本身是支持同时连接多个设备的(好像是4个还是几个来着),但是同时连接的设备多了之后会导致资源占用比较多,考虑到后续还要加功能上去,还是切换MAC地址来的实惠些