Enabling ALL_THRICE does have a small performance penalty. By default the scanner will read twice before returning a value. Setting ALL_THRICE change the scanner to read three times before returning a result.
Another thing to note, the sample code you have provided is setting the laserSpecific settings. TC51 and TC56 use an imager scanner, the correct setting should be imagerSpecific.
If you have control over the barcodes themselves, you can add a check digit and enable the code39.verifyCheckDigit setting. This will perform a basic checksum and help prevent the issue you are seeing with misidentified characters.
Software Engineer Kutir Mobility
Posted on behalf of Zebra Technologies