Data transmission device

A data transmission device to transmit a data file to an external device is provided. The data transmission device includes a data file storing unit to store a data file to be transmitted, a communication session establishing unit, which is capable of establishing a plurality of communication sessions between the data transmission device and the external device, a data transmitting unit to transmit data included in the data file and divided in portions concurrently through the plurality of communication sessions to the external device.

CROSS REFERENCE TO RELATED APPLICATION

This application claims priority from Japanese Patent Application No. 2008-039506, filed on Feb. 21, 2008, the entire subject matter of which is incorporated herein by reference.

BACKGROUND

1. Technical Field

Aspects of the present invention relate to a data transmission device, which is capable of transmitting data to an external device.

2. Related Art

Devices capable of transmitting data to external devices through a network have been used. For example, Japanese Patent Provisional Publication No. 2006-60499 discloses a scanner device capable of transmitting data, which is generated based on a scanned image, to another device in a network. As a consequence of development of data transmission devices, techniques to enable fast data transmission have been appreciated.

SUMMARY

A data file including data created by the data transmission device such as the scanner device, representing the images formed on an original document, may be in a large volume, specifically when the original document is in a large volume, and transmission of such data may require longer runtime when the data file is transmitted from the data transmission device to an external device serially through a single communication session. Although a data transmission device, which is capable of establishing a plurality of communication sessions with an external device concurrently, has been known, such a data transmission device transmits a plurality of data files through the plurality of communication sessions, but does not transmit a single data file through the plurality of communication sessions to reduce transmission runtime.

In view of the above drawbacks, the present invention is advantageous in that a data transmission device, which is capable of transmitting a data file to an external device in a shorter runtime, is provided.

According to an aspect of the invention, a data transmission device to transmit a data file to an external device is provided. The data transmission device includes a data file storing unit to store a data file to be transmitted, a communication session establishing unit, which is capable of establishing a plurality of communication sessions between the data transmission device and the external device, a data transmitting unit to transmit data included in the data file and divided in portions concurrently through the plurality of communication sessions to the external device.

According to another aspect of the invention, a computer usable medium including computer readable instructions to control a computer to transmit a data file to an external device is provided. The computer is controlled to execute steps of storing a data file to be transmitted, establishing a plurality of communication sessions between the data transmission device and the external device, and transmitting data included in the data file and divided in portions concurrently through the plurality of communication sessions to the external device.

According to still another aspect of the invention, a method to control a computer to transmit a data file to an external device is provided. The method includes storing a data file to be transmitted, establishing a first communication session to transmit the data file between the computer and the external device, examining as to whether a second communication session is available between the computer and the external device while the data file is being transmitted, dividing remaining data in the data file, which has not yet been transmitted in the first communication session, into pieces so that each data piece is transmitted through the first and the second communication sessions respectively between the computer and the external device when it is determined that the second communication session is available, and transmitting each data piece to the external device through the first and the second communication sessions respectively.

According to the above configurations, a single data files can be transmitted to the external device through the plurality of communication sessions concurrently; therefore, transmission of a data file can be completed within a shorter runtime than data transmission through a single communication session.

DETAILED DESCRIPTION

Hereinafter, an embodiment according to an aspect of the present invention will be described with reference to the accompanying drawings.

FIG. 1is a block diagram to illustrate a scanner system2according to the embodiment of the present invention. The scanner system2includes a scanner device10and a PC (personal computer)40. Although solely one PC40is shown inFIG. 2for simplicity in explanation, the scanner system2may include more than one PCs40. The scanner device10and the PC40are connected with each other through a communication line36, which is for example a LAN and the Internet.

The scanner device10is equipped with an operation unit12, a display unit14, a scanner unit16, an original sheet tray18, a control unit20, a storage unit22, and a network interface32. The operation unit12includes a plurality of operation keys (not shown), which are operated by a user to enter various information and instructions to manipulate the scanner device10. The scanner unit16scans an original sheet (not shown) placed on the original sheet tray18to read and generates scanned data representing the scanned image. The control unit20controls various operations of the scanner device10according to programs (not shown) stored in the storage unit22and instructions entered by the user. The control unit20includes a CPU (not shown) being a processor of various information. The operations to be controlled by the control unit20will be described later in detail.

