B4A Library Honeywell N6602/N6603/N5703 1D/2D barcode scan engines

UPDATED:
Version 1.20 now covers the Honeywell N6602, N6603 and also the N5703 1D/2D barcode scan engines.


Hello All,
Here is a library that I wrapped for Android 1D/2D barcode scanners that uses the Honeywell N6602, N6603, and also the N5703 hardware scan engines.

Obviously you don't need a library to use a Android 1D/2D hardware scan engines. To receive barcode data, you can use an Intent via a Receiver Module without the need for a library, but this can cause conflicts. For instance, the camera does not work while the scan engine is open (on/activated). This is because in Android the hardware barcode scan engine itself is classified as a camera and you can't run two cameras at the same time. I use the library to close (deactivate) the hardware barcode scan engine, then I can use the camera to take photos, for example taking a photo of an item of stock. Afterwards I use the library to open (activate) the hardware barcode scan engine again.

Take note: This library does not work with mobile phone built-in cameras, it only works with Android powered devices that uses the Honeywell scan engines that I've previously mentioned.

I personally only purchase and supply barcode scanners to my clients that use the Honeywell N6603 laser module, it's not their latest and greatest module, but it works exceptionally well. Android powered 1D/2D hardware barcode scanners cost more than a cheap smartphone, but their hardware, scan engines, build quality, rigidness, scanning distance and speed of scanning 1D/2D barcodes are clearly superior to using any smartphone camera.

B4A library tab


Important:
There are 3 files in the attached zipped library file, place all 3 files in your B4A additional libraries folder.

Some scanner functions:
        BScannner.SetScanBeep(True)
        BScannner.SetScanVibrate(True)
        BScannner.SetIndicatorLightMode(True)

        Log($"Open the scanner: ${BScannner.OpenScanner}"$) 'Laser scanner is turned on and will scan
        Log($"Is scanner open: ${BScannner.IsScanOpened}"$)
        Log($"Get beep state: ${BScannner.GetScanBeepState}"$)
        Log($"Get vibrate state: ${BScannner.GetScanVibrateState}"$)
        Log($"Get indicator light state: ${BScannner.GetIndicatorLightMode}"$)
        Log($"Get broadcast mode: ${BScannner.GetOutScanMode}"$)
        Log($"Get scan mode: ${BScannner.GetScanLaserMode}"$)
        Log($"Scanned barcode value: ${BScannner.GetScanCodeValue}"$)
        Log($"Reset the scanner: ${BScannner.ResetScan}"$)

Resulting B4A logs:
** Activity (main) Create (first time) **
Success: Scanner module found
Scanner mode: Broadcast mode
Open the scanner: true
Is scanner open: true
Get beep state: true
Get vibrate state: true
Get indicator light state: true
Get broadcast mode: Broadcast mode
Get scan mode: Single mode
Scanned barcode value: null
Reset the scanner: true
Call B4XPages.GetManager.LogEvents = True to enable logging B4XPages events.

I've changed some of the original java functions for continuity purposes in B4A.

SS_HoneywellN660xN5703

Author:
Peter Simpson
Version: 1.2
  • HoneywellN660xN5703
    • Functions:
      • CloseScanner As Boolean
        Turn off the power for the scanner.
        Return true if successful, false if failed.
      • GetIndicatorLightMode As Boolean
        Get the blink indicator lamp mode.
        Returns true for On or false for Off.
      • GetOutScanMode As String
        Get the barcode output mode.
        Return output mode.
      • GetScanBeepState As Boolean
        Get the beep status.
        Returns true for On or false for Off.
      • GetScanCodeValue As String
        Get the scan data at broadcast mode.
        Return only scan data, can use after scan complete.
        I personally recommend using the B4A Receiver Module after scanning a barcode.
      • GetScanLaserMode As String
        Get the laser continuous mode.
        Returns continuous mode(4) or single mode(8) setting.
      • GetScanVibrateState As Boolean
        Get the vibrate status.
        Returns true for On or false for Off.
      • Initialize (EventName As String)
        Initializes the object.
      • IsInitialized As Boolean
        Tests whether the object was initialized.
      • IsScanOpened As Boolean
        Get the scanner status.
        Return true for open or false for closed.
      • OpenScanner As Boolean
        Turn on the power for the scanner.
        Return true if successful, false if failed.
      • ResetScan As Boolean
        Reset the scanner.
        Return true if reset successfully.
      • SetIndicatorLightMode (Mode As Boolean)
        Blink the indicator lamp when the scan is successful.
        Param mode True(On) indicator lamp, False(Off) no indicator lamp.
      • SetOutScanMode (Mode As Int) As Boolean
        Set the barcode output mode.
        Param mode value: 0 Broadcast mode, 1 Editbox Mode, 2 Keyboard Mode.
        Return true if successful, false if failed.
      • SetScanBeep (Mode As Boolean) As Boolean
        Beep when the scan is successful.
        Set true for On or false for Off.
        Returns true for setting successfully.
      • SetScanLaserMode (Mode As Boolean)
        Set the laser continuous scan mode.
        Param mode start continuous scan True(On), stop continuous scan False(Off).
      • SetScanVibrate (Mode As Boolean) As Boolean
        Vibrate when the scan is successful.
        Set true for On or false for Off.
        Returns true for setting successfully.
      • StartScan As Boolean
        Start decoding.
        Return true if the trigger is already active.
      • StopScan As Boolean
        Stop decoding.
        Return true if stopped successfully.

