主动笔的多协议切换
主动笔的多协议切换
前言:
  各家屏厂的通讯协议不同,从用户角度希望购买一支笔即可在多家屏厂的屏上使用,因此对主动笔支持多协议提出了多协议切换的需求。本篇文章讨论多协议切换的逻辑实现
1 为什么要主动笔多协议切换
  主动笔在电子屏上书写,实质是笔和屏通讯交互的过程,既然有通讯那就一定有通讯协议。目前通讯协议由屏端主导制定,主动笔和屏准照一定通讯协议进行无线通讯交互。目前还没有各个屏厂商统一遵守的标准协议,各大屏厂都制定自己的协议,导致市面上用户购买主动笔时只能买与自己屏适配的,目前较为常见的有苹果笔、微软笔、谷歌笔、华为笔等。
  为不同的屏买不同的笔这其实是一种极大的浪费,应该像蓝牙耳机一样可以在所有多媒体设备上使用。要推动几大屏厂一起制定和准守统一的主动笔协议是很难的,既然无法统一协议那么可以使设备兼容多种协议,目前屏端也已经做了一些多协议支持的努力,但也只限于自家协议,比如微软最新的Hub屏支持MPP2.5和MPP2.0协议。作为笔厂为了提升产品竞争力,应考虑在笔端支持更多屏端协议实现一笔多屏使用。
2 多协议切换的理论基础
  要把多套主动笔协议做到同一支笔里并不难(只要Flash空间足够),保证其中每一个协议正常工作也不难,只要严格按照协议实现功能和性能,问题在于协议的准确迅速切换。将主动笔多协议切换分为以下几步。
- 检测识别。
- 协议切换。
- 数据跨协议传递。
3 检测识别
  所谓多协议切换的检测识别是指主动笔既要稳定工作在当前运行协议下,同时又要保证能迅速识别到协议切换条件。
  为了节省功耗和便于屏识别处理,主动笔发出的信号应该是周期性的。目前主流的笔屏通讯类似于单片机总线通讯的半双工模式,即数据双向流动但同一时刻只能单向。理论上当笔不发送信号时这些原本的“静默”时间都可作为接收处理,即多协议切换的检测识别。协议本身也可能规定了某段时间做接收处理,但那只针对当前协议,如果要检测其他协议需要自行定义。可将识别检测拆分为三种动作。
- 找寻。
- 快速识别。
- 接收和数据处理。
3.1 找寻
  当主动笔暂时完成信号发送,并且本将处于静默状态时,为了“悄无声息”的检测到是否存在其他协议的屏设备,开启信号找寻功能直到下一次笔发信号送动作之前关闭。这段接收处理的目的只是确认是否存在外部信号,为了节省功耗不需要开启全部接收性能。比较简单方法是检测上升沿或高电平,当无外部信号时笔应该接收到持续的低电平,反之若出现上升沿或高电平,则表明存在“某种”信号,识别上升沿或或高电平对单片机来说非常简单高效。
3.2 快速识别
  一旦识别到存在信号,便将接收性能完全打开持续接收。目前来说屏端发送的信号有两种,一种是频率一段时间内固定的方波信号,一种是频率不断变化的DSSS信号,两种信号的接收逻辑不同,“快速识别”动作需要迅速判断出是哪种信号,并用最合适的逻辑接收接下来的信号。当然,接收的也肯是无关的”杂波“信号,也需要快速识别具有一定的能力判断出来,如果是”杂波“信号则无需继续接收,直接关闭接收功能。
3.3 接收和数据处理
  当接收功能完全打开后,并确定何种逻辑接收,接下来只需等待将信号完整接收下来并进行数据解析。数据解析的逻辑取决于所兼容的多套协议中的规定,需按照各个协议的数据分布特点编写解析逻辑。通过数据解析后应该分析出接收的信号来自哪个平台,比如是微软屏还是谷歌屏,部分协议还可解析接收数据中的特定字段判断屏端是否允许与屏配对互联和通讯基于的协议版本。
  另外,以上三个动作的处理都需要一段时间,这段时间覆盖在主动笔原本“静默”的地方,因此覆盖的位置所占的时间应该不影响主动笔稳定运行在当前协议下。因此根据具体的处理时间开销选择合适的位置插入多协议 “找寻” 处理。
4 协议切换
  当确定要切换协议时开始执行切换动作,若不需切换协议则继续工作在当前协议下。切换需要在“正确的时机”,应遵循以下几点:
- 应在主动笔周期的“静默”处切换,保证当前协议正常运行;
- 不应距离协议规定的下一个“动作”时间段过近,因为一旦切换发生故障,使得还有足够时间放弃切换继续运行当前协议;
- 应选择在当前协议当前周期结束处执行协议切换动作,或者至少也应该保证将当前周期的压力数据发送完毕后再切换协议,这样可以使得压力信息多发送一帧,使得切换显得更迅速,断线感或闪烁感最小。
- 应选择在在无笔尖压力时切换协议,在有压力时切换,切换过程中将短暂失去通讯,使得用户体验到断线感觉。