Device management using virtual interfaces

Management of data communication between a peripheral device and host computer system is provided. A physical interface for communicating data between a peripheral device and applications executing on the host is opened and controlled by a software module. First and second virtual interfaces of the software module are exposed to an operating system of the host, and the operating system exposes the first and second virtual interfaces to a first application and a second application executing on the host. The first virtual interface is used for communicating data between the peripheral device and the first application through the physical interface, and the second virtual interface is used for communicating data between the peripheral device and the second application through the physical interface. Management of data communication between the peripheral device and the first application and between the peripheral device and the second application is thereby provided.

FIELD OF THE INVENTION

The invention relates to data communication and more particularly to management of data communication between a host computer system and a peripheral device in communication with the host computer system.

BACKGROUND OF THE INVENTION

Many types of peripheral devices connect to a host computer system on which one or more applications execute. Those who manage deployment of peripheral devices, for instance a business entity that owns point-of-sale systems comprising host computer systems attached to barcode scanning peripheral devices, routinely face the need to manage their deployed peripheral devices. Peripheral devices connect to host computer system using a variety of wired and/or wireless communication interfaces. Some interface types, for instance those of the RS232 interface standard, have a limitation where only one RS232 interface can be exposed over the physical cable connection between the peripheral device and the host computer. This single interface is commonly owned by a Line of Business application on the host computer, which, in the example involving a barcode scanner peripheral device, typically performs data collection from the scanner. A problem arises when another utility or application on the host computer desires to manage the scanner over the existing interface. Such managing becomes challenging absent interference with normal scanner operation and performance expected by the Line of Business application. For instance, the Line of Business application would release the interface, freeing the interface so that another application, such as a management application, can assume exclusive use of the interface to communicate with the scanner, which can be impractical, problematic, and inefficient.

SUMMARY OF THE INVENTION

The shortcomings of the prior art are overcome and additional advantages are provided through a method of managing data communication, which method includes, for instance, opening and controlling, by a processor, a physical interface of a host computer system, the physical interface for communicating data between a peripheral device and a plurality of applications executing on the host computer system, the plurality of applications comprising a first application and a second application; exposing, in the host computer system, a first virtual interface and a second virtual interface to an operating system of the host computer system, wherein the operating system exposes the first virtual interface and the second virtual interface to the first application and the second application, the first virtual interface for communicating data between the peripheral device and the first application through the physical interface, and the second virtual interface for communicating data between the peripheral device and the second application through the physical interface; and managing data communication between the peripheral device and the first application, and between the peripheral device and the second application.

Additional features and advantages are realized through the concepts of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1depicts one example of a host computer system in communication with a peripheral device, in accordance with one or more aspects of the present invention. InFIG. 1, peripheral device100communicates with host computer system110across communications link108. Communications link108can be any appropriate wired or wireless communication channel that supports analog or digital communication of data between peripheral device100and host110. A non-limiting list of example communication links includes RS232 (such as a serial connection operating according to the RS232 standard), Universal Serial Bus, Wi-Fi™, and Bluetooth™ connections. In an embodiment where communications link108comprises a Universal Serial Bus communications link, peripheral device100can present itself to host computer system110as a Universal Serial Bus Serial device or a Universal Serial Bus Human Interface Device Barcode scanner.

By way of specific example, peripheral device100is an encoded information reading terminal comprising a processor102and one or more encoded information reading device104. Encoded information reading device104can be provided, e.g. by a bar code reading device, an RFID reading device, and a card reading device. Encoded information reading device104can be operative to output one or more of a decoded message decoded from raw signal or a raw signal comprising an encoded message. Shown in the block view as being provided by a separate unit external to processor102processing functionality of encoded information device104can be provided by processor102. In operation of peripheral device100, image signals can be read out of encoded information reading device104and stored into a volatile or non-volatile memory (not pictured), such as random access memory, read only memory, or any other type of storage memory. Processor102can be adapted to perform various algorithms including reading out image data stored in memory and/or algorithms supporting communication of data across communications link108via one or more I/O component(s)106.