The storage unit22includes a ROM, an EEPROM, and ROM (not shown). The storage unit22is provided with a destination URL storage area24, a scanned-data storage area26, a transmission management data storage area28, and a miscellaneous storage area30.

The destination URL storage area24is a storage area to store information to identify destination devices to which the scanned data is transmitted.FIG. 2illustrates a data structure in the destination URL storage area24in the scanner device10according to the embodiment of the present invention. In the destination URL storage area24, a plurality of data sets70,72can be stored. Each of the data sets includes a name60of the data and a URL62of common folder. The name60identifies a destination device. The name60may represent, for example, a name of the user of the destination device. The URL62of common folder identifies a URL (uniform resource locator) of a shared folder in the destination device and can be accessed by external devices such as the scanner device10. When the destination device is provided with a common folder, data stored in the common folder can be accessed by the external devices, and new data in the external devices can be stored in the common folder. The URL62of the common folder in the present embodiment includes an IP address of the destination device (i.e., the PC40) in which the common folder is provided. More specifically, it is to be noted that the URL62of the common folder in the data set70(i.e., 192.168.0.2/common) includes an IP address “192.168.0.2” of the destination device. In the present embodiment, a character string such as “file://” which is generally to be included in a URL is omitted in the URL62of the common folder.

The data sets70,72to identify the destination devices can be entered by the user through the operation unit12and stored in the destination URL storage area24. The user may further enter the data sets70,72in an external device, which is a device other than the scanner device10, so that the external device can pass the data sets70,72to the scanner device10. The scanner device10stores the received the data sets70,72in the destination URL storage area24.

