Skip to Main Content
Cognex 지원 허브
LogoLogo

Script - Application - Filtering Ean and Code 128 Codes With Handheld

Sample job to filter out EAN and Code 128. Discriminating UPC.

2025. 04. 14.

Details

Distinguishing between UPC and EAN barcodes can be challenging. Typically, a UPC code contains 12 digits, often prefixed with a leading zero when formatted as a 13-digit string. In contrast, EAN codes are either 13 or 8 digits long. For the purpose of this example, we will be working exclusively with 13-digit EAN codes.

To ensure accuracy during scanning, the scripts will include a built-in 2-second delay after each successful read. This delay helps prevent accidental or repeated scans of the same barcode.

 

Data Formatting Script

'use strict';
// Constants
const VALID_CODE_LENGTH = 13;
const ENTER= "\x0D\x0A";
const WAIT_TIME = 2;
//Precofing
dmccSet('SYMBOL.C128','ON');
dmccSet('SYMBOL.UPC-EAN','ON');
dmccSet('UPC-EAN.UPC-A','OFF');
dmccSet('UPC-EAN.UPC-B','OFF');
dmccSet('UPC-EAN.UPCE1','OFF');
dmccSet('UPC-EAN.EAN8','OFF');
dmccSet('UPC-EAN.DELZERO','ON');

// Function to handle the result of barcode decoding
function onResult(decodeResults, readerProperties, output) {
 let outputString = '';
 if (decodeResults[0].decoded) {
   // Check if the decoded content length is exactly 13 characters
   if ((decodeResults[0].content.length === VALID_CODE_LENGTH) || (decodeResults[0].symbology.name == 'Code 128')) {
     outputString = decodeResults[0].content + ENTER;
     output.events.system = Event.system.goodRead; // Trigger good read event
   } else {
     output.events.system = Event.system.noRead; // Trigger no read event
     outputString = ''; // Clear output string
   }
   dmccSet('SYMBOL.C128','OFF');
   dmccSet('SYMBOL.UPC-EAN','OFF');
   if (serialHandler !== null) { //Check if serial handler is enabled
     serialHandler.setTimer(WAIT_TIME); //Lunch timer with defined time value
   }
 }
 output.content = outputString;// Set the output content
}

 

Communication Script

'use strict';

const LOG = true; //Enable loggin. Results could be found in Device Log

let serialHandler = null; //Declaring serial (COM) handler
function CommHandler(localName) {
 return {
   onConnect: function (peerName) {

     if (peerName === 'COM USB') { //Opening connection on COM USB
       serialHandler = this; // Enableing serial handler
       logMsg('Serial Handler Connected!'); //Logging message that connection have been established
       return true;
     }
     return false;
   },
   onDisconnect: function () {
     if (this === serialHandler) {
       serialHandler = null; //Disableing serial handler
       logMsg('Serial Handler Disconnected!'); //Logging message that connection have been clossed
     }
   },
   onExpectedData: function () {},
   onUnexpectedData: function () {},
   onTimer: function () { //When timer counts to desired value send data
     if (this === serialHandler) { //Check if connection is open
       logMsg ('Timer reached!');
       dmccSet('SYMBOL.C128','ON');
       dmccSet('SYMBOL.UPC-EAN','ON');
       dmccSet('UPC-EAN.UPC-A','OFF');
       dmccSet('UPC-EAN.UPC-B','OFF');
       dmccSet('UPC-EAN.EAN8','OFF');
       dmccSet('UPC-EAN.DELZERO','ON');
     }
   }
 };
}

function logMsg (msg) { //Function for loggin messages
 if (LOG) {
   console.log(msg);
 }
}

Loading component...

Loading component...

관련 자원

Loading component...