public bool ConnectToScanner()
{
var rockConfig = RockConfig.Load();
if ( rockConfig.ScannerInterfaceType == RockConfig.InterfaceType.MICRImageRS232 )
{
if ( micrImage == null )
{
// no MagTek driver
return false;
}
micrImage.CommPort = rockConfig.MICRImageComPort;
micrImage.PortOpen = false;
UpdateScannerStatusForMagtek( false );
object dummy = null;
// converted from VB6 from MagTek's sample app
if ( !micrImage.PortOpen )
{
micrImage.PortOpen = true;
if ( micrImage.DSRHolding )
{
// Sets Switch Settings
// If you use the MicrImage1.Save command then these do not need to be sent
// every time you open the device
micrImage.MicrTimeOut = 1;
micrImage.MicrCommand( "SWA 00100010", ref dummy );
micrImage.MicrCommand( "SWB 00100010", ref dummy );
micrImage.MicrCommand( "SWC 00100000", ref dummy );
micrImage.MicrCommand( "HW 00111100", ref dummy );
micrImage.MicrCommand( "SWE 00000010", ref dummy );
micrImage.MicrCommand( "SWI 00000000", ref dummy );
// The OCX will work with any Micr Format. You just need to know which
// format is being used to parse it using the FindElement Method
micrImage.FormatChange( "6200" );
micrImage.MicrTimeOut = 5;
// get Version to test if we have a good connection to the device
string version = "-1";
try
{
this.Cursor = Cursors.Wait;
version = micrImage.Version();
}
finally
{
this.Cursor = null;
}
if ( !version.Equals( "-1" ) )
{
UpdateScannerStatusForMagtek( true );
}
else
{
MessageBox.Show( string.Format( "MagTek Device is not responding on COM{0}.", micrImage.CommPort ), "Scanner Error" );
return false;
}
}
else
{
MessageBox.Show( string.Format( "MagTek Device is not attached to COM{0}.", micrImage.CommPort ), "Missing Scanner" );
return false;
}
}
ScannerFeederType = FeederType.SingleItem;
}
else
{
try
{
if ( this.rangerScanner == null )
{
// no ranger driver
return false;
}
}
catch
{
return false;
}
try
{
this.Cursor = Cursors.Wait;
rangerScanner.StartUp();
}
finally
{
this.Cursor = null;
}
string feederTypeName = rangerScanner.GetTransportInfo( "MainHopper", "FeederType" );
if ( feederTypeName.Equals( "MultipleItems" ) )
{
ScannerFeederType = FeederType.MultipleItems;
}
else
{
ScannerFeederType = FeederType.SingleItem;
}
}
return true;
}