Host110similarly includes I/O component(s)112. I/O components include one or more physical interfaces for communicating data to/from peripheral device100. These interfaces comprise one or more hardware components. In the example of an RS232 communications link, a supporting physical interface comprises a hardware serial port, as an example.

Host110also includes processor114and memory116. Memory116can include one or more volatile or non-volatile memories of one or more types, such as random access memory, read only memory, or any other type of storage memory, such as a hard disk drive. Further details of host110are described with reference toFIG. 2.

FIG. 2depicts further details of a host computer system in accordance with one or more aspects of the present invention. InFIG. 2, host210includes physical interface212, processor214, and memory216. As is understood by those having ordinary skill in the art, a processor can be configured to execute instructions of a program. Common such programs are an operating system and applications which run on the operating system. InFIG. 2, processor214executes operating system218and applications220aand220b. Application220acomprises a line of business application. A line of business (LOB), in general, is a group of one or more related applications or modules which service a business need. In the context of host-peripheral device communication, a line of business application may be responsible for sending data to and/or receiving data from a peripheral device. In the specific example of a barcode scanner, the line of business application can execute on the host machine and accept from the peripheral device decoded data which is read-out from an encoded image (such as a barcode) using the peripheral device.

Application220binFIG. 2comprises a management application. Management application220bsupports device management of a peripheral device, such as peripheral device100ofFIG. 1. Examples of device management include performance of a firmware upgrade of the firmware of the peripheral device, and performance of a reconfiguration of the peripheral device, such as a reconfiguration to adjust one or more operating parameters of the peripheral device.

Aspects of the current invention define a software module for a host computer. The software module opens and owns a physical interface, such as an RS232 I/O port, to which a peripheral device is attached. It also exposes multiple virtual interfaces, such as virtual RS232 interfaces, to the operating system of the host.

The software module can manage data communication between the peripheral device and one or more applications executing on the host computer system by properly routing data coming from the peripheral device to the one or more applications of the host, or data going from the one or more applications of the host to the peripheral device. This facilitates communication between a line of business application and the peripheral device without the line of business application being aware that the physical interface is being shared with other applications, such as a management tool, behind the scenes.

Filtering program code230ofFIG. 2is an example software module. Filtering program code230opens and controls physical interface212, which is a physical interface through which host210communicates with a peripheral device, such as a barcode scanner. Filtering program code230exposes a first virtual interface232aand a second virtual interface232bto operating system218. While filter program code230exposes two virtual interfaces in the example ofFIG. 2, it should be understood that filtering program code230could expose any desirable number of virtual interfaces depending on the particular scenario, for instance the number of applications on the host that will communicate with the peripheral device. By exposing virtual interfaces232a,232bto operating system218, operating system218can then make these interfaces available to applications executing on operating system218. This allows each application to be configured to use a respective one of the virtual interfaces232a,232bto send and receive data communication. InFIG. 2, operating system218exposes virtual interfaces232a,232bto line of business application220aand management application220b. Then, line of business application220acan be configured (for instance, manually by a user or automatically) to use virtual interface232afor communicating data between the peripheral device and line of business application220a, while management application220bcan be configured (for instance, manually by a user or automatically) to use virtual interface232bfor communicating data between the peripheral device and management application220b.

Filter program code230effectively allows performing device management by management application220bin parallel with a data collection processes whereby data is communicated to a separate line of business application (e.g.220a), without affecting the performance or expected operation for a user and line of business application220a. In a further enhancement, filter program code230can also support configuration requests to change its behavior (timeouts, filtering logic described below). In this manner, the code can be reconfigured to, for instance, make the filtering logic be based on a different pattern(s), or change a maximum timeout for the code to remain in a transaction mode giving the management application exclusive access to the device. An example of such a configuration request is a Windows Input/Output Control (IOCTL) call/request, when filter program code230comprises a Microsoft® Windows® based driver.

