Interleaved 2of5 for TC51?

hey there,

im using the tc51 with the version 6.01 and the emdk 6.6.

The problem is, that the tc51 doesnt scan a Interleaved 2of5 barcode.

Why is that and how can i enable it?

 

 

 

Thanks and regards

 

Anas

Pietro Francesc...
Hi Anas,Usually Interleaved 2

Hi Anas,

Usually Interleaved 2 of 5 is disabled by default on our devices.

If you're using DataWedge, you can take a look at DW documentation to see how to enable it.

Barcode Input - Zebra Technologies TechDocs

Similarly, If you're using our Barcode API, you can take a look at the documentation and the sample on how to enable it.

Advanced Scanning Tutorial using Barcode API - Zebra Technologies TechDocs

Ciao

~Pietro

Vote: 
Vote up!
Vote down!

Points: 1

You voted ‘up’


Anas Garwal
Hi Pietro, thanks for the

Hi Pietro,

thanks for the response. That explaind ist very good. Thank you very much and nice weekend!

Ciao

Anas

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Kristoffer Lindvall
We're having the the same/a

We're having the the same/a similar problem. Using a TC51, enabling I2of5 in DataWedge works great, but using the barcode api in EMDK the scanner doesn't react to I2of5 barcodes. During our testing we run the same config in DataWedge as below and we've tried both barcodes of both length 10 and 14.

Other codes, such as code39 and code128 and EAN-13 works.

Here's an excerpt from our config:

                    config.DecoderParams.I2of5.Enabled = true;

                    config.DecoderParams.I2of5.ConvertToEan13 = false;

                    config.DecoderParams.I2of5.Length1 = 14;

                    config.DecoderParams.I2of5.Length2 = 10;

                    config.DecoderParams.I2of5.ReducedQuietZone = false;

                    config.DecoderParams.I2of5.Redundancy = true;

                    config.DecoderParams.I2of5.ReportCheckDigit = false;

                    config.DecoderParams.I2of5.VerifyCheckDigit = ScannerConfig.CheckDigitType.No;

                    config.DecoderParams.I2of5.SecurityLevel = ScannerConfig.SecurityLevel.Level1;

                    _scanner.SetConfig(config);

/ Kristoffer

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Pietro Francesc...
Hi Kristoffer,can you post a

Hi Kristoffer,

can you post a couple images of the barcodes you're trying to read?

Would be nice if you can add some info about the device you're using (BSP (build number), from Settings->about phone) and info about the scanner framework (from DataWedge about page).

~Pietro

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Kristoffer Lindvall
Here's the barcode I'm trying

Here's the barcode I'm trying to read. The device have no problem reading it if I configure it using DataWedge and scan it into the Notes app.

i2of5.png

Scanning framework: 16.2.42.0

Decoder Library: IMGKIT_7.01T08.56

2D Barcode Imager: PAACDC01-001-R01

OSX version: QCT.60.6.2.3

MXMF version: 6.0.2.3

HW ID: 37

Build date version: Wed Oct 12 18:22:23 EDT 2016

Let me know if you need anything other info.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Kristoffer Lindvall
Any chance of getting help

Any chance of getting help with this?

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anonymous (not verified)
Hi,I tried your code in our

Hi,

I tried your code in our BarcodeScanner sample, please find it forked at my GitHub: Comparing BarcodeSample1...95238 · darryncampbell/samples-emdkforandroid-6_6 · GitHub

For me, it worked on my TC51 although admittedly I was testing on a slightly more recent build (July 2017).  Can you please try the forked code to see if it works for you?  You will need to toggle one of the decoder check boxes in the sample to ensure the code to enable i2of5 is executed.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Kristoffer Lindvall
We're building on Xamarin and

We're building on Xamarin and unfortunately I can't get Android Studio and EMDK to work on my machine. Any chance of getting an APK to test?

Otherwise I'll try to see if I can get a newer firmware on the device.

EDIT: Apparently the device I got is not entitled to a firmware update for some reason, so I'm stuck at trying to get this to work on this version for now.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anonymous (not verified)
Sorry, though it was obvious

Sorry, though it was obvious in hindsight from the code, I missed the fact you were using Xamarin(!).  Please find the apk here: Release 95298 · darryncampbell/samples-emdkforandroid-6_6 · GitHub

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Kristoffer Lindvall
Thanks. Unfortunately, the

Thanks. Unfortunately, the app crashes at startup.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Kristoffer Lindvall
Any ideas on how I can

Any ideas on how I can troubleshoot the demo app? As I said it crashes at startup with the standard android "app crashed" dialog.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Pietro Francesc...
You can take a look at the

You can take a look at the logcat while you run your app ("adb logcat" from the command line or through Visual Studio with an extension like this) and post it on this thread so we can have a better understanding of what is happening.

Would be possible to update your TC51 to the latest BSP version + LifeGuard?

You can retrieve the updates from our support website if the device has been bought less than 90days ago or if you've a support contract:

