
- Most Ranger-based applications support manual-drop feeding.
- Applications
typically implement manual-drop feeding in a generic way which supports
both manual-drop feeding items normally and after an exception.
- Due
to the way manual-drop feeding is implemented, applications do not need
to provide special exception handling. They usually ignore the Ranger
exception-related events.
Here's a high-level description
of how most Ranger-based applications implement feeding on scanners
that support manual-drop feeding:
- Whenever
Ranger enters the ReadyToFeed state and the operator is allowed to feed
items, the application tells Ranger to feed continuously from the
manual-drop. This technique allows the operator to feed items from the
manual-drop after an exception and any time they are not hopper feeding.
If the operation requests that feeding start from the hopper, the application:
- Sets a "hopper feeding requested" flag
- Tells Ranger to stop feeding from the manual-drop
- When
Ranger enters the ReadyToFeedState the application checks the "hopper
feeding requested" flag. If it is set, then the application tells
Ranger to start feeding from the hopper.
If the application need to change parameters, the application:
- Sets a "change options requested" flag
- Tells Ranger to stop feeding from the manual-drop
- When
Ranger enters the ReadyToFeedState the application checks the "change
options requested" flag. If it is set, then the application tells
Ranger to go to the ChangeOptions state.
So there are three cases to test for when Ranger enters the ReadyToFeedState:
- If the "change options requested" flag is set, then tell Ranger to go to the ChangeOptions state.
- If the "hopper feeding requested" flag is set, then tell Ranger to start feeding from the hopper.
- Otherwise, tell Ranger to feed items continuously from the manual-drop.
You may want to also wish to add a case to handle when the operator requests that you exit the scanning/the application.
If
you use this technique, it should allow you to avoid any
scanner-specific Ranger code, and implement code that will support
manual-drop feeding on all scanners that support a manual-drop feeding
mode. This includes most scanners, both large and small.