In one example, filter program code230comprises a device driver, such as a filter driver for the Windows® operating system offered by Microsoft Corporation. The software can be a driver such as a “driver service” which is a kernel-level filter driver implemented as a Windows® service.

The driver installation can be made non-intrusive with no dialog prompts and no security warnings for the user. The actual driver can internally be comprised of multiple drivers, depending on the operating system requirements. The driver can be written as a kernel-level driver for a kernel of operating system218, whereby the driver exposes the two or more (depending on the number of applications to support) virtual interfaces in the operating system. Additionally, an installation tool can allow a user to preselect what the desired virtual interface (port) numbers should be.

Continuing withFIG. 2, filter program code230can use one or more filter logic rules234defining filtering rules for filtering data received from a peripheral device to an appropriate application to which the data directed. Filter logic rules234are depicted as being optionally hard-coded into filter program code230, or in a separate module in memory216external to filter program code230. In the later example, filter logic rules234can comprise one or more scripts in a text file stored in memory216. By maintaining externally loaded filter logic rules, external to filter program code230, the rules can be easily updated without having to recompile the filter program code. This is especially useful in the case where filter program code comprises a driver, because of the security, stability, and compatibility sensitivities involved in modifying device drivers of an operating system. Alternatively or additionally, filter logic rules234can be maintained within filtering program code230, if so desired.

Filter logic rules can be in any format recognizable to the software module (e.g. filter program code) to enable it to properly filter data communications to the appropriate destination. In this respect, the rules can describe one or more of:The format of the incoming data from the peripheral device, and more particularly the format of data intended for particular application(s) (for instance data intended for only the line of business application, for only the management application, or for both the line or business application and the management application) so that the software module can recognize and route/filter this incoming data to the proper application(s)How to handle custom events/procedures, such as (i) the shielding of the virtual interface used by the line of business application from a peripheral device reboot event, such as a reboot event triggered by the management application, and/or (ii) the freezing of some or all data communication from/to the virtual interface used by the line of business application while the management application performs a reconfiguration or firmware upgrade of the peripheral device (i.e.: freeze timeout for a “transaction mode”). In this regard, when the management application communicates with the peripheral device, this may cause the line of business application to detect configuration changes or events, and this may be undesirable. To prevent this, in the former scenario (shielding), the software module can “shield” the line of business application from a peripheral device reboot event so that the application's connection handle, which is owned by the line of business application and represents the communication path to the virtual interface exposed to the line of business application by the software module, is preserved. This effectively prevents, by the software module, the reboot event (in the form of data communication received from the peripheral device to the host) from permeating through to the line of business application. In the later scenario (freezing for transaction mode), data received from/to the virtual interface used by the line of business application while that interface is frozen may be queued until the freeze timeout expires. The idea is that if the management application requests operation in a transaction mode, it will have exclusive access to the device, until it has completed the tasks it needs. It can be seen as an atomic operation, where the management application temporarily overtakes the peripheral device from the line of business application to perform some task(s). When done, access to the device is restored to the line of business application, all while keeping the line of business application unaware of the interruption.How to handle simultaneous virtual interface requests, such as simultaneous requests to the virtual interfaces made by the line of business application and the management application. The filter logic rules can indicate which virtual interface receives data communication routing preference and how that preference is carried out by the software module so as to not affect performance of the line of business application.

As noted, filter logic rules are employed in facilitating management of data communication.FIG. 3depicts one example of a process for managing data communication, in accordance with one or more aspects of the present invention. In one example, this process is performed by way of a software module executing on a processor, such as a processor of a host computer system. The process begins by the software module opening the host physical interface (302). In one example, software module comprises a driver that opens and ‘owns’ the physical interface. Next, multiple virtual interfaces are exposed to the host operating system (304). As described above, some physical interfaces, such as RS232 interface supports only one interface to be exposed over the physical connection (cable) between the host computer and the peripheral device. The multiple virtual interfaces become the interfaces through which multiple applications may communicate across the (single) physical interface with a peripheral device connected to the host computer system. After the host applications are configured to use the appropriate virtual interface (described below), management of data communication between the peripheral device and host applications (306) is enabled, and the process ends.

