Cradle OPN2002

Image CRD2000
Dip-switches

CRD2000

There are no DIP switches on the CRD2000.This cradle works either via USB or via RS232 and both interfaces do not require any configuration.

The USB driver for this cradle can be downloaded from the Opticon web site, from this location:
Windows� driver installer USB driver for Windows� 2000, XP& Vista, 8, 10 and 11,
Communication The 10 slots of the CRD2000 multi cradle make it possible to quickly transfer barcode data of multiple OPN2002s to a central PC and load databases and/or configuration files onto the OPN2002.

To be able to do this easily, the OPN2002 offers a set of functions to transfer files from and to the OPN2002s using the NetO protocol. However, the difference between transferring files using the NetO protocol on a single-slot cradle and a multi-cradle is that the use of terminal IDs is mandatory on both the PC as well as on the OPN2002. This is to prevent that all OPN2002s in the cradle will try to send their data simultaneously.

Since the OPN2002 doesn't have a system menu in which a terminal ID can be configured, each OPN2002 has its own unique serial number stored in non-volatile memory, which can be used as terminal ID for transferring files using the NetO protocol. On the OPN2002, the serial number can be retrieved by calling the function GetSerialNumber(), which can then be used as parameter of the functions neto_receive and neto_transmit. Since the serial number of OPN2002s is printed on the back of the terminal, the serials numbers can easily by added on the PC in the NetO32 application. The 6-digit serial numbers can be added at 'Tools > Options > Polling and Timing > Terminals to Poll'.

Below you'll find a small example program that demonstrates how the serial number can be used as parameter of the NetO functions. This program simply sends the files it has just received back to PC, so make sure you haven't enabled the option 'Downloaded files > Append' in NetO32 to prevent the file to double in size everytime it's send back.

Remarks

  • The CRD2000 does not allow multiple OPN2002s to send data at the same time to avoid data collisions. The cradle uses the 'first come first serve' principle, so as soon as one OPN2002s starts communicating, the other OPN2002s in the cradle will be muted until the currently active OPN2002 stops communicating for at least 250ms.
  • The latest version of the NetO32 application can be downloaded from our web site. The minimum required version for using the CRD2000 is version 2.07.
  • When using NetO32, don't configure a Poll Speed faster than 0,5s because due to the 250ms time-out mentioned above the OPN2002 will respond to a poll after 280 to 480ms.
  • Loading software Be aware that the CRD2000 can NOT load new software on multiple OPN2002s simultaneously, because only one OPN2002 can communicate to a PC at the same time.

    Since all terminals in a CRD2000 cradle will be able to receive the data that Appload is sent to the cradle, but the OPN2002s can't tell whether they are currently muted or not, the loading of software would go terribly wrong for all OPN2002s in the CRD2000 cradle besides one. The end result would be OPN2002s with faulty software that will need to be restored by loading the software again (one at a time). See the trouble shooting section for more information about loading software on OPN2002s with faulty or crashing software.

    To prevent such problems, please read the Loading software on the OPN2002 section carefully, before loading any software by using the CRD2000.
    Example
    #include "lib.h"
    #include <stdio.h>
    #include <string.h>
    
    void main(void)
    {
        char ftest[10][MAX_FNAME];
        int test;
    
        char serial_number[6+1];
    
        sprintf(serial_number, "%-6.6lu",  GetSerialNumber());
    
        ComOpen(COM9);
    
        for(;;)
        {
            test = neto_receive( ftest, serial_number, CLR_KEY, 3);
    
            if (test < 0)
            {
                Sound(TSTANDARD, VHIGH, SLOW, 0);
            }
            else
            {
                test = neto_transmit( ftest, test, serial_number, CLR_KEY, 3);
    
                if (test < 0)
                {
                    Sound(TSTANDARD, VHIGH, SHIGH, 0);
                }
            }
        }
    }