设为首页添加收藏

您好! 欢迎访问PDA导购网,最专业的选型咨询网站

选型/技术疑问留言(请点击进入留言界面)

微信
扫码关注官方微信
电话:15016095220

您的位置:首页>>技术文章>>商米门店设备售后
商米门店设备售后

商米自助机K1,商米排队叫号机怎么添加广播,怎么获取扫描的条码数据

发布日期:2020-06-11 来源: 本站 阅读量(2948


商米排队叫号机,商米自助机K1的应用中,商扫码+键盘组件于解决扫码枪和输法之间互相扰的问题。以下分别介绍USB扫码器与串口扫码器:

图片.png

一、USB扫码器:

USB扫码器相当于USBkeyboard键盘,只支持数据接收接收方式有如下2种(21,切换接收方式需要进行设置,出厂默认为KeyEvent):

方式1KeyEventdispacthKeyEvent即可。

方式2、广播:此模式下,数据不会像键盘模式那样输出到APP页面中的输入框内;必须用如下方式切换接收模式接收广播数据

1切换接收模式

1:在“设置”->“扫码与键盘”中修改为“不输出”+“广播输出”。

2(建议)action:com.sunmi.scanner.ACTION_BAR_DEVICES_SETTING

<p>字段说明:

图片.png

<p> type类型说明:

0-->键盘

1-->扫码枪,直接到UIKeyEvent

2-->扫码枪,不直接到UI(广播模式)

3-->扫码枪,加速模式(数据内容一次性填充到输入框,需要1.0.18

<p>示例(设置某设备为广播输出):

Intent intent = new Intent();

intent.setAction("com.sunmi.scanner.ACTION_BAR_DEVICES_SETTING");

intent.putExtra("name","Point of Sale Fixed Barcode Scanner.");

intent.putExtra("pid",9492);intent.putExtra("vid",1529);

intent.putExtra("type",2);//1 KeyEvent输出2广播输出

intent.putExtra("toast",true);

context.sendBroadcast(intent);

2通过广播接收扫码内容监听广播:

"com.sunmi.scanner.ACTION_DATA_CODE_RECEIVED" 例:

private static fifinal String ACTION_DATA_CODE_RECEIVED = "com.sunmi.scanner.ACTION_DATA_CODE_RECEIVED";

private static fifinal String DATA = "data";

private BroadcastReceiver receiver = new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) {

String code = intent.getStringExtra(DATA);

if (code != null && !code.isEmpty()) {

mCode.setText(code);

}

}

};

private void registerReceiver() {

IntentFilter fifilter = new IntentFilter();

fifilter.addAction(ACTION_DATA_CODE_RECEIVED);

registerReceiver(receiver, fifilter);

}

二、串口扫码器:

口扫码台适用于扫屏幕码,例如手机付款码、电子会员码等。同时支持KeyEvent和广播输出,不需要切换或设置

方式一、KeyEvent:与USB扫码器相同,用dispacthKeyEvent即可。

方式二、广播:与USB扫码器相同,用BroadcastReceiver即可。

此外,串口扫码器可以通过广播发送指令,实现扫码器的控制(例如控制扫码器开启和关闭)

串口扫码命令

串口扫码器SourcecodeDemo

广播发送指令的方式

actioncom.sunmi.scanner.Setting_cmd

cmd byte[]cmd_data:命令+两位校验位(校验和计算)

Demo如下

/* **发送串口命令*/

public void onSendSerialCmd(View view) {

try {

String s = NLS0302010;;//命令,如:NLS0302010;

byte[] bytes = s.getBytes();

byte[] cmd = new byte[bytes.length + 2];

System.arraycopy(bytes, 0, cmd, 0, bytes.length);

lrcCheckSum(cmd);

// send cmd

Intent intent = new Intent("com.sunmi.scanner.Setting_cmd");

intent.putExtra("cmd_data", cmd);

sendBroadcast(intent);

} catch (Exception e) { e.printStackTrace();

}

}

private void lrcCheckSum(byte[] content)

{

int len = content.length;

int crc = 0; for (int l = 0;l < len -2; l++)

{

crc += content[l] & 0xFF;

}

crc = ~crc + 1;

content[len -2] = (byte) ((crc >> 8) & 0xFF);

content[len -1] = (byte) (crc & 0xFF);

}

命令

1、常见的自动扫码的场景,可设置为“感应模式”(默认为此模式):

·@SCNMOD2设置为感应模式此模式下,扫码器自动扫码。

·“@ORTSET$”设置等待时间$为时间ms,建议值1000

·“@RRDDUR$”设置同码间隔$为时间ms建议800~1000

·“@SENIST$”设置异码间隔$为时间ms建议200~400。这命令实际是控制感应间隔,大于同码间隔时会对同码也生效。

2针对付场景,扫码器只需要在付款时扫码,设置为“指令触发模式”:

·@SCNMOD0设置为指令模式。此模式下,扫码器默认处于关闭状态,需要发送如下“开启一次识读”的指令才会进行一次扫码。

·#SCNTRG1”开启一次识读。扫到码或超过等待时间后,立即回到关闭状态。

·#SCNTRG0关闭识读。

·“@ORTSET$”设置等待时间$为时间ms,建议值60000

3、其他常用命令:

·“@TSUENA1”激活后缀。

·“@TSUSET0D0A”设置后缀为回车换行。

·“@GRBENA1”开启蜂鸣器。


分享到

新浪微博

分享到

朋友圈

分享到

QQ空间