and M600 User Manual and Programmer SDK Revision 1X Doc No XXXXXX-1X November 29, 2022
M600 USER MANUAL AND PROGRAMMER SDK Copyright 2022 E-Seek Incorporated. All Rights Reserved. E-Seek reserve the right to make changes to any product to improve reliability, function or design. E-Seek do not assume any product liability arising out of, or in connection with, the application or use of the product, circuit or application described herein. No license is granted, either expressly or by implication, estoppel, or otherwise under any patent right or patent, covering or relating to any combination, system, apparatus, machine, material method, or process in which E-Seek products might be used. An implied license only exists for equipment, circuits and subsystems contained in E-Seek products. E-Seek and the E-Seek logo are registered trademarks of E-Seek Incorporated. Other product names mentioned in this Reference Guide may be trademarks or registered trademarks of their respective companies and are hereby acknowledged. Note that at this time the PDF417, MRZ, and QR code decoders are documented but not yet functional. Note that the M600 RFID interfaces to the PC using a standard CCID USB class and in not covered by this document. E-SEEK Inc. Website: www.e-seek.com Patented Product R & D Center 9471 Ridge haven Ct. #E San Diego, CA 92123 Tel: (858) 495-1900 Fax: (858) 495-1901 Page 1
M600 USER MANUAL AND PROGRAMMER SDK Federal Communication Commission Interference Statement This device complies with Part 15 of the FCC Rules. Operation is subject to the following two conditions:
(1) This device may not cause harmful interference, and
(2) this device must accept any interference received, including interference that may cause undesired operation. This equipment has been tested and found to comply with the limits for a Class A digital device, pursuant to Part 15 of the FCC Rules. These limits are designed to provide reasonable protection against harmful interference in a residential installation. This equipment generates, uses and can radiate radio frequency energy and, if not installed and used in accordance with the instructions, may cause harmful interference to radio communications. However, there is no guarantee that interference will not occur in a particular installation. If this equipment does cause harmful interference to radio or television reception, which can be determined by turning the equipment off and on, the user is encouraged to try to correct the interference by one of the following measures:
- Reorient or relocate the receiving antenna.
- Increase the separation between the equipment and receiver.
- Connect the equipment into an outlet on a circuit different from that to which the receiver is connected.
- Consult the dealer or an experienced radio/TV technician for help. FCC Caution: Any changes or modifications not expressly approved by the party responsible for compliance could void the user's authority to operate this equipment. This transmitter must not be co-located or operating in conjunction with any other antenna or transmitter. Radiation Exposure Statement:
This equipment complies with FCC radiation exposure limits set forth for an uncontrolled environment. This equipment should be installed and operated with minimum distance 20 cm between the radiator & your body. Industry Canada This device contains licence-exempt transmitter(s)/receiver(s) that comply with Innovation, Science and Economic Development Canadas licence-exempt RSS(s). Operation is subject to the following two conditions:
1. This device may not cause interference. 2. This device must accept any interference, including interference that may cause undesired operation of the device. Canada, avis dIndustrie Canada (IC) Lmetteur/rcepteur exempt de licence contenu dans le prsent appareil est conforme aux CNR dInnovation, Sciences et Dveloppement conomique Canada applicables aux appareils radio exempts de licence. Lexploitation est autorise aux deux conditions suivantes :
1. Lappareil ne doit pas produire de brouillage;
2. Lappareil doit accepter tout brouillage radiolectrique subi, mme si le brouillage est susceptible den compromettre le fonctionnement. Page 2
M600 USER MANUAL AND PROGRAMMER SDK TABLE OF CONTENTS 1. INTRODUCTION .......................................................................................................................................... 4 1.1 PRODUCT FEATURE ............................................................................................................................................ 4 2. DEVICE DESCRIPTION .................................................................................................................................. 5 2.1 OVERVIEW OF MODEL M600 ............................................................................................................................. 5 3. PRODUCT SPECIFICATION ............................................................................................................................ 6 3.1 3.2 TECHNICAL DETAILS ........................................................................................................................................... 7 UNPACKING DEVICE ........................................................................................................................................... 8 3.2.1 USB Cable ................................................................................................................................................. 8 3.2.2 White balance calibration card ................................................................................................................ 9 4. GETTING STARTED .................................................................................................................................... 10 5. 6. RUNNING DEMO APPLICATION ................................................................................................................. 11 SCOPE ....................................................................................................................................................... 11 6.1 6.3 INDICATOR LEDS ............................................................................................................................................. 11 GUI ............................................................................................................................................................. 12 Small Images Preview Pane ................................................................................................................... 13 6.3.1 7. ARCHITECTURE ......................................................................................................................................... 14 8. M600 DEMO APP ...................................................................................................................................... 15 8.1 8.2 FORMM600DEMO.CS ..................................................................................................................................... 15 FORMUPDATE.CS ............................................................................................................................................ 15 9. C# API ....................................................................................................................................................... 16 9.1 9.2 9.3 9.4 9.5 9.6 API FUNCTIONS .............................................................................................................................................. 16 API OBJECTS .................................................................................................................................................. 18 EVENTS: ........................................................................................................................................................ 19 PSEUDO CODE EXAMPLE ................................................................................................................................... 20 MAINTENANCE ............................................................................................................................................... 21 MECHANICAL DRAWINGS .................................................................................................................................. 22 Page 3
M600 USER MANUAL AND PROGRAMMER SDK 1. INTRODUCTION Thank you for choosing this device. This Users Guide provides descriptions of the operating procedures and programming APIs for E-seek Model M600. Carefully read this Users Guide before using this device. The actual screens that appear may be slightly different from the screen images used in this Users Guide. The Model M600 scanner Unit is hereafter referred to as this device Manual Convention Caution: This warns of a possibility of damage to this device. Important: This indicates instructions that should be followed to ensure correct functionality and efficiency of this device. Note: This indicates an item of general importance. Reminder: This indicates an item of relative importance. Detail: This indicates an item of specific importance. Restrictions Unauthorized use or reproduction of this Users Guide, whether in its entirety or in part, is strictly prohibited. The information contained in this Users Guide is subject to change without notice. 1.1 PRODUCT FEATURE This device is a ID3, ID1, and boarding pass reader. Page 4
M600 USER MANUAL AND PROGRAMMER SDK 2. DEVICE DESCRIPTION The E-Seek Model M600 ID Reader introduces a new performance standard for ID card reading. It can read ID3 and ID1 cards without a hood to streamline document reading. Boarding pass barcodes can also be read. Advanced image processing is performed to provide a high quality ID1 images without a hood. The Model M600 SDK also includes MRZ, QR, and PDF417 decoders. It connects to a PC using a high-speed USB 2.0 connection. 2.1 OVERVIEW OF MODEL M600 Figures, 1 and 2 illustrate the major modules and components of the M600. Figure 1 Figure 2 Page 5
M600 USER MANUAL AND PROGRAMMER SDK 3. PRODUCT SPECIFICATION Items Imaging Description Sensor: 2D CMOS Resolution: RGB/IR 600dpi, UV 300dpi Color depth: RGB/UV: 24 bits / pixel, IR: 8 bits / pixel Light Sources: Visible (White), IR (870 nm), UV (365 nm) Image output format: BMP Smart Card Contactless: ISO 14443 A/B, NFC, Alert Audible: Beep Visual indicator: 2 RGB status LEDs Connectivity USB 2.0 High Speed. Electrical Input power: 5V input voltage. Physical Power Consumption: TBD Power adaptor:
AC110-240V, 50/60Hz 0.35A Max Output: 5V 2Amps Dimensions:
Length: 195mm Width: 160mm Height: 109mm/ 102mm (to glass) Weight: 900grams (2lbs) Image capture window: 130 x 95 mm (5.12 x 3.74) Anti-reflective and scratch resistant Glass Environmental Temperature: Operating: 10C to 50C (14F to 122F) Storage: 20C to 70C (4F to 158F) Humidity: Operating: 5-95 % (non-condensing) Dust: IP5x Page 6
M600 USER MANUAL AND PROGRAMMER SDK 3.1 TECHNICAL DETAILS ID3, ID1, and boarding pass RGB 24 bit @ 600 dpi IR 8 bit @ 600 dpi UV 24 bit @ 300 dpi Decodes MRZ Decodes QR Decodes 2D (PDF417) & 1D USB 2.0 High speed Hoodless operation RFID Patented Page 7
M600 USER MANUAL AND PROGRAMMER SDK 3.2 UNPACKING DEVICE The M600 package includes:
M600 Device USB Cable Calibration Card (???) 3.2.1 USB CABLE The M600 is provided with a USB interface cable. This cable allows the M600 to interface with standard USB 2.0 high speed port on your computer. Figure 3 Page 8
M600 USER MANUAL AND PROGRAMMER SDK 3.2.2 WHITE BALANCE CALIBRATION CARD Figure 4 The calibration card is used to calibrate the white balance. Calibration could be required after shipping or prolonged use. To perform the white balance calibration simply insert the card with the arrow side first. After prolonged use or if the card becomes scratched it should be discarded. Page 9
M600 USER MANUAL AND PROGRAMMER SDK 4. GETTING STARTED 1. The M600 scanner uses WinUSB drivers and no installation is required for Windows8, Windows10, or Windows11. Connect the M600 Power cable and power up the scanner. The M600 should appears under Universal Serial Bus devices in Device Manager. Figure 5 At this point check the M600 top LED status, and make sure the Green light is solid ON. If the RED light blinks it indicates that the scanner encountered a fatal error. Check the error type by opening the M600dll.log file. Page 10
M600 USER MANUAL AND PROGRAMMER SDK 5. RUNNING DEMO APPLICATION Download The M600 Demo Application from http://e-seek.com/products/m-600/
6. SCOPE The PC software consists of an application exe, a C# API assembly, and a C/C++ DLL that communicates with the M600 over USB. This document covers the M600 C# sample application and the C# API that gives a C# developer a simple interface to the M600 DLL. The M600 contains an RFID module that uses a standard Microsoft CCID interface which is not covered by this document. Operation When a card is inserted the M600 firmware will:
Automatically scan a document if enabled Decode the MRZ if present Decode the PDF417 if present Scan using the White LEDs Scan using the IR LEDs Scan using the UV LEDs 6.1 INDICATOR LEDS M600 LED status table is as follow:
Solid Blink Solid Blink Scanner Ready Scanning Door Open Fatal Error 6.2 Page 11 M600 USER MANUAL AND PROGRAMMER SDK
6.3 GUI Figure 6 (ID3) Figure 10 (ID1) Page 12
M600 USER MANUAL AND PROGRAMMER SDK Figure 9 shows and ID3 document and Figure 10 shows and ID1 document. The ID1 images were cropped. The GUI has three small preview images on the left and a large main image. 6.3.1 SMALL IMAGES PREVIEW PANE Figure 11 There are three small panes which display the scanned card using different lighting. The first image was captured using white light. The second image was captured using IR light. The last image was captured using UV light. Page 13
M600 USER MANUAL AND PROGRAMMER SDK 7. ARCHITECTURE The main purpose of the C# demo application is to provide an example of how to write an application that interfaces with the M600 using a C# API. C# Application (M600.exe) C# M600 API assembly (M600api.dll) C/C++ M600 DLL (M600dll.dll) Microsoft WinUSB MRZ decoder Barcode decoder M600 firmware The application (M600.exe or user application), M600api.dll and M600dll.dllnd must be in the same directory. The DLL will create a log file (M600dll.log) in the directory in which it is running by default but it can be disabled if desired. As mentioned in scope the M600 has an RFID module that interfaces to a pc as a CCID USB class and is not covered by this document. Page 14
M600 USER MANUAL AND PROGRAMMER SDK 8. M600 DEMO APP The C# M600APP project contains the Main app and GUI. It creates the M600.exe executable. The modules in this project are:
FormM600demo.cs FormUpdate.cs 8.1 FORMM600DEMO.CS This is the main form and contains the code that interfaces with the M600 C# API. It calls the Init() function which initializes the M600DLL to communicate with the M600 and automatically transfer images. The user application should override WndProc() and call the M600s WndProcMessage() function if it wants to receive USB connect and disconnect events. 8.2 FORMUPDATE.CS This module contains subroutines that update the GUI. Page 15
M600 USER MANUAL AND PROGRAMMER SDK 9. C# API The C# API provides a simple interface to the M600. The C# developer should be able to use this interface to quickly interface with the M600 without needing to interface with the M600 DLL unmanaged code directly. The application should register for call back events at initialization. The DLL will then call back the application when an event occurs. The application should then synchronize the call back to its thread using the Invoke method in FormM600demo.cs. The API assembly is instantiated in the application as:
public static CM600api m_M600 = new CM600api();
9.1 API FUNCTIONS void SetLogDir(LOG_DIR) [Optional]
Call this function before Init() to override the default log directory. By default if this function is not called the M600DLL will create the M600DLL.LOG file in the same directory it is running in. Pass this function the string of the desired log directory. To disable logging pass the string null. void Init() Call this function at initialization such as during form load. void RegCB(OnNewEvent) Register event call back. void Close() Call this function before closing the application such as during form closed. bool LogIn(bool bLogin) When true the unit will scan when a card is inserted (normal operation). When false the unit will not scan when a card is inserted. void UserBeep(E_BEEP eBeep) Creates a beep sound. The E_BEEP enumeration has three values:
BEEP_1, Page 16
M600 USER MANUAL AND PROGRAMMER SDK void GetVer(out M600_VER ver) Gets the E-Seek serial number (EsSerNum), Silicon serial number (DsSerNum), DLL version, Barcode decoder version, firmware version, and hardware version as defined by the M600_VER structure. The members of the M600_VER structure that may be of intrest to the deverloper are:
ulong EsSerNum;
byte DllMajor;
byte DllMinor;
byte DllBuild;
byte FwMajor;
byte FwMinor;
byte FwBuild;
// E-Seek serial number
// DLL version number
// Firmware version number
// Always zero bool WrUserData (byte[] aryData) Writes a user data byte array to flash (128 byte limit). Flash should not be used store frequetly changing data as it is limited to 10,000 reliable writes. bool RdUserData(byte[] aryData) Reads a user data byte array from flash (128 byte limit). Note that in order to recive USB connect and disconnect the user application has to override WndProc() and call the M600 apis WndProcMessage. protected override void WndProc(ref Message m)
m_M600.WndProcMessage(ref m); // checks for usb connect and disconnect base.WndProc(ref m);
Page 17
M600 USER MANUAL AND PROGRAMMER SDK 9.2 API OBJECTS The C# API M600_IMG class has a bitmap for each of the three light sources:
Bitmap bmBmRgb;
Bitmap bmBmIr;
Bitmap bmBmUv;
The first image is RGB. The second image is IR. The third image is UV. The bitmaps will be cropped if an ID1 document is detected. The C# API M600_BC structure contains a 2D data structure. byte[] aryMRZ;
byte[] aryQR;
byte[] aryP417; // Byte array for PDF417*
int iBcOrient;
// Byte array for MRZ*
// Byte array for QR*
If the PDF417 barcode is found the iBcOrient element has four enumerated values of the card orinetation and zero for unknown. 0 = Unknown orientation 1 = Normal orientation (Front of card is on the right). 2 = Front on the right but upside down. 3 = Front is on the left. 4 = Front is on the left and upside down. Note that for this release the MRZ, QR, and PDF417 decoding is not yet implamented. Page 18
M600 USER MANUAL AND PROGRAMMER SDK 9.3 EVENTS:
The user application should pass a delegate on initialization to the M600dll so that the DLL can call the delegate with the integer value of the event. The M600 DLL sends event call backs to the application on a thread the M600 DLL creates. EVENT_DISCOVERY EVENT_SCANING EVENT_IR EVENT_RGB EVENT_UV EVENT_REMOVE EVENT_BARCODE*
EVENT_MRZ*
EVENT_DONE EVENT_USB_CON EVENT_USB_DIS Firmware is scanning a document IR image ready RGB image ready UV image ready Document can be removed Scan complete USB connected USB disconnected Not: MRZ and bardode functions are not currently implamented Page 19
M600 USER MANUAL AND PROGRAMMER SDK 9.4 PSEUDO CODE EXAMPLE CM600api m_M600 = new CM600api(); // C# API object m_M600.Init(M600_Callback); // callback for events
// Event callback
public void M600_Callback(int iEvent)
switch (iEvent)
case EVENT_IR:
break;
case EVENT_RGB:
break;
case EVENT_UV:
break;
// IR image ready
// RGB image ready
// UV image ready case EVENT_DONE:
// Scan complete break;
m_M600.Close() Page 20
M600 USER MANUAL AND PROGRAMMER SDK 9.5 MAINTENANCE There are three parts to maintain the M600:
(Step 3-5) Cleaning
(Step 6-7) Calibration Step 1: Insert the Calibration Card. Page 21
M600 USER MANUAL AND PROGRAMMER SDK 9.6 MECHANICAL DRAWINGS Page 22