android - Motorola MC40 doesn't recognize cyrillic symbols at DataMatrix code -
i'm using motorola mc40 on android emdk. when scan data matrix code cyrillic symbols capital "О" (u041e), function scandata.getdata() returning string character "�" (code 65533).
when use software tool i-nigma sdk, return string of charracters in 1251 codepage , can recognize it.
could me read datamatrix barcodes emdk?
image:
coded string: #1@#ОС@#0700022520
i-nigma decoded sequence of bytes hex: [23 31 40 23 ce d1 40 23 30 37 30 30 30 32 32 35 32 30]
mc40 decoded string: #1@#��@#0700022520
emdk version: 3.1 os version: 4.1.1
as far understand need sequence of read bytes before converted string, or set code page of source data converter.
zebra's emdk v4.0 released january 2016 introduce new method in barcode api scan raw data: getrawdata()
.
as example can use following code in barcodesample1 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 encoded string datastring += "encoded data size: " + data.getdata().length() + " string: " + data.getdata() + "\n"; //barcode data raw data datastring += "raw data size: " + data.getrawdata().length + " (hex): " + bytestohexstring(data.getrawdata()); new asyncdataupdate().execute(datastring); } } }
where bytestohexstring()
simple helper function:
public static string bytestohexstring(byte[] bytes){ stringbuilder sb = new stringbuilder(); for(byte b : bytes){ sb.append(string.format("%02x ", b&0xff)); } return sb.tostring(); }
in case getrawdata
returns byte[]
containing barcode's raw data.
Comments
Post a Comment