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
public class SerialPortIO : Component
{
private static void LogException(Exception exc, System.Reflection.MethodBase method)
{
}
SerialPort serialPort;
public EventHandlerzSerialPortIOStringEventArgs> StringReceivedEvent;
Code removed, just standard component constructors, initialization and error handling stuff.
So raise the event:
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:
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.
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.