Management of data communication between a peripheral device and host applications is described and depicted in further detail with reference toFIG. 4, depicting an example process thereof, in accordance with one or more aspects of the present invention. The process begins with the identification of one or more appropriate applications to which received data is to be communicated (402). In one example, this is initiated responsive to receipt by the software module of data from the peripheral device. In one example, the identification is facilitated by examining the data, such as a packet header of a data packet, to determine (based on the filter logic rules) one or more appropriate applications to which the data is to be filtered/routed. It should be noted that it may be desirable to provide some data (e.g. barcode data, image data, device operation statistics) to more than one application. Next, the process identifies one or more appropriate virtual interfaces through which the received data is to be provided (404). In accordance with an aspect of the present invention, each virtual interface will exist to service data communication with a different type of application, and each application to which the peripheral device sends data will be configured to use the virtual interface of the multiple exposed virtual interfaces which is dedicated exclusively to servicing data communication with that type application. The software module can be aware of which virtual interface services which type of application of the multiple applications. Thus, in the example in which a line of business application and a management application execute on a host computer system, a first virtual interface of the virtual interfaces will be dedicated to the line of business application, and a second virtual interface of the virtual interfaces will be dedicated to the management application. Identification of the one or more appropriate virtual interfaces through which the data is to be provided to the appropriate applications (404) is based on the identified application(s) that are to receive the data communication—for instance, if the examination of the data and comparison to the filter logic rules indicates that the data is to be provided only to the line of business application, then the appropriate virtual interface (i.e. that dedicated to the line of business application) is identified. Following this, the data is provided to the appropriate application(s) through the appropriate interface(s) (406).

In conjunction with the logic of the software module, the peripheral device identifies the type of data that it is sending to the host. In one example, data is ‘wrapped’ in one or more packets having a format recognizable by the software module. This format can be the format described in one or more filter logic rules on the host computer, to facilitate identification by the host of the proper application executing thereon to which the data is to be provided. For instance, the peripheral device can identify that data being sent to the host is data intended for the line of business application. Identification of the type of data wrapped in a packet and/or the application to which the data is intended can be provided through one or more indicators (e.g. bits) in the data packet, and, in one example, in a header of the data packet. In the context ofFIG. 2, such identification enables the peripheral device to send unsolicited notifications, such as decoding statistics and diagnostics events, to a management application, which unsolicited notifications are not intended for the line of business application.

Advantageously, aspects of the present invention can enable the management of data communications as described above without the need to modify and/or recompile the applications executing on the host. Instead, the applications need only be configured to use the appropriate virtual interface dedicated to data communication for that particular application, rather than to use the physical interface. In many instances, the appropriate interface for the application to use is provided by a single configuration setting in the application which enables the selection of an interface from a list of interfaces presented by the operating system to the application. The single configuration setting would be simply to point the application to the appropriate virtual interface rather than the physical interface.

Aspects of the present invention can be applied to any type of interface used by a peripheral device. The software module in the host can simply virtualize the original physical interface and expose two (or more) new virtual interfaces as described above. Thus, aspects of the present invention are applicable for Universal Serial Bus physical interfaces, as well as many other physical interfaces as will be appreciated by those having ordinary skill in the art.

Referring now toFIG. 5, in one example, a computer program product500includes, for instance, one or more computer readable media502to store computer readable program code means or logic504thereon to provide and facilitate one or more aspects of the present invention.

