Computers are commonly attached to peripheral devices. These peripheral devices can include, for example, storage devices, video capture devices, cd-writers, scanners, and printers. Peripheral devices are typically configured to connect to computers through communication ports, such as USB ports or serial ports. In order for a computer to utilize a peripheral device that is connected to a communication port of the computer, a device driver must be loaded or installed on the computer. A device driver is software that contains instructions that allow the computer to communicate with and control the peripheral device. Generally each distinct model of a peripheral device requires a distinct device driver.
In networked computing environments, it is sometimes useful to make a single peripheral device available to multiple networked computers. For example, it may be useful to make a particular printer available to each computer on a network. By so doing, the printer can be accessed by multiple network users and the resources of the printer can be shared between the users.
In order to make a peripheral device accessible to multiple networked computers, an intermediate connecting device can be employed. For example, a peripheral device can be physically connected to a communication port of the intermediate connecting device, and the intermediate connecting device can in turn be connected to the network. Each networked computer can then connect to the peripheral device through the intermediate connecting device. Each networked computer will designate the peripheral device to which it wishes to connect using a network communication channel (“NCC”) corresponding to the communication port to which the peripheral device is physically connected. The correct device driver for a peripheral device can be loaded or installed on each network computer in order for each computer to communicate with and control the peripheral device. The driver is generally tied to the NCC of the communication port to which the peripheral device is connected.
While employing an intermediate connecting device can enable multiple networked computers to access a single peripheral device across a network, problems can arise as peripheral devices are disconnected and reconnected to different communication ports of the intermediate connecting device. This is because generally there is no explicit notification to the networked computer when a peripheral device is disconnected or reconnected. After the device driver for a particular peripheral device is loaded or installed on a networked computer, the networked computer will continually attempt to communicate with and control the peripheral device through the NCC of the communication port to which the peripheral device was initially connected. If the peripheral device is disconnected from the original communication port and reconnected to a different communication port of the intermediate connecting device, however, the networked computer's attempts to communicate with and control the peripheral device will fail. In addition, if a second peripheral device is connected to the original communication port of the intermediate connecting device, a driver mismatch may occur if the device driver of the first peripheral device is not compatible with the second peripheral device.
The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is only provided to illustrate one exemplary technology area where some embodiments described herein may be practiced.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Embodiments of the present invention may include systems and methods for tracking devices that are connected to communication ports of a network device server. Current embodiments facilitate communication between a networked computer and a peripheral device even where the peripheral device has been physically disconnected from a first communication port and physically reconnected to a second communication port. Current embodiments also facilitate the sending of a message to the networked computer indicating when a disconnected peripheral device is not currently available for communication. For example, in one embodiment, a method includes detecting the connection of a device to a communication port of a device server; determining whether the device has been assigned a NCC; if the device has not been assigned a NCC, assigning an unassigned NCC to the device; and mapping the device's assigned NCC to the communication port.
Additional features and advantages will be set forth in the description which follows, and in part will be obvious from the description, or may be learned by the practice of the teachings herein. Features and advantages of the invention may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. Features of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter.
In order to describe the manner in which the above-recited and other advantages and features can be obtained, a more particular description of the subject matter briefly described above will be rendered by reference to specific embodiments which are disclosed in the appended drawings. Understanding that these drawings depict only typical embodiments and are not therefore to be considered to be limiting in scope, embodiments will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
As noted above, example embodiments of the invention relate to systems and methods for tracking devices that are connected to communication ports of a network device server. As used herein, the terms “network device server” or “device server” refer to an intermediate computing device positioned between a computer network and one or more peripheral devices. A network device server also has at least one physical communication port with which a peripheral device can be physically connected. Although example embodiments disclosed herein focus mainly on network device servers having multiple communication ports, many of the example methods disclosed herein work equally well with a network device server having a single communication port. For example, a “network device server” can be a plug in card having a single physical communication port configured to physically connect with a peripheral device and also having a wireless network transceiver that is used to facilitate communication between the peripheral device and other computing devices in communication with the wireless network.
The example methods disclosed herein can be implemented in a network device server that is in communication with a computer network. With reference now to
The print server 102 includes three physical communication ports 104a-104c, although printer server 102 could include as few as one or more than three physical communication ports. Each of the physical communications ports 104a-104c is configured to facilitate a physical connection between the print server 102 and a peripheral device. Each of the physical communications ports 104a-104c can be, for example, a USB 2.0 Full Speed port or a serial port cable of receiving a USB cable or a serial cable, respectively, of a peripheral device. Other types of ports corresponding to any number of data communication standards are also possible for the physical communications ports 104a-104c.
The system 100 also includes multiple network peripheral devices 106a-106c. As disclosed in
Generally, the network print server 102 can be located in a local area network (LAN) that is configured to transmit and receive commands between peripheral devices and computing devices. For example, in one embodiment, the print server 102 may be implemented in a home environment to transmit and receive commands between peripheral devices and computing devices of home users. The connections between the print server 102 and other computing devices in the network may be any suitable network connection including hardwired Ethernet connections, wireless WiFi connections, 802.11b/g including Turbo Mode, or any other suitable connection. As disclosed in
Data, such as print jobs and scan jobs, can be wirelessly communicated between the computers 110a-110c and one or more WiFi-enabled base stations, such as a wireless router 112. The print jobs and scan jobs can then be wirelessly communicated between the wireless router 112 and the print server 102. The print jobs and scan jobs can then be communicated between the print server 102 and the peripheral devices 106a-106c through the physical communication ports 104a-104c and the physical connections 108a-108c, respectively. Thus, the print server 102 can facilitate communication between the networked computers 110-110c and the peripheral devices 106a-106c without the necessity of a direct physical connection between each of the networked computers 110a-110c and each of the peripheral devices 106a-106c.
In order to communicate with a peripheral device, a networked computer must load or install a driver that corresponds to the peripheral device. A device driver is software that contains instructions that allow a computer to communicate with and control a peripheral device. Generally each distinct model of a peripheral device requires the loading or installation of a distinct device driver. Generally, after a peripheral device driver is loaded or installed on a computer, the computer will thereafter attempt to communicate with the peripheral device at a given network communication channel (“NCC”). The NCC can be any type of communication addressing scheme, for example, a raw TCP port address. The term ‘raw TCP port address’ as used herein is defined as a TCP port address that has no other protocol built on that port address. In one alternative embodiment, a non-raw TCP port address could be utilized.
Turning now to
The print server 102 can use the assigned NCC table 120 to assign a NCC to an IK of one of the peripheral devices 106a-106c. An IK can be any data that uniquely identifies one peripheral device over another. In one alternative embodiment, an IK can be any data that uniquely identifies a particular model of a peripheral device. In a second alternative embodiment, an IK can be any data that uniquely identifies all peripheral devices that are compatible with a particular device driver. For example, an IK can be a serial number, or a combination of a serial number and a model number, of a peripheral device. The print server 102 can use the current connection mappings table 122 to map one of the physical communication ports 104a-104c to an NCC assigned to one of the peripheral devices 106a-106c. The print server 102 can use the unassigned NCC table 124 to maintain a list of all available NCCs that are not currently assigned to one of the peripheral devices 106a-106c. The available NCCs can be, for example, raw TCP port addresses. In one embodiment, the initial pool of unassigned raw TCP port addresses may include only addresses “9100” to ”.“9199”. In other embodiments, the initial pool of unassigned raw TCP port addresses may includes a greater or lesser number of raw TCP port addresses. The tables 120-124, therefore, enable the print server 102 to maintain and store a device connection history in non-volatile memory to enable the tracking of peripheral devices.
With continued reference to
For example, the method 200 can be implemented in the print server 102 of
In the disclosure of the method 200 below, various examples of each of the acts of the method 200 will be given. It is assumed for the purpose of these examples that one or more processors of the print server 102 of
With particular reference now to the disclosure of
Method 200 also includes an act 204 for determining whether the device has been assigned an NCC. The NCC can be any type of communication addressing scheme, for example, a raw TCP port address. A device server can determine whether the printer 106a has been assigned an NCC by querying a table of IKs of devices that have been assigned NCCs. The table may include the NCC that was assigned to each device at the time that each device was first connected to the device server. If the IK of the device and corresponding assigned NCC is found in the table, the device server can conclude that the device has been assigned a NCC. If, on the other hand, the IK of the device and corresponding assigned NCC is not found in the table, the device server can conclude that the device has not been assigned an NCC.
For example, the print server 102 can query the assigned NCCs table 120 in order to determine whether the printer 106a has been assigned an NCC. If the assigned NCCs table 120 contains a record with the serial number of the printer 106a, then the print server 102 determines that the printer 106a has been assigned an NCC. If, on the other hand, the assigned NCCs table 120 does not include a record having the serial number of the printer 106a, then the print server 102 determines that the printer 106a has not been assigned an NCC.
If the device has not been assigned an NCC, the method 200 proceeds to an act 206 of assigning an unassigned NCC to the device. For example, the network device server 102 can assign the printer 106a an unassigned NCC. This can be accomplished by retrieving and deleting an unassigned NCC from the unassigned NCC table 124 and adding a record containing the serial number of the printer 106a and the retrieved unassigned NCC to the assigned NCCs table 120.
After assigning an unassigned NCC to the device at act 206, or if the device had already been assigned an NCC, the method 200 proceeds to an act 208 of mapping the device's assigned NCC to the physical communication port. For example, the network device server 102 can map the NCC assigned to the printer 106a to the USB port 104a. This mapping can be accomplished by inserting a record into the current connection mappings table 122 containing the physical port number of the USB port 104a and the NCC assigned to the printer 106a
After method 200 arrives at a point 210, one of at least three possible acts can occur. The first possibility, as disclosed in
The method 200 next proceeds to an act 214 of sending the requested driver installation information to the networked computer. For example, the print server 102 can send the make and model of the printer 106a, as well as the assigned NCC “9100”, to the PC 110a, which enables the PC 110a to install a driver for the printer 106a associated with the NCC, TCP raw port address “9100”. This driver installation will enable the PC 110a to control and communicate with the printer 106a. It is important to note in this context that the acts 202-208 must be performed prior to the acts 212 and 214 in order for the NCC of the device to be assigned and remembered prior to the installation of the device driver on a networked computer.
The second possible act that can occur after arriving at point 210, as disclosed in
The method 200 next proceeds to an act 218 of facilitating communication between the networked computer and the device through the physical communication port. For example, given the request to communicate through the NCC “9100”, the print server 102 can query the current mappings table 122 in order to determine that physical port number “1” is currently mapped to the NCC “9100”. The network device server 102 can then facilitate communication between the PC 110a and the printer 106a through the USB port 104a.
The third possible act that can occur after arriving at point 210, as disclosed in
The method 200 then proceeds to an act 222 of unmapping the device's assigned NCC from the physical communication port. For example, the print server 102 can unmap the NCC “9100” that has assigned to the printer 106a from the USB port 104a. This can be accomplished by simply removing the corresponding entry from the current connection mappings table 122.
After the method 200 arrives at the point 224, one of at least four possible acts can occur. The first possibility, disclosed in
The method 200 then proceeds to an act 228 of sending a message to the networked computer indicating that the device is not currently available. For example, the print server 102 can send an error message to the laptop PC 110b indicating that the printer 106a has been disconnected and is not currently available to handle a print job.
The second possible act that can occur after arriving at point 224, as disclosed in
The method 200 next proceeds to an act 232 of mapping the device's assigned NCC to the second physical communication port. For example, the print server 102 can map the NCC “9100” assigned to the printer 106a to the USB port 104b. This mapping can be accomplished by querying the assigned NCCs table 120 to determine the NCC assigned to the printer 106a, and inserting a record into the current communication mappings table 122 that maps the NCC “9100” to physical port number “2” corresponding to the USB port 104b.
The method 200 next includes an act 234 of receiving a request from a networked computer to communicate through the assigned NCC. For example, the print server 102 can receive a request from the PC 110c to send a print job to the printer 106a through the NCC “9100”. The print server 102 can then query the current connection mappings table 122 to determine that the NCC “9100”, is currently mapped to physical port number “2” corresponding to the USB port 104b.
The method 200 then includes an act 236 of facilitating communication between the networked computer and the device through the second physical communication port of the device server. For example, the print server 102 can send the print job that it received from the laptop PC 110b to the printer 106a through the USB port 104b. Act 236 results in seamless communication between the computers 110a-110c and the printer 106a despite the disconnection of the printer 106a from the first USB port 104a and the reconnection of the printer 106a to the second USB port 104b.
The third possible act that can occur after arriving at point 224, as disclosed in
Method 200 next includes acts 246 and 248, which are substantially similar to the acts 226 and 228. The act 248 results in a notification to the networked computer indicating that the printer 106a that was previously connected to USB port 104a is not currently available. This result is accomplished despite the current connection of the scanner 106c to the USB port 104a. Method 200 is therefore capable of avoiding a device driver mismatch by tracking of which peripheral devices are connected to which physical communication ports at any given moment.
The fourth possible act that can occur after arriving at point 224, as disclosed in
Method 200 next includes an act 252 of deleting all record of the device from memory. For example, the device server 102 can delete the record in the assigned NCCs table 120 containing the serial number 98892.
Method 200 next includes an act 254 of reallocating the device's assigned NCC as an unassigned NCC. For example, the device server 102 can delete the record in the current connection mappings table 122 containing the NCC “9100”, and insert the NCC “9100” into the unassigned NCC table 124. Acts 250-254 result in the freeing up of unused NCCs. This can be advantageous in a situation where a large number of peripheral devices are being tracked by the device server 102 but only a limited number of NCCs are available for assignment by the device server 102.
The example method 200 enables a network device server to always maintain a match between device drivers loaded on one or more networked computers and a device, whether or not the device is connected, disconnected, or reconnected to a different physical communication port on the network device server. The example method 400 prevents a networked computer from communicating with peripheral devices using mismatched device drivers. The method 200 dynamically reassigns NCCs to physical communication ports as necessary as peripheral devices are connected, disconnected, and reconnected to a network device server. The example method 400 therefore simplifies the software management on networked computers that are configured to access the device over the network through the network device server.
The example method 200 of
Computer-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.