gpt4 book ai didi

android - 摩托罗拉 MC40 无法识别 DataMatrix 代码中的西里尔符号

转载 作者:行者123 更新时间:2023-11-30 01:52:09 27 4
gpt4 key购买 nike

我在带有 EMDK 的安卓系统上使用摩托罗拉 MC40。当我扫描带有大写“О”(U041E) 等西里尔字母符号的 Data Matrix 代码时,函数 ScanData.getData() 返回带有字符“�”的字符串(代码 65533)。

当我使用软件工具i-nigma sdk时,它返回1251代码页的字符串,我可以识别它。

谁能帮我用 EMDK 读取我的 DataMatrix 条形码?

图片:

DataMatrix Barcode for string: #1@#ОС@#0700022520

编码字符串:#1@#ОС@#0700022520

i-nigma 解码字节序列十六进制:[23 31 40 23 ce d1 40 23 30 37 30 30 30 32 32 35 32 30]

mc40解码后的字符串:#1@#��@#0700022520

EMDK 版本:3.1操作系统版本:4.1.1

据我所知,我需要在将读取的字节序列转换为字符串之前获取读取字节的序列,或者为转换器设置源数据的代码页。

最佳答案

2016 年 1 月发布的 Zebra 的 EMDK v4.0 在条码 API 中引入了一种扫描原始数据的新方法:getRawData() .

例如,您可以在 BarcodeSample1 you can find on github 中使用以下代码

@Override public void onData(ScanDataCollection scanDataCollection) {

if ((scanDataCollection != null) &&
(scanDataCollection.getResult() == ScannerResults.SUCCESS)) {

ArrayList <ScanData> scanData = scanDataCollection.getScanData();
for(ScanData data : scanData) {
//Barcode label type
String dataString = "Label Type: " + data.getLabelType() + "\n" ;
//Barcode data as encoded String
dataString += "Encoded Data Size: " + data.getData().length() +
" String: " + data.getData() + "\n";
//Barcode data as Raw Data
dataString += "Raw Data Size: " + data.getRawData().length +
" (Hex): " + bytesToHexString(data.getRawData());

new AsyncDataUpdate().execute(dataString);
}
}
}

其中 bytesToHexString() 是一个简单的辅助函数:

    public static String bytesToHexString(byte[] bytes){ 

StringBuilder sb = new StringBuilder();
for(byte b : bytes){
sb.append(String.format("%02x ", b&0xff));
}
return sb.toString();
}

在这种情况下,getRawData 返回一个包含条形码原始数据的 byte[]

关于android - 摩托罗拉 MC40 无法识别 DataMatrix 代码中的西里尔符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32865257/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com