TC51 Touch Computer Support & Downloads | Zebra

~Pietro

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Kristoffer Lindvall
Here's the exception:Time

Here's the exception:

Time Device Name Type PID Tag Message

11-20 15:35:41.097 Zebra Technologies TC51 Error 11605 AndroidRuntime java.lang.NoSuchFieldError: No instance field reducedQuietZone of type Z in class Lcom/symbol/emdk/barcode/ScannerConfig$DecoderParams$I2of5; or its superclasses (declaration of 'com.symbol.emdk.barcode.ScannerConfig$DecoderParams$I2of5' appears in /system/framework/com.symbol.emdk.jar)

at com.symbol.barcodesample1.MainActivity.setDecoders(MainActivity.java:522)

at com.symbol.barcodesample1.MainActivity.access$800(MainActivity.java:55)

at com.symbol.barcodesample1.MainActivity$1.onItemSelected(MainActivity.java:371)

at android.widget.AdapterView.fireOnSelected(AdapterView.java:931)

at android.widget.AdapterView.dispatchOnItemSelected(AdapterView.java:920)

at android.widget.AdapterView.access$300(AdapterView.java:51)

at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:890)

at android.os.Handler.handleCallback(Handler.java:739)

at android.os.Handler.dispatchMessage(Handler.java:95)

at android.os.Looper.loop(Looper.java:148)

at android.app.ActivityThread.main(ActivityThread.java:5417)

at java.lang.reflect.Method.invoke(Native Method)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anas Garwal
if(_scanner.isReadPending())

if(_scanner.isReadPending())

_scanner.cancelRead();

config.DecoderParams.I2of5.Enabled = true;

config.DecoderParams.I2of5.ConvertToEan13 = false;

config.DecoderParams.I2of5.Length1 = 14;

config.DecoderParams.I2of5.Length2 = 10;

config.DecoderParams.I2of5.ReducedQuietZone = false;

config.DecoderParams.I2of5.Redundancy = true;

config.DecoderParams.I2of5.ReportCheckDigit = false;

config.DecoderParams.I2of5.VerifyCheckDigit = ScannerConfig.CheckDigitType.No;

config.DecoderParams.I2of5.SecurityLevel = ScannerConfig.SecurityLevel.Level1;

_scanner.SetConfig(config);

_scanner.read();

try this. but exactly this. 

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Kristoffer Lindvall
This did not work

This did not work unfortunately

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Max Karlsson
In this code example, I found

In this code example, I found that the length1 and length2 got confused for each other.

This code:

config.DecoderParams.I2of5.Length1 = 14;

config.DecoderParams.I2of5.Length2 = 10;

should look like this:

config.DecoderParams.I2of5.Length1 = 10;

config.DecoderParams.I2of5.Length2 = 14;

So my guess is that Length1 is equivalent to "minLength" and Length2 is equivalent to "maxLength."

Edit:

I did install the latest BSP as well, at the time of writing that was 2.6.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anas Garwal
No thats not right. The

No thats not right. The config."DecoderParams.I2of5.Length2" is the smaller value and length1 is the bigger value.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Max Karlsson
That's odd, for us it's the

That's odd, for us it's the exact opposite. I just confirmed by testing it again, using Length2 as the smaller value, and Length1 as the large one completely disables the ability to scan I2of5 for us.

What BSP-version are you using?

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anas Garwal
It works fine for me. I

It works fine for me. I always thought that this way is a little bit confusing but i got used to it.

I have the 6.0 Version.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anonymous (not verified)
To clarify, both are correct,

To clarify, both are correct, from Barcode Profile Feature Reference - Zebra Technologies TechDocs :

Decode Lengths

The allowable decode lengths are specified by options Length1 and Length2 as follows:

  • Variable length: Decode symbols containing any number of characters.
    • Set both Length1 and Length2 to 0.
  • Range: Decode a symbol with a specific length range (from a to b, including a and b).
    • Set Length1 to a and set Length2 to b.
  • Two Discrete Lengths: Decode only symbols containing either of two selected lengths.
    • Set either Length1 or Length2 to the specific lengths.
  • One Discrete Length: Decode only symbols containing a specific length.
    • Set both Length1 and Length2 to the specific length.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anas Garwal
is there any way to have a

is there any way to have a thired length? any hidden way? Maybe converting it to other codes?

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anas Garwal
Hello Kristoffer,after you

Hello Kristoffer,

after you set the configs you have to call the method read. so it should be called

........

_scanner.SetConfig(config);

_scanner.read();

that solved my problems.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Kristoffer Lindvall
We do that. As I said, TC51

We do that. As I said, TC51 recognizes all other barcodes but is completely ignoring I2of5.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anas Garwal
Yeah i got that. I did have

Yeah i got that.

I did have the  exactly same problem. I did fixed by only setting the read method right after the set configuartion method. 

Try to cancel the reading befor setting the configuration:

if(_scanner.isReadPending()) {

_scanner.cancelRead();

}

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Log in to post comments