Below are some examples of generic Android powered 1D/2D barcode scanners that this library could/might work with (five definitely work), plus much much more, No guarantees thought. When ordering these 1D/2D barcode scanners, you would need to look for scanners that have the option of using the Honeywell N6602, N6603 or N5703 scan engines. Using these particular scan engines can easy add £50-£90 (depending on the supplier) to the price of ordering a barcode scanner, but in my personal opinion it's 100% worth every penny.

This library is for use with Honeywell N6602, N6603 or N5703 1D/2D hardware scan modules.

I've tested this library on five different models of barcode scanners with different hardware scan modules, in my tests they all worked flawlessly.



Update: V1.1
  • Changed the library name (generic was too broad a name for a hardware)
  • Tidied up the java library code
Update: V1.2
  • Changed the library name (SS_HoneywellN660xN5703) to better suite it's purpose
  • Updated to a newer .jar file
  • Removed a function

D = 106+105, 116 + 108


Enjoy...
 

Attachments

  • HoneywellN660xN5703.zip
    12.1 KB · Views: 19
  • SS_HoneywellN660xN5703Lib.zip
    7.7 KB · Views: 25
  • PreviousLibrary.zip
    5.6 KB · Views: 16
Last edited:

ClaudioNanni

Member
Licensed User
hi Peter Simpson, I did a test on my honeywell EDA52 handheld and on EDA57 which have the reader you indicated, it seems to me that the library doesn't work

 

Peter Simpson

Expert
Licensed User
Longtime User
it seems to me that the library doesn't work

It works perfectly fine.

I specifically mentioned Honeywell N6602/N6603 (N660x) variants of laser modules for a reason. Your EDA52 doesn't use those laser modules, but plenty of generic 1D/2D laser barcode scanners do.

I own 5 completely different makes and models of laser barcode scanners that use either the N6602 or N6603 laser modules, the library works 100% perfect as expected.

Read very carefully the forth paragraph of my original post.

Eventually you need the libraries for Honeywell handhelds I can provide them to you.
Me, actually no I will not.

I stick to specific laser modules, I do not buy Honeywell barcode scanners, I buy barcode scanners that use 2 specific Honeywell laser modules.

Honeywell does not make a generic library that works with all of their lasers, that does not exists. It sounds to me that you already have multiple SDK's.

I will now reply to your pm to me...
 
Last edited:

ClaudioNanni

Member
Licensed User

Hi Peter Simpson,
my apologies I had read very quickly,
I confirm you that trying it on a honeywell EDA51 player that where N6603 is present it works correctly!!!
Thank you...
 

Peter Simpson

Expert
Licensed User
Longtime User
rightly the library cannot contain all the SDKs in the world
Hear hear.

That's why I mentioned in my original post the two modules that I know it works on, four of my five scanners use the N6603 whilst the fifth uses the N6602. Basically all my scanners are if the N660x family of laser modules.

But saying that, as you already know, one could just use the B4A Receiver Module (a receiver) without a library and just capture the scanned barcode directly ?


Enjoy...
 

Peter Simpson

Expert
Licensed User
Longtime User
Hi Peter Simpson,
my apologies I had read very quickly,
I confirm you that trying it on a honeywell EDA51 player that where N6603 is present it works correctly!!!
Thank you...
Thank you for letting me know.

According to your Honeywell EDA51 barcode scanner specifications, your barcode scanner comes with one of two modules. Luckily yours has the module that works with this library ?

Honeywell EDA51:
Scan Engine:
Honeywell N3601, N6603 Slim
Imager (1D/2D barcode symbologies).


Enjoy...
 

Peter Simpson

Expert
Licensed User
Longtime User
I have a EDA51-1. What b4a option do I have that will work?

A quick search on the big G bring back this.
  • Scanner: The EDA51-1 has an N6603 imager that can capture barcode data, even if it's damaged.
See above post #6

Have you even tried the library attached?

And the answer is no to your question in the email that you sent me this morning. I'm not in the business of giving away or sell my source code, they are all business solutions that I either create for clients or I sell as a retail solutions to customers. Retail businesses purchase my solutions (and have done for many years) to help their businesses run more smoothly and efficiently.
 

Ryan Pigeon

Member
I did and it reports scanner not found. All good I asked for the sake of asking (source code). Any other ideads to get this Honeywell going? Thanks for the reply, Peter.
 

Peter Simpson

Expert
Licensed User
Longtime User
Checked it has the N6600 engine. Is there hope?
Interesting, I didn't know there was a 6600 engine. I've not seen a library for that one.

Anyway the only other way I can think of is to use a broadcast receiver to get the intent. This intent should include the scanned data (barcode number) that you can use in your app. Using a broadcast receiver to capture the scanned data should be simple enough to accomplish once. The intent setting should also be somewhere on your EDA51-1 and easily accessible.

Look at page 34 below at the intent
 

Peter Simpson

Expert
Licensed User
Longtime User
Updated the library to version 1.20.
As I now own an N5703, as well as an N6602 and N6603, I've wrapped the updated jar file into an updated library for forum members to use.


Enjoy...
 
Last edited:
Cookies are required to use this site. You must accept them to continue using the site. Learn more…