I have software I'm working on in which a user has to scan a full pallet's-worth of various items of hardware for inventory-taking purposes (think of a wooden pallet in a warehouse laden with stacks of computer towers of various form factors, for example, with 50 towers per pallet) using a (possibly wireless) hand-held barcode scanner, a barcode sticker represents the unique instance of the item on which the sticker was placed.

The idea is that the person, using a barcode scanner connected to a laptop with my software open, can scan each item on the pallet at their own rhythm without having to move the laptop (which would be impractical). This means the user will themselves need to physically move about to accomplish the task and may not be able to see the screen immediately or up-close as they move about, scanning items.

I have (so far) envisioned a notification system which would notify the user via aural cues based on the state of the scanned item as it's safe to assume they aren't looking at the screen when scanning an item. A visual notification of sorts is of course important if they scan an item and can see the screen, however, and that's where I'm having a bit of trouble.

The below mockup is what would be displayed for each notification which would appear for maybe 1-2 seconds before returning to the software's default view of information which is effectively the list of all items in the pallet (read from a csv file generated by the management system), categorized and sorted with summarized tallies of scanned items, by brand and model. This default view however is too dense for viewing from a distance, so I'm having difficulty deciding on:

  • Should I display only one notification at a time, full screen? If so, how should I handle scans of items occurring before notification(s) of the previous item(s) disappear(s), keeping in mind that I'd like for the most recent notification displayed on screen to always be relative to the user's most recent scan such that the information shown is always accurate if all the user does is glance at the screen when they scan an item.
  • Alternatively, I could allow 2, maybe 3 notifications at once on screen (each occupying half or a third of it), so long as everything is still readable at a glance from ~5-7 feet away, but then how do I handle new notifications in this case, if previous ones are still on screen? Shift them up the screen (so they're in newest-oldest/top-bottom order), prematurely removing the oldest notification, or let notifications time out normally and always occupy the "slots" as they're available?
  • Allow the notification window (containing the notifications) to be shown manually/such that the notifications or the window containing them, never disappear(s), so that the notifications can be scrolled through (for example) if the user hears an aural warning sound/notification, but that then would mean a lot of scrolling... Not sure about this one.

The states I'm tracking are of the scans themselves, of items as follows:
- Okay (the item exists in the list and has been scanned only once).
- Orphan (the item doesn't exist in the list and has been scanned only once).
- Duplicate (the item exists in the list and has been scanned more than once).
- Duplicate orphan (the item doesn't exist in the list and has been scanned more than once).

I can't track a lack of barcode sticker as said sticker is what's needed to track state in this part of the process which is essentially validation of the information provided at the previous step; manual data entry of hardware into the system, as well as attaching barcode stickers. Note that I don't have direct access to the database itself, which is why I have to list "Orphan" for orphaned items instead of displaying the actual pallet to which the scanned item belongs.


download bmml source – Wireframes created with Balsamiq Mockups

Thank you very much, in advance, for your help, and apologies for the length of this post! Feel free to offer advice, alternative mockups or ideas, or comment on my proposed mockup which represents a single scan-notification as well, as I'd like to offer as much information as I can with what little space I have (given that it needs to be visible and understandable at a glance from a distance).


Some implementation details that may impact answers:

The software, as it is, is written in C# using Windows Forms, it wasn't written with tablets in mind (it hadn't occurred to me that you might be able to connect a bluetooth scanner to a tablet, it's certainly a nice idea for a v2 though).

My current design relies on the assumption that I'm using a scanner in keyboard shim mode (the OS sees the scanner as a keyboard), so I can't have the scanner itself provide feedback to the user.

I believe issues on the pallet do require immediate attention as the purpose is to ferret out and correct errors in the physical pallet versus what the system believes the pallet contains (or should contain), as quickly and efficiently as possible. This means that so long as every scanned item is "Okay", the user has no need to look at the screen beyond listening for an "Okay" sound notification, but if the system says the scanned item is an error, then it's important to stop immediately and handle that mistake before continuing on to the next item to avoid having to physically look for the erroneous item(s) again once all items have been checked (the act of having to do multiple passes in a physical search through a pallet for erroneous items is what the software aims to eliminate).

The catch here, is that because the scanner acts as a keyboard, I can't prevent it from scanning items (so it will beep and type in what it scanned, no matter what I do), all I can do is change how I handle scanned items, so I don't think I can freeze the handling of items without violating "something was scanned, therefore the software should react to it somehow". Maybe play the same sound notification as whatever caused the initial error but on all subsequent scans until the initial error is marked as fixed? Not sure. :/

  • I went through the description and As I understood, Having barcode reader 5-7 feet away is the main issue. Is there a way the barcode reading can be done using Mobile/Tablet device, which is making more sense to the user and portability with able to provide more feedback/information to screen, it will be clear and usable?
    – NPN
    Commented May 20, 2019 at 1:52
  • You make a good point, the software right now is written using Windows Forms in C#, I've never tried connecting a barcode scanner to a tablet but I imagine it's doable with a bluetooth one, it could work on a windows surface tablet, probably, yes (though the UI as it is, isn't designed for a tablet).
    – Geoff
    Commented May 20, 2019 at 2:26
  • This is just a thought if you can implement. Yes, I think that will increase both usability and productivity.
    – NPN
    Commented May 20, 2019 at 2:33

1 Answer 1


Some points and options to consider:

  • Users won't see alerts, regardless of "visibility", when the laptop is positioned behind them or pointing away from them.

  • If issues don't need immediate attention, task-interrupting alerts shouldn't be used. Instead, save the messages in a queue for the user to go through later. If immediate attention is required, you can freeze further input until the problem is resolved.

  • Save scanned items in a queue where problems can be addressed or items confirmed before the database is modified. That way, your "hackish" use of barcode scanners will be less likely to corrupt inventory data.

  • Alert users via the barcode scanner itself, perhaps by displaying a message or entering an 'error' state. Many barcode scanners beep. Perhaps the sounds can be controlled? This would prompt the user to go to the laptop to resolve the issue.

  • I've tried using a couple of different barcode SDKs and APIs, such as POS for .Net and the one available for UWP, but the former is quite dated and the latter is already end-of-lifed, so as far as I can tell.
    – Geoff
    Commented May 20, 2019 at 1:29
  • If I want to be able to allow them to swap out scanners as needed (which I do), my best bet is unfortunately to let the scanner function as a keyboard shim which is hackish and will result in messy code, but I at least won't be subjected to the various limitations imposed either by the scanner vendor (eg. using their custom sdk to use only their brand), or using either of the above mentioned SDKs which are, at least in theory, meant to be standardized, so long as everyone actually makes their scanner conform to the standards, and sadly, their lists of known supported devices is very short.
    – Geoff
    Commented May 20, 2019 at 1:32
  • So er, in short, my current design is operating on the assumption that I can't directly control the scanner in the ways you suggest (wish I could, though).
    – Geoff
    Commented May 20, 2019 at 1:35
  • That's a fair edit, heh. ;) I'll wait some to see if anyone else answers, and mark yours as the answer if it's what I go with (which given the reasoning, isn't unlikely).
    – Geoff
    Commented May 20, 2019 at 1:43
  • No need to mark an accepted answer if you don't like any or if you can't choose. You can also write your own answer describing the solution you decide.
    – 習約塔
    Commented May 20, 2019 at 1:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.