Scanner Plug-In Development
Can the application specify that it does NOT need to receive MICR characters?
No. Virtually all applications request the MICR data. However, if you know that the item is not a MICR document, there is no need to try to read the MICR. You can just set the MICR text to a zero length string. Ranger® - The universal check scanner ...
Which installation script editor should we use?
We use the NSIS script compiler and HM NIS to edit and compile Ranger plug-in installation scripts. You can download the software here: Nullsoft Scriptable Install System (NSIS) HM NIS - Editor/IDE for NSIS Install NSIS first and then install HM NIS. ...
GetUniqueOptionsSupported() example
bool PluginMain::GetUniqueOptionsSupported(CString DeviceId, CString & XML) { PluginCallLogger LogCall("PluginMain::GetUniqueOptionsSupported(\"%s\", ...)", (LPCSTR)DeviceId); //if our base class is not happy with this call... if ...
Where are scanner plug-in files located?
The default program file location for a Ranger scanner plug-in is: C:\Program Files\Silver Bullet Technology\Ranger\Scanner Plug-ins\[plug-in name]\ Windows Vista: C:\ProgramData\Silver Bullet Technology\Ranger\Scanner Plug-ins\[plug-in name]\ ...
What's the difference between hopper and manual drop feeding?
Feeding begins when Ranger calls your plug-in's StartFeeding() function. Below are the actions that your plug-in must take in different scenarios. When feeding from the Main or Merge Hopper: No items in the feeder: Call ...
Can the application set image auto-cropping, rotation and deskewing?
You could provide these parameters in your unique option file. They can be changed by the application on a per batch basis. However, virtually all applications expect the images to be auto-cropped, deskewed and in the same orientation for each ...
Should Ranger call my GetUniqueOptionsSupported() function?
No, Ranger does not call GetUniqueOptionsSupported(). However, applications such as RangerFlex may call this function to determine which unique options are available. Ranger® - The universal check scanner interface Copyright © 2023 Silver Bullet ...
How will my plug-in be installed?
You'll create an installation script based on the sample installation script in the plug-in SDK. Your plug-in installer will install and uninstall all of the device drivers, DLL and support files needed to run your plug-in. During the plug-in ...
Does my plug-in need to support suspending items?
The suspend functionality was designed for scanners that can: Stop an item in the scanner Return the MICR, OCR, and in some cases images Allow the operator to key something Make a pocket and/or endorsement decision Send the item to the target pocket ...
How can I test my unique options with Ranger Flex?
The version of Ranger Flex that comes with Ranger 3.0.1 and later will allow you to set your unique options. You can also test your unique options by setting them manually in your PluginName.ini file before running Ranger Flex. Ranger® - The ...
What is the plug-in certification process?
Since our certification process is evolving, we will not charge you for the first certification. There are the high-level certification steps: Send us a scanner to test with. Email us your plug-in some source code and TransportInfo.ini and ...
How do I install a device driver using a NSIS installation script?
See this article for options: How do I start/stop/create/remove/check a service Ranger® - The universal check scanner interface Copyright © 2023 Silver Bullet Technology www.sbullet.com
How does Ranger verify that my plug-in is digitally signed?
Prior to loading your plug-in, Ranger will verify that your plug-in is signed with Silver Bullet's digital signature. ilver Bullet will sign the released version of your plug-in after it passes Ranger certification testing. There is one exception to ...
What are Ranger license files?
Ranger license files allow end users and developers to install and use Ranger without entering unlock codes. There are two types of Ranger license files, developer license files and production license files. Developer license files are used by Ranger ...
Where can Ranger license files be located?
Ranger first looks for a license file in your plug-in directory, then it looks in the Ranger.ocx directory. The license file must be named License.dat. Ranger® - The universal check scanner interface Copyright © 2023 Silver Bullet Technology ...
How do I use NSIS to create an installer for my plug-in?
The plug-in SDK page on sbullet.com now contains a link to a zip file containing all essential installers for NSIS. The zip file contains simple instructions, an NSIS installer from the NSIS website, and valuable includes libraries for your NSIS ...
What happens when a scanner is not attached/turned on?
This is how the logic flow works when a check scanner is not attached: The application calls Ranger.Startup() Ranger loads each plug-in and calls InitializePlugin() and AreDevicesAttached(). If no devices are attached to a plug-in, then it is ...
How should I format the MICR line?
Leading spaces and spaces between fields should be retained. Trailing spaces should be discarded. Translate Symbols: Cannot read = '!' (exclamation point) Amount = 'b' On-Us = 'c' Dash = '-' (dash) RT = 'd' Ranger® - The universal check scanner ...
What is the difference between "attached" and "connected" devices?
Attached: One or more scanners are physically attached to the PC. Ranger calls AreDevicesAttached to determine if a plug-in should be used to drive devices. This is needed because multiple plug-ins may be installed on the same PC. Connected: The ...
Should DeviceConnected() be called for each check scanner?
The first plug-in function that gets called is AreDevicesAttached(). Since it returns what is essentially a yes or no answer, it presumably only reports that one or more devices are found to be available (attached) but not how many. If it returns ...
Should DevicesInitialized() be called after every InitializeDevices() call?
In the InitializeDevices() function of the sample plug-in, whether a device is found or not, it calls the Ranger function DevicesInitialized(). So presumably calling this function doesn't mean the device has actually been initialized but only that ...
How can my plug-in define unique parameters?
Each plug-in has an ini file for setting options that are unique to the scanner(s) that the plug-in supports. You specify which options are available by placing an ini file with the same root name as you plug-in DLL in the plug-in data directory ...
Can the application set the image resolution?
Yes. Today this is done by setting image resolution(s) in your plug-in's unique option file. The plug-in guide lists the standard names for these options. RangerFlex is pretty limited. We need to do a major overhaul on it in order to support an ...
Can the application set the image window size?
There are ways for an application to set the scan window size in Ranger and there are a few scanners that provide "snippet window" capture. However, these features are almost never used by application programmers. I recommend that you do not ...
Should I create a new project or use the sample plug-in code?
We recommend that you create a new plug-in project and copy in the code that you need from our sample projects. Ranger® - The universal check scanner interface Copyright © 2023 Silver Bullet Technology www.sbullet.com
Why doesn’t Ranger Flex recognize my device feature?
Ranger Flex determines which generic options to display based on the TransportInfo.ini values. Ranger creates the TransportInfo.ini file based on the device features described in the XML layout setup in your plug-in's GetDeviceConfiguration() ...
How is the TransportInfo.ini file used?
Things you should know about the TransportInfo.ini file: Applications use the TransportInfo.ini file to query the capabilities of your check scanner. Ranger creates this file from the information in the XML structure that you create in your plug-in's ...
Which plug-in methods should have a call to AFX_MANAGE_STATE MFC state macro
This call ensures that the MFC state is correct. In order to guaruntee interoperabilty between plug-in versions and ranger versions AFX_MANAGE_STATE(AfxGetStaticModuleState()) should be called as the first call in any method called by Ranger. This ...