The scanned-data storage area26is a storage area to store the scanned data created in the scanner unit16.FIG. 3illustrates a data structure in the scanned-data storage area26in the scanner device10according to the embodiment of the present invention. In the present embodiment, the scanner device10has a hostname26a(mfp1.example.com). The scanned-data storage area26can store a plurality of scanned-data files80,90. The scanned-data file80includes a piece of scanned data84, and a file name82(i.e., 20080101-010100), which represents a date of creation of the scanned-data file80. In the present embodiment, the file name82(20080101-010100) indicates that the scanned-data file80was created on 1:01:00 (1 minute and 0 second past 1 o'clock), Jan. 1, 2008. The file name82further includes a character string (.pdf), which indicates an extension of the scanned-data file84. The extension indicates that the scanned data84is in PDF format. The scanned-data file90similarly includes a file name92and a piece of scanned data94.

FIG. 4illustrates a data structure in the transmission management data storage area28in the scanner device10according to the embodiment of the present invention. The transmission management data storage area28is a storage area to store a plurality of sets of transmission management data100, although a single set of transmission management data100is illustrated inFIG. 4. A set of transmission management data100includes items which are an IP address102(i.e., 192.168.0.5) provided to the scanner device10, a connection ID104(indicated by “xxxxxxx” inFIG. 4), a data transmission starting point106(i.e., 0), which indicates an initial byte of data transmission in the data transmission task, a total number of bytes108to be transmitted (i.e., 15000), and a number of transmitted bytes110(i.e., 1000). Functionalities and methods to set these items will be described later in detail.

The storage area30stores information which is other than the information to be stored in the destination URL storage area24, the scanned-data storage area26, and the transmission management data storage area28.

The network interface32is connected to the communication line36so that the scanner device10can communicate with the PC40through the communication line36.

Next, a configuration of the PC40will be described. The PC40is equipped with an operation unit42, a display unit44, a control unit46, a storage unit48, and a network interface54. The operation unit42includes a keyboard and a mouse, through which various information and instructions are entered by a user. The display unit44displays various information to be processed in the PC40on a screen of a monitor (not shown). The control unit46controls various operations of the PC40according to programs (not shown) stored in the storage unit48and instructions entered by the user.

The storage unit48includes a ROM, an EEPROM, a RAM, and an HDD. The storage unit48is provided with a common folder50and a miscellaneous storage area52. The common folder50can be created by the user who manipulates the operation unit42. The common folder50is a shared folder which is provided in the PC40and can be accessed by the other external devices. A folder which is not set to be common is not accessible to the other external devices. In the present embodiment, the URL62of the common folder (i.e., 192.168.0.2/common) in the data set70of the destination device URL storage area24indicates a URL of the common folder50in the PC40. The miscellaneous storage area52is a storage area for miscellaneous information.

The network interface54is connected to the communication line36so that the PC40can communicate with the scanner device10through the communication line36.

Next, a process to be executed by the control unit20in the scanner device10will be described.FIGS. 5-7are flowcharts to illustrate a scanning process to be executed in the scanner device10according to the embodiment of the present invention. In the scanning process, the scanned data representing the image formed on an original sheet is transmitted to the destination device. The scanning process starts when the user designates at least one destination of the scanned data among a plurality of destinations registered in the scanner device10. More specifically, the user manipulates the operation unit12to select at least one data set representing a destination device among the data sets70,72which are stored in the destination URL storage area24. When at least one data set is selected and the user manipulates the operation unit12to start the scanning process, the control unit20starts the scanning process starts.

When the scanning process starts, in S10, a file name for the scanned data is created prior to creating the scanned data. The file name includes a character string indicating a current date and an extension (see the file names82,92inFIG. 2). When the file name is created, the scanner unit16is driven to scan the original sheet which is placed on the original sheet tray18. Thus, when scanning is completed, the scanned data representing the scanned image is created. The scanned data and the file name are associated with each other and stored in the scanned-data storage area26.

In S12, the control unit20examines as to whether a plurality of communication sessions can be established in parallel paths between an IP address provided to the scanner device10and the destination device (i.e., the PC40) designated by the user. The scanner device10according to the present embodiment is capable of establishing a plurality of communication sessions in parallel paths based on a single IP address. In S12, it is examined as to whether the PC40is provided with the similar capability (i.e., as to whether capable of establishing a plurality of communication sessions in parallel paths). A method to establish a communication session between the scanner device10and the PC10includes the following steps:1. The control unit20transmits a SYN (synchronization) packet to the PC40.2. A SYN/ACK (acknowledgement) packet is returned to the controller20by the PC40.3. The control unit20transmits an ACK packet to the PC40, whereby connection based on TCP/IP is established.4. The control unit20uses CIFS (Common Internet File System) to establish the communication session. Specifically, the control unit20transmits a negotiate REQ (request) of the CIFS to the PC40.5. A negotiate RESP (response) is returned to the control unit20by the PC40.6. The control unit20transmits a session REQ to the PC40.7. A session RESP is returned to the control unit20by the PC40, whereby the communication session between one IP address of the scanner device10and the PC40is established.
It is to be noted that CIFS supports a plurality of certifying methods to establish a communication session. Therefore, the communication session may be established in a different certifying method than the method described above.

When the communication session as above (hereinafter, a first communication session) is established, the control unit20repeats the above steps 1-7 based on the same IP address of the scanner device10. Thus, a second communication session is established. When the second communication session is established while the first communication is maintained, an examination result “YES” is stored in the storage area30. When the first communication session is disconnected upon establishment of the second communication session, an examination result “NO” is stored in the storage area30. Thereafter, the controller20disconnects the first and the second communication sessions.

In S14, the transmission management data100is created. More specifically, the control unit20reserves a predetermined-sized storage area in the transmission management data storage area28to store the transmission management data100to be created. Further, an IP address provided to the scanner device10and available for data transmission is written to be the IP address102in the transmission management data100. In S14, no other information for the remaining items104-110in the transmission management data100is written.

In S16, information corresponding to the items106-110is provided to fill the transmission management data100. Specifically, “0” is written to be the starting point106of data transmission, and a total number of bytes of the scanned data created in S10is written to be the total number of bytes to be transmitted. Further, “0” is written to be the number of transmitted bytes110. In S16, information for the connection ID104is not provided.

In S18, connection with the PC40is established based on the IP address102written in the transmission management data100in S14. The control unit20obtains a connection ID included in the session RESP which was returned by the PC40in the above step 7 and writes in the transmission management data100to be the connection ID104. The obtained connection ID104is appended to data to be transmitted upon transmission and to a response packet which is returned in response to the transmission. Thus, based on the connection ID104, the control unit20can recognize to which transmission the response packet is provided. Writing the connection ID104in the transmission management data100in S18completes the transmission management data100. Upon completion of S18, the control unit20activates an elapse time counter and an idle time counter. Values counted in the counters are used in S40and S42inFIG. 6, which will be described later in detail.

In S20, the control unit activates a data transmission task.FIG. 8is a flowchart to illustrate a data transmission task to be performed in the scanner device10according to the embodiment of the present invention. When the data transmission task is activated in S20inFIG. 5, a flow of steps illustrated inFIG. 8is started. Further, the control unit20continues to execute steps following S22in S5concurrently with the data transmission task shown inFIG. 8. Accordingly, a plurality of data transmission tasks may run concurrently. In such a case, the transmission management data100is created for each data transmission task, and each of the data transmission tasks is provided with a corresponding set of transmission management data100.

When a data transmission task is activated, in S90, a data transmission originated point of the scanned data is stored in the storage area30in the storage unit22. The data transmission originated point defines a transmitted data portion and a remaining data portion in the scanned data in the data transmission task. Thus, when a plurality of data transmission tasks run concurrently, the data transmission originated points are set on the data transmission task basis. It is to be noted that the data transmission originated point may be stored in the transmission management data100to be one of the items to configure the transmission management data100. In S90, the data transmission starting point106in the transmission management data100corresponding to the data transmission task is stored in the storage area30to be the data transmission originated point. For example, when a data transmission task corresponding to the transmission management data100created in S14-S18inFIG. 5is run, a data transmission originated point “0” is stored in the storage area30to be the data transmission originated point.

In S92, the control unit20examines as to whether the common folder50in the destination device (i.e., the PC40), which was designated by the user prior to activation of the scanning process inFIG. 5, includes a file having a file name identical to the file name of the scanned data file created in S10inFIG. 5. The data file stored in the common folder50having the file name identical to the file name of the scanned data file created in S10inFIG. 5will be hereinafter referred to as an in-transmission file. When no in-transmission file is stored in the common folder50, the control unit20transmits a CREATE command, which instructs the PC40to create a data file having a file name identical to the file name of the scanned data file created in S10inFIG. 5, to the PC40. According to the CREATE command, the PC40creates an in-transmission file and stores in the common folder50. It is to be noted that at this point the in-transmission file does not yet include contents of the scanned data. When an in-transmission file is stored in the common folder50, the control unit20transmits an OPEN command, which instructs the PC40to open the in-transmission file, to the PC40. In S92, the control unit20sets the in-transmission file to be shared to be writable by a plurality of data transmission tasks running concurrently.

In S94, the control unit20reads a predetermined number of bytes of the scanned data starting from the data transmission originated point, which is set in S90. For example, when the data transmission originated point set in S90is “0,” the predetermined bytes of the scanned data starting from the initial byte are read. For another example, when the data transmission originated point set in S90is “1000,” the predetermined bytes of the scanned data starting from the 1000th byte are read. The scanned data being read is stored in a predetermined buffer area in the storage area30.

In S96, the control unit20writes the scanned data stored in the predetermined buffer area in S94in the in-transmission file. More specifically, the control unit20transmits a command to instruct the PC40to write the scanned data in the predetermined buffer area in the in-transmission file to the PC40. Thus, the scanned data is written in the in-transmission file.

In S98, the control unit20updates the data transmission originated point of the scanned data. Specifically, the control unit20increments the data transmission originated point by the number of bytes of the scanned data transmitted to the PC40in S96. For example, when the data transmission originated point is set to be “0,” and the number of bytes of the scanned data transmitted in S96is “1000,” the control unit20updates the data transmission originated point to be “1000.” Further, the control unit20updates the number of transmitted bytes110in the transmission management data100corresponding to the current data transmission task. That is, the control unit20increments the number of transmitted bytes110by the number of bytes of the scanned data transmitted in S96. For example, when the number of transmitted bytes110is “1000,” and the number of bytes of the scanned data transmitted in S96is “1000,” the control unit20updates the number of transmitted bytes110to “2000.”

In S100, the control unit20examines as to whether the number of transmitted bytes110in the transmission management data100corresponding to the current data transmission task matches the total number of bytes108to be transmitted. If the number of transmitted bytes110does not match the total number of bytes108(S100: NO), the control unit20returns to S94and repeats S94-S100until it is determined that the number of transmitted bytes110in the transmission management data100matches the total number of bytes108to be transmitted in S100(S100: YES). The control unit20proceeds to S102.

In S102, the control unit20transmits a CLOSE command, which instructs the PC40to close the in-transmission file, to the PC40. Thereafter, in S104, the control unit20notifies the scanning process (FIGS. 5-7) running in parallel of completion of the data transmission. Thus, the data transmission task is completed.

Next, steps following S22inFIG. 5in the scanning process will be described. In S22, the control unit20examines as to whether all of the data transmission tasks, which were activated in S20or in S74inFIG. 7(described later), have notified the control unit20of completion of data transmission (see S104inFIG. 8). If not all the transmission tasks notified of completion of the data transmission (S22: NO), the control unit20proceeds to S40inFIG. 6.

In S40, the control unit20examines as to whether a predetermined time period has elapsed based on the value indicated by the elapse time counter activated in S18inFIG. 5. The predetermined time period may be set based on a size of the remaining data, and/or a bandwidth of the interfaces through which the scanned data is transmitted. Alternatively, the predetermined time period may be a fixed period. When the predetermined time period has elapsed (S40: YES), the control unit20proceeds to S42. When the predetermined time period has not elapsed (S40: NO), the control unit20returns to S22.

In S42, the control unit20examines as to whether the CPU of the control unit20has idled (i.e., ready) over a predetermined idling period based on the idle time counter activated in S18inFIG. 5. The predetermined idling period may be obtained by a value indicated by the idle time counter multiplied by a predetermined ratio (e.g., 50%). When the CPU has not idled over the predetermined idling period (S42: NO), the control unit20returns to S22.

When the CPU has idled over the predetermined idling period (S42: YES), in S44, the control unit20refers to the transmission management data100firstly created in S14-S18. Further, the control unit20initializes and restarts the elapse time counter and the idle time counter. The control unit20proceeds to S46.

In S46, the control unit20obtains a number of remaining bytes of the scanned data to be transmitted. The remaining bytes of the scanned data can be obtained by the total number of bytes108subtracted by the number of transmitted bytes110in the transmission management data100. In S46, further, the control unit20examines as to whether the number of remaining bytes to be transmitted is greater than a predetermined number of bytes. The predetermined number of bytes may be a fixed value or a variable value. When the predetermined number of bytes is a variable number, the predetermined number may be obtained based on, for example, the total number of bytes in the scanned data (e.g., 10% of the total number of bytes). When the number of remaining bytes to be transmitted is not greater than the predetermined number (S46: NO), the control unit proceeds to S76inFIG. 7.

When the number of remaining bytes is greater than the predetermined number (S46: YES), in S48, the control unit20examines as to whether a plurality of communication sessions can be established in parallel between the scanner device10and the PC40based on the IP address provided to the scanner device10. The determination is made based on the examined result obtained in S12inFIG. 5, which is stored in the storage area30. When a plurality of communication sessions cannot be established in parallel (S48: NO), the control unit20proceeds to S50. When a plurality of communication sessions can be established (S48: YES), the control unit20proceeds to S54.

Following S48(S48: NO), in S50, the control unit20examines as to whether there is a usable IP address to establish a communication session provided to the scanner device10and being different from the IP address which has been used and examined in S48. If there is no usable IP address (S50: NO), the control unit20proceeds to S76inFIG. 7. When the scanner device10is provided with a different usable IP address (S50: YES), in S52, the control unit20creates a new set of transmission management data100. The control unit20writes the different usable IP address in the transmission management data100to be the IP address102. The control unit20proceeds to S70inFIG. 7.

Following S48(S48: YES), in S54, the control unit20creates a new set of transmission management data100. Specifically, a predetermined sized area is reserved in the transmission management data storage area28to store the transmission management data100. In S54, the control unit20writes the IP address in the transmission management data100referred to in S44or an IP address in transmission management data100referred to in S78inFIG. 7(described later) in the transmission management data100to be the IP address102. The control unit20proceeds to S70inFIG. 7.

In S70, the control unit20updates the total number of bytes108to be transmitted in the transmission management data100referred to in S44or in S78. Further, the control unit20writes a data transmission starting point106and a total number of bytes108to be transmitted and a number of transmitted bytes110in the transmission management data100created in S52or S54. A method to obtain the values to be written in the transmission management data100in S70will be described hereinbelow with reference toFIG. 9.FIG. 9illustrates contents of the transmission management data being created and updated in the scanning process in the scanner device10according to the embodiment of the present invention

The control unit20obtains the number of remaining bytes to be transmitted by subtracting the number of transmitted bytes110(i.e., 3000) from the total number of bytes108(i.e., 15000) in the transmission management data100(200a) which was referred to in S44(or S78). Thereafter, the obtained number of remaining bytes is divided by two (i.e., (15000−3000)/2=6000). Further, the bisected number (i.e., 6000) is subtracted from the total number of bytes108(i.e., 15000) to be transmitted in the transmission management data200a(i.e., 15000−6000=9000). The total number of bytes108to be transmitted in the transmission management data200ais updated to be 9000. Thus, the transmission management data200ais updated to be transmission management data200b. Next, the bisected number (i.e., 6000) is added to the number indicating the data transmission originated point (i.e., 3000) for the scanned data corresponding to the transmission management data200a, which was referred to in S44or S78, and the added number (i.e., 6000+3000=9000) is written in the transmission management data210a, which was created in S52or S54, to be the data transmission starting point106of the transmission management data210a. The number of remaining bytes110according to the transmission management data200a(i.e., 12000) divided by two (i.e., 12000/2=6000) is written in the transmission management data210ato be the total number of bytes108to be transmitted. Further, a value “0” is written in the transmission management data210a, which was created in S52or S54, to be the number of transmitted bytes110.

Further, when the transmission management data210bis referred to in S78, as shown inFIG. 9, the transmission management data210bincludes the number of total bytes108being 6000 and the number of transmitted bytes110being 1000. The number of remaining bytes being 5000 is obtained by 1000 subtracting from 6000. The number of remaining bytes 5000 is bisected (i.e., 5000/2=2500), and the bisected number 2500 is subtracted from the total number of bytes108(i.e., 6000−2500=3500). Accordingly, a total number of bytes108(i.e., 3500) is written in the transmission management data210b, which is thus updated to be transmission management data210c.

When the transmission management data210bis referred to in S78, in S52or S54, transmission management data220is newly created. The data transmission starting point106is obtained by adding a bisected number of remaining bytes (i.e., (6000−1000)/2=2500) to the data transmission starting byte (i.e., 10000) for the transmission management data210b(i.e., 10000+2500=12500). Accordingly, a value 125000 is written in the transmission management data220to be the data transmission starting point106. Further, the bisected number of remaining bytes (i.e., 2500) is written in the transmission management data220to be the total number of bytes108. Furthermore, a value “0” is written in the transmission management data220, to be the number of transmitted bytes110.

Following S70inFIG. 7, in S72, the control unit20establishes connection with the PC40. In this step, the usable IP address102written in the transmission management data100in S52or in S54is used. The communication session between scanner device10and the PC40based on the usable IP address102is established in a process similar to that is performed in S18(seeFIG. 5). The control unit20writes the connection ID obtained in the connection establishment is written in the transmission management data100, which was created in S52or S54, to be the connection ID104. Thus, the transmission management data100is completed with the items102-110.

In S74, the control unit20activates a data transmission task (seeFIG. 8) to run according to the transmission management data100, which was created in S52or S54. Therefore, the data transmission task activated in S20(seeFIG. 5) and the data transmission task activated in S74are run concurrently to be performed by the control unit20. Additionally or alternatively, a data transmission task activated in previous S74can be run concurrently with the data transmission tasks activated in S20and current S74. Thus, the scanned data stored in the scanned-data file created in S10(seeFIG. 5) is transmitted to the PC40in a plurality of data transmission tasks through a plurality of communication sessions concurrently. The control unit proceeds to S76.

It is to be noted that a plurality of sets of transmission management data100are present in the transmission management data storage area28when transmission management data100is referred to in S44, and all of the plurality of sets of transmission management data100are to be processed through the steps following S46. Therefore, in S76, the control unit20examines as to whether all of the transmission management data100has been processed through steps following S46. If there is a set of unprocessed transmission management data100remains (S76: NO), in S78, the control unit20refers to a next set of transmission management data100in the transmission management data storage area28so that the next set of transmission management data100is processed through steps following S46. When all of the transmission management data100in the transmission management data storage area28has been processed (S76: YES), the control unit20returns to S22(seeFIG. 5).

In S22, the control unit20examines as to whether all of the data transmission tasks, which were activated in S20or in S74inFIG. 7, have notified the control unit20of completion of data transmission. If all the transmission tasks notified of completion of the data transmission (S22: YES), in S24, the control unit20disconnects all of the communication session between the scanner device10and the PC40. Further, the control unit20deletes all of the sets of the transmission management data100. Thus, the scanning process is terminated.

According to the scanner device10in the above embodiment, a single scanned-data file divided in sets can be transmitted concurrently in a plurality of communication sessions. It is to be noted, if a scanned-data file is transmitted in a single communication session, transmission of a divided portion of scanned-data and reception of a response are repeated serially until transmission of the entire scanned-data file is completed. In other words, a next data transmission cannot be started until a response to a previous data transmission is received. In the above embodiment, on the other hand, the scanned-data file can be transmitted in parallel within the plurality of data transmission tasks, and the data transmission does not require reception of responses to the previous data transmission from the PC40. Therefore, the scanned-data file can be transmitted in a shorter runtime.

According to the scanner device10in the above embodiment, further, the data sizes of the divided scanned data to be transmitted concurrently are substantially balanced (i.e., bisections in S70) so that the scanned data file can be transmitted in a shorter runtime.

It is to be noted that the scanner device10according to the above embodiment examines as to whether the PC40is capable of establishing a plurality of communication sessions with the scanner device10based on one IP address provided to the scanner device10(see S12inFIG. 5). When affirmative judgment is made, the scanner device10establishes a plurality of communication sessions based on the single IP address. Meanwhile, when negative judgment is made, the scanner device10establishes a plurality of communication sessions based on a plurality of IP addresses. It is to be noted that establishing a plurality of communication sessions based on a single IP address is prioritized over establishing a plurality of communication sessions based on a plurality of IP addresses. Therefore, a plurality of communication sessions can be established based on less IP addresses preferentially.

Further, it is to be noted that a plurality of data transmission tasks are activated concurrently specifically when the CPU is maintained idling for a predetermined idling time period (see S42inFIG. 6). Thus, activation of a plurality of data transmission tasks concurrently can be avoided when the CPU is maintained idling for a shorter period of time. It is to be noted that activation of a plurality of data transmission tasks when the CPU is maintained idling for a shorter period of time may cause the runtime of the entire data transmission to be longer.

The scanner device10according to the above embodiment activates a new data transmission task specifically when the number of remaining bytes to be transmitted in the data transmission task is greater than a predetermined number (see S46inFIG. 6). It is to be noted that the data transmission may be completed in a shorter time period when the number of the remaining bytes to be transmitted is smaller. This is because that activation of a new data transmission task requires steps S52, S54, S70, and S72, for example, which may require additional runtime.

Although an example of carrying out the invention has been described, those skilled in the art will appreciate that there are numerous variations and permutations of the data transmission device that fall within the spirit and scope of the invention as set forth in the appended claims. It is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or act described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.

For example, the PC40being an external device to be connected with the scanner device2to establish communication sessions may be replaced with other data communication devices such as a server, a printer, a mobile terminal including a cell phone and a PDA (Personal Digital Assistance).

For another example, the scanner device10may be equipped with a plurality of different types of interfaces. Alternatively, the scanner device10may be equipped with a single interface. For another example, the scanner device10may store the examined result obtained in S12(seeFIG. 5) after completion of the scanning process. In this regard, the control unit20may not necessarily examine as to whether a plurality of communication sessions can be established with the PC40in parallel, but the stored examination result can be utilized.

For another example, a communication protocol to be used between the scanner device10and the PC40is not limited to CIFS protocol but may be, for example, FTP (File Transfer Protocol) and WebDAV (Distributed Authoring and Versioning protocol for the World Wide Web).

Further, in S70(seeFIG. 7), the number of remaining bytes to be transmitted is divided by two to obtain the total number of bytes to be transmitted. However, the number of remaining bytes may not necessarily be divided by two, but may be divided by a different number.