BPS C++ API  2.24.4
BpsKeyboardScanner Class Reference

Handles input of scanners that are looped into the keyboard input stream. More...

#include <bpskeyboardscanner.h>

+ Inheritance diagram for BpsKeyboardScanner:

Public Member Functions

 BpsKeyboardScanner (QObject *aParent=nullptr)
 
void setTimeout (int aTimeout)
 Change time out seconds. More...
 
int timeout () const
 
- Public Member Functions inherited from QObject
bool blockSignals (bool block)
 
const QObjectListchildren () const const
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const
 
void deleteLater ()
 
void destroyed (QObject *obj)
 
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
 
bool disconnect (const QObject *receiver, const char *method) const const
 
void dumpObjectInfo ()
 
void dumpObjectInfo () const const
 
void dumpObjectTree ()
 
void dumpObjectTree () const const
 
QList< QByteArraydynamicPropertyNames () const const
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
findChild (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
 
bool inherits (const char *className) const const
 
void installEventFilter (QObject *filterObj)
 
bool isWidgetType () const const
 
bool isWindowType () const const
 
void killTimer (int id)
 
virtual const QMetaObjectmetaObject () const const
 
void moveToThread (QThread *targetThread)
 
QString objectName () const const
 
void objectNameChanged (const QString &objectName)
 
QObjectparent () const const
 
QVariant property (const char *name) const const
 
 Q_CLASSINFO (Name, Value)
 
 Q_DISABLE_COPY (Class)
 
 Q_DISABLE_COPY_MOVE (Class)
 
 Q_DISABLE_MOVE (Class)
 
 Q_EMIT Q_EMIT
 
 Q_ENUM (...)
 
 Q_ENUM_NS (...)
 
 Q_ENUMS (...)
 
 Q_FLAG (...)
 
 Q_FLAG_NS (...)
 
 Q_FLAGS (...)
 
 Q_GADGET Q_GADGET
 
 Q_INTERFACES (...)
 
 Q_INVOKABLE Q_INVOKABLE
 
 Q_NAMESPACE Q_NAMESPACE
 
 Q_NAMESPACE_EXPORT (EXPORT_MACRO)
 
 Q_OBJECT Q_OBJECT
 
 Q_PROPERTY (...)
 
 Q_REVISION Q_REVISION
 
 Q_SET_OBJECT_NAME (Object)
 
 Q_SIGNAL Q_SIGNAL
 
 Q_SIGNALS Q_SIGNALS
 
 Q_SLOT Q_SLOT
 
 Q_SLOTS Q_SLOTS
 
qFindChild (const QObject *obj, const QString &name)
 
QList< T > qFindChildren (const QObject *obj, const QRegExp &regExp)
 
QList< T > qFindChildren (const QObject *obj, const QString &name)
 
 QObject (QObject *parent)
 
qobject_cast (const QObject *object)
 
qobject_cast (QObject *object)
 
 QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
 
void removeEventFilter (QObject *obj)
 
void setObjectName (const QString &name)
 
void setParent (QObject *parent)
 
bool setProperty (const char *name, const QVariant &value)
 
bool signalsBlocked () const const
 
int startTimer (int interval, Qt::TimerType timerType)
 
int startTimer (std::chrono::milliseconds time, Qt::TimerType timerType)
 
QThreadthread () const const
 

Additional Inherited Members

- Static Public Member Functions inherited from QObject
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
 
bool disconnect (const QMetaObject::Connection &connection)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
 
QString tr (const char *sourceText, const char *disambiguation, int n)
 
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
 
- Public Attributes inherited from QObject
typedef QObjectList
 
- Protected Member Functions inherited from QObject
virtual void childEvent (QChildEvent *event)
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void customEvent (QEvent *event)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
bool isSignalConnected (const QMetaMethod &signal) const const
 
int receivers (const char *signal) const const
 
QObjectsender () const const
 
int senderSignalIndex () const const
 
virtual void timerEvent (QTimerEvent *event)
 
- Properties inherited from QObject
 objectName
 

Detailed Description

Handles input of scanners that are looped into the keyboard input stream.

Scanner configuration

The scanner must be programmed to send a record as follows:

  1. A prefix character STX (Ctrl-B)
  2. A code identifier character (see BpsScannerEvent for allowed types)
  3. The scanned data (one or more characters)
  4. A suffix character ETX (Ctrl-C)

The default time out is 5 seconds after receiving a STX. It is recommended to make timeout configurable from the value set in Central System Settings/Scanning/Keyboard in the key Timeout (see example below).

How it works

This handler will process all keystrokes sent to any widget of the application and wait for a STX. Until then, all keystrokes are just forwarded to be processed as normal user input.

As soon as a STX key press is detected, all subsequent key press and release events are collected as scanner input, until either an ETX key press happens, or the time out happens. During this phase the collected characters are filtered (not delivered to the focus widget).

Finally when ETX is received the collected characters between STX and ETX are analyzed. When more than one character was received, the first character is taken as Code Identifier and the rest as data. A event of type BpsScannedEvent is created and sent to the focus widget.

Usage

An object of this type is usually installed as event filter of GUI applications:

int main(int argc, char *argv[])
{
BpsApplication a(argc, argv);
a.setOrganizationName(bStr(BPS_ORGANIZATION_NAME));
a.setOrganizationDomain(bStr(BPS_ORGANIZATION_DOMAIN));
a.setApplicationName(bStr(BPS_APPLICATION_NAME));
a.installEventFilter(&scanner);
// .....
// After login:
settings.open(bStr("Settings/Scanning/Keyboard"));
scanner.setTimeout(settings.value(bStr("Timeout")).toInt());
// .....
#define BPS_ORGANIZATION_DOMAIN
Software creator domain.
Definition: bpsglobals.h:27
#define BPS_ORGANIZATION_NAME
Software creator name.
Definition: bpsglobals.h:22
#define bStr(aStr)
Encapsulation for string literals.
Definition: bpsglobals.h:125
#define BPS_APPLICATION_NAME
Software name.
Definition: bpsglobals.h:32
This class is a extension of QApplication which contains support for BPS virtual keyboards.
Definition: bpsapplication.h:16
Handles input of scanners that are looped into the keyboard input stream.
Definition: bpskeyboardscanner.h:81
void setTimeout(int aTimeout)
Change time out seconds.
Query and edit settings.
Definition: bpssettings.h:17
@ CentralSystemScope
Central settings for all bps users.
Definition: bpssettings.h:67
void installEventFilter(QObject *filterObj)

This handler will then do the keyboard stream processing for any number of widgets that shall be able to process scanner input.

On every widget that shall process scanner inputs, a BpsScannerFilter object must be created and installed as event filter for dialog elements that can receive keyboard input:

MyWidget::MyWidget(QWidget* aParent) : QWidget(aParent)
{
// .....
foreach (QWidget* w, findChildren<QWidget*>()) w->installEventFilter(sf);
connect(sf, SIGNAL(scanned(char,QString)),
this, SLOT(myScannerInput(char,QString)));
// .....
} // constructor
A event filter catching all scanner events and emitting signals for them.
Definition: bpsscannerfilter.h:46

Constructor & Destructor Documentation

◆ BpsKeyboardScanner()

BpsKeyboardScanner::BpsKeyboardScanner ( QObject aParent = nullptr)
Parameters
aParentThe parent object.

Member Function Documentation

◆ setTimeout()

void BpsKeyboardScanner::setTimeout ( int  aTimeout)

Change time out seconds.

Parameters
aTimeoutThe new time out in seconds, must be greater than 0.

◆ timeout()

int BpsKeyboardScanner::timeout ( ) const
Returns
The current timeout in seconds (default = 5).

The documentation for this class was generated from the following file: