如何使用DataWedge连接非扫描类蓝牙设备实现数据收发
针对非扫描类蓝牙设备对接DataWedge的四个典型疑问,结论如下:
是否可通过DataWedge连接任意蓝牙设备实现双向收发,自动捕获蓝牙设备写入流填充应用字段?
不行。DataWedge的蓝牙适配范围只覆盖符合Zebra官方扫描协议的认证蓝牙扫码外设,根本不支持对接任意非扫描类通用蓝牙设备。设想的“蓝牙设备往输出流写数据、DataWedge捕获后自动填充应用字段”的逻辑,只有对接合规Zebra蓝牙扫码枪的时候才能跑通,普通自定义蓝牙串口设备、蓝牙传感器这类非扫描类设备,不会被DataWedge识别为合法输入源,根本触发不了数据捕获、自动填充的流程。DataWedge是否支持向已连接的蓝牙设备发送请求?能否配置请求字符串与发送频率?
DataWedge没有主动向已连接外设发送自定义请求的能力,本质就是个被动的数据接收端,只处理外设主动上报的扫描数据。整个配置体系里根本没有自定义请求字符串、调整发送频率的入口,所有和外设的双向控制逻辑都是绑定Zebra官方外设内置协议的,不对通用自定义蓝牙设备开放。如果需要主动给蓝牙设备发指令做交互,直接走安卓原生蓝牙API自己实现通信逻辑即可,DataWedge本身不提供这个能力。传输
a,b,c,d格式长字符串,先由DataWedge传入文本输入框再由应用侧拆分字段的逻辑是否可行?
只要数据源是DataWedge支持的合规扫码设备,这个逻辑完全跑得通。DataWedge默认的按键注入模式,就是把捕获到的完整数据模拟成键盘输入,打到当前聚焦的文本输入框里,对字符串长度、带不带逗号分隔符没有任何特殊限制,应用侧等完整字符串输入完成后,自己按逗号拆分做字段映射就可以。要是嫌模拟键盘输入过程中会触发多次输入框回调,也可以把DataWedge的输出模式切成Intent输出,等DataWedge把完整数据一次性通过广播抛给应用再处理,稳定性会更好。TC56上监听DataWedge Intent获取数据的方案,能否在笔记本设备上无缝运行(业务为Web App)?
做不到无缝运行。DataWedge是Zebra给自家安卓移动数据终端(比如当前使用的TC56)做的专属系统级服务,普通笔记本、非Zebra品牌的安卓/Windows设备上根本没有预装这个服务,自然也不可能抛出对应的Intent广播。如果业务是要跑在多设备上的Web App,绝对不能把DataWedge当成通用采集方案:在Zebra的安卓设备上,可以通过DataWedge的Intent输出配合JS桥接把数据传给Web层;在普通笔记本上,需要单独做适配,要么对接笔记本自身的扫码/蓝牙能力,要么直接用Web Bluetooth API和蓝牙设备直连,两套逻辑要分开做兼容。
内容的提问来源于stack exchange,提问作者Jatin

