商米机打印调试
K1自助收银机
扫码台说明
K1 内置打印机说明
简介
本人公司最近使用到商米机设备,但是网上参考资料有限,官网文档的资料比较陈旧,有不少坑点,结合自身使用情况,对商米机的基本调试进行说明.以下以K1型号自助收银机为例
K1自助收银机
挂壁式无人收银机,我使用到的是USB扫码台样式的,还有一种串口式的.USB式的只能获取扫码信息,不能发送指令:
扫码台说明;
内置打印机说明
扫码台说明
·USB 扫码台相当于 USBkeyboard 键盘,只支持数据接收。接收方式有如下 2 种:
1.系统默认“模拟键盘输出”
直接用 dispacthKeyEvent 进行数据接收即可。
2.设置为“广播输出”
此模式下类似于串口扫码台,数据不会像键盘模式那样输出到 APP 页面中的输入
框内;此时须用广播方式接收数据,与如下“串口扫码台”一致。
设置方式:
法 1:在设备的“设置”->“扫码与键盘”中修改为“不输出”+“广播输出”。
法 2 在代码设置(建议):
action:com.sunmi.scanner.ACTION_BAR_DEVICES_SETTING
字段说明: key 解释 字段类型(*必传字段) *name:设备名--String(可为空 String-"";name/pid/vid 可在“设置”->“扫码与 键盘”中查看) *pid:扫码枪-产品识别码(PID)--Integer *vid:扫码枪-供应商 ID(VID)--Integer *type:是否是扫码枪--Integer toast:是否显示调试 Toast 提示--Boolean 默认:false
type 类型说明: 0-->键盘(默认) 1-->扫码枪,直接到 UI(KeyEvent) 2-->扫码枪,不直接到 UI(广播模式) 3-->扫码枪,加速模式(copy,需要 1.0.18)
坑点 :1.USB扫码台不支持发送指令,而且扫码灯常亮,需要自己添加开关防止多扫,
2.获取扫码回调的code 是以一串数字+"\n"的形式返回,导致打log的时候看不出来,但是数据处理就是错误,打断点调试的时候就会发现.
示例(设置某设备为广播输出):
设置设备为广播输出的示例
Intent intent = new Intent();
// ACTION_BAR_DEVICES_SETTING == "com.sunmi.scanner.ACTION_BAR_DEVICES_SETTING"
intent.setAction(ACTION_BAR_DEVICES_SETTING);
//name/pid/vid 可在“设置”->“扫码与键盘”中查看
intent.putExtra("name", "Synmbol Bar Code Scanner.");
intent.putExtra("pid", 4608);
intent.putExtra("vid", 1504);
intent.putExtra("type", 2);
intent.putExtra("toast", true);
sendBroadcast(intent);
监听扫码回调示例
private void registerAddGoodsReceiver() {
IntentFilter filter = new IntentFilter();
//注意:监听回调的广播和设置广播输出不一样
filter.addAction("com.sunmi.scanner.ACTION_DATA_CODE_RECEIVED");
registerReceiver(mAddGoodsReceiver, filter);
}
//上面有提到USB扫码台只能获取数据,不支持发送指令,因此扫码会常亮,需要自己设置开关防止多扫出现
/**
* 自定义扫码标记,防止多扫
*/
boolean isScaning = false;
private BroadcastReceiver mAddGoodsReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String code = intent.getStringExtra(DATA);
if (code != null && !code.isEmpty() && !isScaning) {
//注意!这里有个大坑,code是一组数字后面会加上"\n",需要自己进行处理
String[] final_code = code.split("\\n");
LogUtil.e(final_code[0]);
isScaning = true;
//TODO
//拿到结果进行操作
isScaning = false;
}
}
};
K1 内置打印机说明
打印方式使用Aidl方式,文档可以在开发文档
导入文档后有几个小坑点:
1;aidl放置位置
2.需要导入基础包
aidl使用 文档里有,可以参照文档来,这里就是帮大家说明了几个容易遗漏的点
————————————————
网友评论