商米机自助收银说明

2017-06-23  本文已影响0人  造梦先生丶m

商米机打印调试

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使用 文档里有,可以参照文档来,这里就是帮大家说明了几个容易遗漏的点

————————————————

上一篇 下一篇

猜你喜欢

热点阅读