B4A Library Android powered Honeywell N660x 1D/2D barcode laser scanner module

Hello All,
Here is a library that I wrapped for Android 1D/2D laser barcode scanners that uses the Honeywell N660x hardware scanning module.

Obviously you don't need a library to use a Android 1D/2D hardware laser barcode scanner. 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 scanner is open (on/activated). This is because in Android the hardware barcode scanner module 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 scanner module, 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 scanner module 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 N660x 1D/2D hardware laser scanning module.

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

B4A library tab
Libs.png


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_HoneywellN660x

Author:
Peter Simpson
Version: 1.1
  • HoneywellN660x
    • 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.
I asked some sellers of Android powered 1D/2D barcode scanners on AliExpress to send me the SDK files for a select few models. Interestingly, all the SDKs I received used the same files though this is probably a coincidence.

Below are some examples of generic Android powered 1D/2D laser barcode scanners that this library could/might work with (four 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 N660x scanner module. Using this particular module can easy add £40-£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 1D/2D hardware laser barcode scanners that uses the Honeywell N660x laser module. I've tested this library on four different models of barcode scanners which all have the N6603 laser module installed inside of them, they all worked flawlessly.

BC.jpg


Update: V1.1
  • Changed the library name (Generic was too broad a name for a hardware)
  • Tidied up the java library code
D = 106+105


Enjoy...
 

Attachments

  • HoneywellN660xExample.zip
    12 KB · Views: 22
  • HoneywellN660xLib.zip
    5.6 KB · Views: 25
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

1707896895081.png
 

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
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.


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...

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...
 
Top