A small sample of methods that are described herein is as follows:A1. A method of managing data communication, the method comprising: opening and controlling, by a processor, a physical interface of a host computer system, the physical interface for communicating data between a peripheral device and a plurality of applications executing on the host computer system, the plurality of applications comprising a first application and a second application; exposing, in the host computer system, a first virtual interface and a second virtual interface to an operating system of the host computer system, wherein the operating system exposes the first virtual interface and the second virtual interface to the first application and the second application, the first virtual interface for communicating data between the peripheral device and the first application through the physical interface, and the second virtual interface for communicating data between the peripheral device and the second application through the physical interface; and managing data communication between the peripheral device and the first application, and between the peripheral device and the second application.A2. The method of A1, wherein the peripheral device comprises an encoded information reading terminal comprising an encoded information reading device configured to output a decoded message, wherein the first application comprises a line of business application for receiving the decoded message from the encoded information reading terminal, and wherein the second application comprises a management application for managing the encoded information reading terminal.A3. The method of A1, wherein the managing data communication between the peripheral device and the first application and between the peripheral device and the second application comprises filtering data received from the peripheral device through the physical interface to the first application and the second application, the filtering comprising: identifying one or more appropriate applications of the first application and the second application to which the received data is to be provided; identifying one or more appropriate virtual interfaces of the first virtual interface and the second virtual interface through which the received data is to be provided; and providing the received data through the appropriate one or more virtual interfaces to the appropriate one or more applications, wherein received data is provided to the first application through the first virtual interface and wherein received data is provided to the second application through the second virtual interface.A4. The method of A3, wherein one or more filter logic rules define one or more rules for filtering received data to one or more appropriate applications of the first application and the second application.A5. The method of A4, wherein the one or more filter logic rules describe a format of incoming data from the peripheral device to distinguish between data intended for different applications of the first application and the second application.A6. The method of A5, wherein the received data is provided by the peripheral device through the physical interface in the described format to facilitate identifying the one or more appropriate applications to which the received data is to be provided, and wherein the identifying identifies the one or more appropriate applications based on the description of the format provided by the one or more filter logic rules.A7. The method of A4, wherein the first application comprises a line of business application, wherein the second application comprises a management application, wherein a filter logic rule of the one or more filter logic rules defines how a peripheral device reboot event is to be handled to shield the line of business application from the reboot event in order to facilitate preservation of a connection handle of the line of business application to the peripheral device, and wherein another filter logic rule of the one or more filter logic rules identifies how to freeze data communication to or from the line of business application during performance of peripheral device management by the management application.A8. The method of A4, wherein the received data comprises simultaneous requests for the first application and for the second application, and wherein at least one filter logic rule of the one or more filter logic rules identifies how the host computer system is to handle the simultaneous requests.A9. The method of A3, wherein the filtering is performed by a filter driver of the operating system, and wherein one or more filter logic rules are maintained in a filter logic rules file external to the filter driver to facilitate updating the filter logic rules separately from the filter driver absent a need to recompile the filter driver upon updating the filter logic rules.A10. The method of A9, wherein the filter driver supports configuration requests to change behavior of the filter driver in performing the filtering.A11. The method of A9, wherein the filter driver comprises a kernel-level driver of a kernel of the operating system, the kernel-level driver for exposing the first virtual interface and the second virtual interface to the operations system.A12. The method of A1, wherein a driver of the operating system opens and owns the physical interface and exposes the first virtual interface and the second virtual interface to the operating system, and wherein the first application is configured to utilize the first virtual interface for data communication with the peripheral device, and wherein the second application is configured to utilize the second virtual interface for data communication with the peripheral device.A13. The method of A1, wherein the physical interface comprises an RS232 interface supporting only a single interface connection between the RS232 interface and the peripheral device.A14. The method of A1, wherein the peripheral device comprises an encoded information reading device configured to output a decoded message, wherein data communicated between the peripheral device and the host computer system comprises the decoded message and wherein the decoded message is communicated to a line of business application of the multiple applications executing on the host computer system.

While the present invention has been described with reference to a number of specific embodiments, it will be understood that the true spirit and scope of the invention should be determined only with respect to claims that can be supported by the present specification. Further, while in numerous cases herein wherein systems and apparatuses and methods are described as having a certain number of elements it will be understood that such systems, apparatuses and methods can be practiced with fewer than or greater than the mentioned certain number of elements. Also, while a number of particular embodiments have been described, it will be understood that features and aspects that have been described with reference to each particular embodiment can be used with each remaining particularly described embodiment.