Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / C#

Barcode Scanning

4.89/5 (8 votes)
5 Jan 2011CPOL 74.3K  
A fragment showing how easy it is to read barcodes from serially attached Symbol barcode scanners

Introduction

The following contains some code required to read barcodes from a Symbol barcode scanner.

The StringReceivedEvent serves up scanned barcodes.

The purpose of this tip is to show that getting barcodes from barcode scanners is quite simple.

Luc Pattyn[^] made a few hints, so I've reduced the code part of the tip to make it more readable. I'll obviously have to rewrite this as an article at a later time :-O

C#
public class SerialPortIO : Component
{
    private static void LogException(Exception exc, System.Reflection.MethodBase method)
    {
    // Log exceptions here
    }
    SerialPort serialPort;
    public EventHandlerzSerialPortIOStringEventArgs> StringReceivedEvent;

Code removed, just standard component constructors, initialization and error handling stuff.

So raise the event:

C#
protected virtual void OnReceiveString(string characters)
        {
            if (StringReceivedEvent != null)
            {
                SerialPortIOStringEventArgs eventArgs = new SerialPortIOStringEventArgs(characters);
                StringReceivedEvent(this, eventArgs);
            }
        }

Event handler registered with the internal SerialPort Component:

C#
private void ProcessSerialPortDataReceivedEvent(object sender, SerialDataReceivedEventArgs e)
        {
            try
            {
                ProcessSerialPortData(sender, e);
            }
            catch (Exception exc)
            {
                LogException(exc, System.Reflection.MethodBase.GetCurrentMethod());
            }
        }

Method that can be overridden in derived components to modify how to retrieve the data from the SerialPort component.

C#
protected virtual void ProcessSerialPortData(object sender, SerialDataReceivedEventArgs e)
        {
            try
            {
                string characters = ReadLine();
                if (characters != null)
                {
                    characters = characters.Trim();
                    OnReceiveString(characters);
                }
            }
            catch (Exception exc)
            {
                LogException(exc, System.Reflection.MethodBase.GetCurrentMethod());
                throw;
            }
        }

I hope that it might prove useful.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)