Abstract:
Methods and systems for generating and resolving multi-mode barcodes include a device scanning and translating graphical data representing a barcode pattern into barcode information. The device detects distinct data items in the barcode information that each specifies an action to be taken by the device, and then transmits a request for a preference order to a remote server. Next, the device receives the preference order indicating a ranking of the distinct data items and determines, based on the ranking, an order in which actions specified by the data items are to be taken by the device. The device identifies a data item that the device is capable of taking the action specified by the data item and has a higher ranking in the preference order than the actions specified by all other data items that the device is capable of taking, and performs the action specified by the data item.

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
       [0001]    This application is a continuation of U.S. patent application Ser. No. 13/213,581, filed on Aug. 19, 2011, pending, which claims benefit of Indian Patent Application 1806/DEL/2011, filed on Jun. 24, 2011. The contents of the above-identified U.S. and Indian Patent Applications are hereby incorporated herein by reference in their entirety. 
     
    
     TECHNICAL FIELD 
       [0002]    The present disclosure relates generally to methods and systems for generating and resolving barcodes. 
       BACKGROUND 
       [0003]    As more and more business, governmental, academic, and scientific operations become increasingly computer-enabled and, thus, dependent on the storage and manipulation of electronic or digital information, a greater need arises for efficient mechanisms for converting “physical” information into electronic or digital information capable of storage and manipulation by computers. 
         [0004]    “Physical” information may include essentially any kind of information that is stored primarily in tangible, physical form, such as on paper, and is not readily available in electronic or digital form, but must instead be converted or translated into electronic or digital form through the use of electronic devices and/or manual human data-entry. For example, a utility bill printed on a piece paper received by a customer may be a form of “physical” information. Although the information printed on the utility bill may already exist in electronic or digital form—for example, in a commercial database operated by the utility company—that electronic information may not be available to the customer. Instead, if the customer wishes to store or manipulate the information printed on the paper document using a computer, he or she must either manually enter the information into a computer program or use a device, such as a scanner, that is designed to convert physical information into electronic or digital information. 
         [0005]    Although the scanner in the above the example may effectively convert physical information to electronic information by generating a digital image of the scanned paper, because the printed bill would likely have not been formatted in a manner tailored to machine scanning and information extraction, the data captured from scanning the paper may include significant unnecessary graphical data or “noise.” Or, the scanner may not accurately read various characters, depending on the size of the font or the resolution of the scan. One solution that has been developed to address the need for efficiently and accurately converting physical information to electronic or digital information is the barcode. 
         [0006]    A barcode is an optical, machine-readable image in which the information sought to be communicated by the barcode is arranged as a series of parallel lines of varying widths and spacings. Barcodes are typically scanned in a one-dimensional fashion by special-purpose optical scanning devices that are able to decode the information encoded in the barcodes by measuring the widths and spacings of the parallel barcode lines through reflective light feedback. 
         [0007]    Traditional barcodes, however, suffer from the drawback that their one-dimensional structure allows for only a limited amount of information to be encoded in the barcode. For example, a Universal Product Code (UPC), which is a one-dimensional barcode format that enjoys widespread usage today, is capable of encoding only 12 decimal digits or a total of 95 binary bits, including start and end patterns. Because of this limitation, the last couple decades have seen significant growth in the number of standards for two-dimensional or “matrix” barcodes. 
         [0008]    Many matrix barcodes provide similar functionality of traditional one-dimensional barcodes by providing a pattern of two-dimensionally arranged squares or other shapes of varying lengths and widths. One example of a type of matrix barcode that has enjoyed popular usage is the Quick Response or “QR” Code standard, an example of which is depicted in  FIG. 1 . Governed by several standards, QR Codes are capable of storing up to 7,089 decimal numeric code characters, 4,296 ASCII alphanumeric characters, or 2,953 bytes when encoding purely binary data. 
         [0009]    Although by no means a new standard, QR Codes have recently gained widespread use as a result of the advancement of mobile devices, such as smartphones, capable of reading and quickly interpreting barcode data such as QR Codes. One common use of QR Codes, as depicted in  FIG. 1 , has been to encode Uniform Resource Locators (“URLs”), such as website addresses, within QR Codes placed on billboards, mailers, or even buildings to provide consumers with a quick and easy way to visit a company&#39;s website without having to memorize, write down, or manually type a URL into a smartphone or other mobile device. Consumers who see a QR Code displayed may take a picture of the QR Code using a camera embedded in the smartphone, for example, and may utilize a smartphone application to automatically translate the QR Code to a URL and launch a browser application pointed to the URL. Additional commercial uses of QR Codes include encoding coupons or other purchase information into QR Codes that customers may decode into graphical or textual coupons to present at businesses to receive discounts on purchased goods or services. 
         [0010]    However, as the use of QR codes and other matrix barcodes becomes more widespread, a problem has emerged as the type and sophistication of commercially available scanning devices varies greatly. It therefore becomes a challenge to determine what kind of information to encode in barcodes that will be readable and actionable for the largest number of user scanning devices. Whereas an increasing number of mobile devices may be capable of scanning and decoding barcodes, those mobile devices may vary greatly in terms of which actions they may be capable of taking in response to decoded barcodes. 
         [0011]    For example, an author of a barcode may choose to encode a URL in a barcode, such as a URL that points to a webpage containing information about the author&#39;s products. However, not all scanning devices capable of decoding the barcode may have web browsing capabilities. Some mobile devices may be capable only of initiating standard telephone calls or sending SMS text messages. Or, a scanning device may have web browsing capabilities, but the smart phone user may not have a data plan that provides for web browsing. Some mobile devices may be SMS capable, but not MMS capable. Moreover, some mobile devices may have sophisticated scanning capabilities, such as the ability to decode barcodes that contain audio or video content and the ability to play such audio or video content, but have no ability to communicate with other devices, such as through wireless transmission or otherwise. 
         [0012]    The author of a barcode who wishes to widely disseminate information is thus presented with a predicament. On the one hand, the author may choose to encode a form or type of data into a barcode that will provide users who scan the barcode with the best quality of information or data richness, such as a hyperlink to a webpage or a video clip, in order to accomplish the most effective marketing of the author&#39;s information. However, such an approach may greatly limit the extent to which the information can be disseminated to the general public, as many users may use scanning devices that are not capable of accessing or rendering such content. Therefore, on the other hand, the author may choose to encode information in a barcode using a lowest common denominator approach—i.e., by encoding data in the simplest form, such as plain text, that will pose the least technological challenge for the greatest number of scanning devices. However, this latter approach may greatly limit the effectiveness of a barcode marketing campaign, since many users may be denied richer forms of information that their scanning devices would be able to access or render. 
         [0013]    Thus, there is a need for methods and systems for incorporating multiple, distinct data items of different types into a single barcode, such as a QR Code, that will allow different users to access different forms of information according to the capabilities of their scanning devices. 
       SUMMARY OF THE INVENTION 
       [0014]    The invention comprises methods and systems for incorporating multiple, distinct data items of different types into a single barcode, such as a QR Code, that will allow different users to access different forms of information according to the capabilities of their scanning devices. A barcode may, for example, encode both a URL pointing to a webpage descriptive of the barcode author&#39;s business and a plain text string that provides basic information about the author&#39;s business and directions to the physical location of the business. A first user who scans the barcode may use a first scanning device capable of web browsing and thus may access the webpage referenced by the URL upon scanning the barcode, and potentially ignoring the plain text string. A second user who scans the barcode may use a second scanning device that is not capable of web browsing and thus may simply view the encoded text string using a display interface of the second scanning device. Therefore, a single barcode may provide helpful information to both the first user and the second user according the capabilities of the first and second scanning devices, without resorting to the lowest common denominator of capabilities across all possible devices. 
         [0015]    In one embodiment, a multi-mode barcode consistent with the disclosed invention may also specify a preference order for the multiple encoded data items of different types. Or, a scanning device itself may have a factory- or user-supplied preference order for acting on different types of data encoded in the multi-mode barcode. The invention may be applied to any type of barcode standard, including 2-dimensional matrix barcodes, such as QR codes. 
         [0016]    Additional objects and advantages of the invention will be set forth in part in the description that follows, and in part will be obvious from the description, or may be learned by practice of the invention. The objects and advantages of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims. It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0017]    The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate various embodiments of the invention and, together with the description, serve to explain the principles of the invention. In the drawings: 
           [0018]      FIG. 1  depicts an exemplary, conventional QR code, consistent with certain disclosed embodiments; 
           [0019]      FIG. 2  is a diagram depicting an exemplary device for generating multi-mode barcodes, consistent with certain disclosed embodiments; 
           [0020]      FIG. 3  is a flow diagram illustrating an exemplary method of generating a multi-mode barcode, consistent with certain disclosed embodiments; 
           [0021]      FIG. 4  is a diagram depicting an exemplary multi-mode barcode, consistent with certain disclosed embodiments; 
           [0022]      FIG. 5  is a diagram depicting an exemplary device for reading multi-mode barcodes, consistent with certain disclosed embodiments; 
           [0023]      FIG. 6  is a flow diagram illustrating an exemplary method of reading a multi-mode barcode, consistent with certain disclosed embodiments; and 
           [0024]      FIG. 7  is a diagram depicting an exemplary multi-mode barcode, consistent with certain disclosed embodiments. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0025]    The following detailed description refers to the accompanying drawings. Wherever possible, the same reference numbers are used in the drawings and the following description to refer to the same or similar parts. While several exemplary embodiments and features of the invention are described herein, modifications, adaptations, and other implementations are possible, without departing from the spirit and scope of the invention. Accordingly, the following detailed description does not limit the invention. Instead, the proper scope of the invention is defined by the appended claims. 
         [0026]      FIG. 1  depicts an exemplary, conventional QR code, consistent with certain disclosed embodiments. In the QR Code  100 , information representing a URL  110  is encoded as a series of black and white boxes arranged in two dimensions. 
         [0027]      FIG. 2  is a diagram depicting an exemplary device for generating multi-mode barcodes, consistent with certain disclosed embodiments. Device  200  may be essentially any kind of computing device capable of inputting information; manipulating that information, such as formatting it into a text-delimited or XML-delimited textual scheme; and translating the formatted text into a graphical barcode, such as a QR Code. For example, device  200  may be a general purpose computer, comprising one or more micro processors  210  of varying core configurations and clock frequencies; one or more hard disk drives  220  of varying physical dimensions and storage capacities; one or more random access memory (RAM) modules  230  of varying clock frequencies and memory bandwidth; one or more input/output network connections  240 ; and one or more peripheral connections or interfaces  250 . Device  200  may include or be operatively connected—e.g., by network or wireless connection—to printing device  270  capable of printing any generated barcodes on a number of physical materials, such as paper, plastic, billboard material, etc. Those skilled in the art will appreciate that device  200  or the owner or operator associated with device  200  need not necessarily print or graphically render any barcodes that it generates, but instead may provide electronic or digital data representative of generated barcodes to third parties for printing or distributing the barcodes in other manners. 
         [0028]      FIG. 3  is a flow diagram illustrating an exemplary method of generating a multi-mode barcode, consistent with certain disclosed embodiments. In step  310 , a plurality of data items are input and/or retrieved from memory by device  200 . A data item may comprise any distinct collection of data that may be encoded in a barcode, such as, a text string, an email address, a phone number, a web address, an image, an audio or video segment, etc. In some embodiments, one or more data items may specify an action to be taken, such as sending an email to a particular email address containing a particular message, downloading a webpage indicated by a URL, calling or sending a text message to a particular phone number, displaying an image, playing an audio or video clip, posting a message to a social networking website, adding a particular event to a calendar, initiating a financial transaction, etc. 
         [0029]    In step  320 , device  200  arranges the plurality of data items into a formatted binary or textual string of barcode information for subsequent encoding in a barcode. For example, as depicted in  FIG. 4 , a text string  420  may include data items  421  and  423 . Data item  421  may represent a uniform resource identifier (“URI”)  421   b , as flagged by textual identifier  421   a . Data item  423  may represent a URI in the form of an instruction  423   b  to send a text message to telephone number  423   c  that includes text  423   d.    
         [0030]    In step  330 , device  200  adds a multi-mode identifier to the barcode information to indicate that the barcode information includes multiple data items of different types. For example, barcode information  420  may include a textual multi-mode identifier  425  located at the beginning of the barcode information that indicates that the barcode information include multiple data items of different types. Multi-mode identifier  425  may indicate the “schema” or format of the following textual information, and thus indicate to devices that read the barcode associated with barcode information  420  that multiple data items of different types may be found in the barcode, as delimited in a particular manner, such as by semicolon. 
         [0031]    In some embodiments, device  200  may further add information to the barcode information to specify a particular order in which a scanning device reading a barcode that contains barcode information  420  may take actions with respect to the different data items contained therein. For example, although not depicted in  FIG. 4 , barcode information  420  could include information to indicate that a scanning device should launch a browser to view the webpage associated with URI  421   b  if it has web browsing capabilities, and, if the scanning device does not have web browsing capabilities, to send a text message in accordance with data item  423  as a second option. 
         [0032]    Therefore, in step  340 , device  200  may determine whether it has been instructed to include a preference order in the barcode that it is generating. If device  200  is instructed to add a preference order to the barcode (step  340 , Yes), then device  200  may add a preference order identifier to one or more data items in the barcode information (step  350 ). Alternatively, rather than adding preference order to data to each and every data item in the barcode information, device  200  may instead simply add a single section of textual data, such as at the beginning of the barcode information, to indicate an ordering of the data items that follow. 
         [0033]    If device  200  is not instructed to add a preference order to the barcode (step  340 , No), or after device  200  has added preference order information to the barcode, device  200  may then generate a graphical barcode pattern, such as barcode  410 , that encodes the barcode information, such as barcode information  420 . Although depicted as a QR Code in  FIG. 4 , barcode  410  may be any type of barcode such as a two-dimensional universal product code (“UPC”) barcode; a stacked barcode, such as a “Codablock” or PDF 417  barcode, a high capacity color barcode, DataGlyphs, etc. 
         [0034]      FIG. 5  is a diagram depicting an exemplary device for reading and taking action in response to a multi-mode barcode, consistent with certain disclosed embodiments. Device  500  may be essentially any kind of computing device capable of optically reading graphical bar code data; decoding the graphical bar code data to derive bar code information; and operating on that information by performing various operations such as one or more of displaying text or images, initiating a telephone call, sending a text message, accessing a webpage, playing audio or video content, etc. For example, device  500  may be a commercially available mobile device such as a mobile phone or smartphone with optical camera componentry and one or more software applications for decoding images of barcodes captured by the camera componentry. 
         [0035]    Device  500  may further comprise one or more micro processors  510  of varying core configurations and clock frequencies; one or more flash drives  520  of varying physical dimensions and storage capacities; one or more random access memory (RAM) modules  530  of varying clock frequencies and memory bandwidth; one or more wireless transceivers  540 ; and one or more peripheral connections or interfaces  550 . Device  500  may communicate with other devices via cellular wireless access, such as using Code Division Multiple Access (“CDMA”), via wireless Ethernet protocols, or via a serial wire interface such as USB, etc. 
         [0036]      FIG. 6  is a flow diagram illustrating an exemplary method of reading and authenticating a multi-mode barcode, consistent with certain disclosed embodiments. In step  610 , scanning device  500  optically reads a barcode such as multi-mode bar code  710 . Those skilled in the art will appreciate that device  500  may include functionality or logic for reading multiple types of barcodes and, for each type of barcode, determining whether the barcode is a multi-mode barcode, consistent with disclosed embodiments of this invention, or a conventional type of barcode. 
         [0037]    In step  620 , scanning device  500  decodes barcode  710  to translate the graphical patterns of the physical barcode into the information encoded within the barcode—e.g., barcode information  720 —according to the standards of the relevant barcode type, for example using a dedicated barcode decoding software or hardware component. In step  630 , scanning device  500 , through analyzing barcode information  720  or otherwise, detects that barcode  710  is a multi-mode barcode, consistent with disclosed embodiments of the invention. For example, scanning device  500  may detect the presence of multiple distinct data items  722 - 727  of different types in barcode information  720 . Alternatively, scanning device  500  may detect the presence of an identifier, such as identifier  721 , that indicates that barcode  710  is a multi-mode barcode. 
         [0038]    Scanning device  500  may respond to the present of multiple data items in a number of different ways. In one embodiment, scanning device  500  may choose to perform an action specified by a data item according to the capabilities of the scanning device (steps  640  and  650 ). For example, as depicted  FIG. 7 , barcode information  720  is encoded as XML encoded text containing separate XML elements representing separate data items  722 - 727 . Data item  722  may represent a data item of type “web_address” in the form of a domain name. If device  500  is able to connect to the Internet to access the webpage specified by the domain name (and, e.g., if the device is associated with an appropriate data plan for such Internet access), device  500  may elect to retrieve the specified webpage using standard hypertext transfer protocol (“HTTP”) operations and display the webpage to the user on a screen or other output means. 
         [0039]    If scanning device  500  is not capable of accessing webpages, or if scanning device  500  is not associated with an appropriate data plan for such Internet access, scanning device  500  may instead execute the action specified by data item  723 . That is, scanning device  500  may send a text message to the specified phone number that includes the text “video clip of the day.” In response, scanning device  500  may receive a multimedia messaging service (“MMS”) text message containing a video clip. Because data item  723  is of the type “MMS_text_message,” scanning device  500  may elect to take the action specified by data item  723  only if it is capable of receiving MMS text messages. 
         [0040]    If scanning device  500  is not capable of receiving MMS text messages, or if scanning device  500  is not associated with an appropriate data plan for MMS text messages, scanning device  500  may instead execute the action specified by data item  724 . That is, scanning device  500  may send a text message to the specified phone number that includes the text “upcoming events.” In response, scanning device  500  may receive a short message service (“SMS”) text message containing plain text about upcoming events or other news. 
         [0041]    If scanning device  500  is not capable of receiving SMS text messages, or if scanning device  500  is not associated with an appropriate data plan for SMS text messages, scanning device  500  may instead execute the action specified by data item  725 . That is, scanning device  500  may initiate a standard voice telephone call to the telephone number specified by data item  725 . For example, the specified telephone number may provide pre-recorded news or product information, or may connect the user to a person capable of providing information or answering questions about the subject matter or author of the barcode. 
         [0042]    If scanning device  500  is not capable of initiating telephone calls, or if scanning device  500  is not associated with an appropriate service plan for telephone calls, scanning device  500  may instead execute the action specified by data item  726 . That is, scanning device  500  may play an audio clip, the contents of which are specified by the hexadecimal data provided by data item  726 . 
         [0043]    If scanning device  500  is not capable of decoding audio data or playing audio clips, scanning device  500  may instead execute the action specified by data item  727 . That is, scanning device  500  may simply display the textual data provided by data item  727 . 
         [0044]    Although not depicted in  FIG. 7 , additional types of data items that may be encoded in a multi-mode barcode, consistent with this invention, include an email address to which to send an email; an email message that may be sent to an email address of the scanning device&#39;s or the user&#39;s choosing; contact details, such as a vCard; an event that may be added to an electronic calendar; an address or other location information that may be input into an electronic or mobile mapping program; a link or other mechanism for enabling a user to make a purchase, donate to a cause, or otherwise effect monetary transactions; a link or other mechanism to post or share an item using a social networking website or platform; a video clip; etc. 
         [0045]    As described above, scanning device  500  could elect to execute an action associated with a scanning device based on a capability of the scanning device. If scanning device  500  is capable of executing more than one type of data item included in the multi-mode barcode, scanning device may elect to execute the action associated with the richest type of data experience for the user. For example, scanning device  500  could be configured to always elect to access webpages, if specified by a multi-mode barcode, over other data communication actions, such as text messages or phone calls. Scanning device  500  could also be configured to always elect to access resources that require data connectivity to other devices, such as receiving text messages or placing phone calls, over actions that involve purely local actions, such as playing audio or video clips or displaying text. Scanning device  500  could also be configured to always elect to display or play media or multimedia, such as audio or video clips or pictures, over data items that specify only plain text to display. 
         [0046]    Scanning device  500  may maintain an internal preference order indicating which types of data items should receive preference over which other types of data items in the event that multiple data items of different types are encoded in a multi-mode barcode, consistent with this invention. Scanning device  500  may also allow a user to specify a preference order for data item types. For example, a user may instruct scanning device  500  to access webpages as a first preference, if a web address is specified by the barcode, and to display plain text as a second preference. The user may configure scanning device  500  to take actions specified by data items according to a simplest to most complex fashion, according to an order that will result in the lowest amount of data transfer that will charged against the user&#39;s account, or according to media preference order (e.g., videos, whether through web access or as provided by the barcode, are to be preferred, over audio, which itself is to be preferred over images and over text). Scanning device  500  may also provide functionality for prompting the user to select which action to take when multiple types of data items are included in a multi-mode barcode. 
         [0047]    As depicted in  FIG. 7 , a multi-mode barcode itself may specify a preference order for its multiple data items. For example, multi-mode identifier  721  not only indicates that barcode is of type “multi-mode,” but also indicates that the actions specified by the following data items  722 - 727  have a preference ranking according to the order in which they occur in the barcode information  720 . Alternatively, although not depicted in  FIG. 7 , barcode information  720  could provide a separate preference identifier for each data item  722 - 727 . 
         [0048]    Scanning device  500  may detect the preference identifier  721  specified by barcode information  720  and execute the action specified by the first data item in the sequence of data items for which scanning device is capable of taking the specified action. Scanning device  500  could also choose to ignore any preference information provided by barcode information  720  and elect instead to follow a preference order specified by scanning device  500 , such as a default device-specific preference order, a user-supplied preference order, or a real-time user indication of which action to take in response to a user prompt. 
         [0049]    In another embodiment, a barcode may include a data item that instructs the user&#39;s scanning device to communicate with a separate external device, such as a server. The scanning device, after decoding the barcode, may communicate with the server and may indicate information specified by the barcode, such as a unique number or other identifier and/or information regarding the capabilities of the scanning device. In response, the server may transmit information back to the scanning device. For example, the server may present the scanning device, and thus the user, with a series of options for accessing various types of information, such as webpages, text message information, audio or video content, plain text, etc. The user may then select which type of data the user would like to access, or the scanning device may make a selection automatically for the user. Alternatively, the server may determine one or more appropriate types of data to provide to the scanning device in accordance with the capabilities of the scanning device, and may send only those appropriate types of data back to the scanning device, or may present only those options to the scanning device. 
         [0050]    Using this technique, a multi-mode barcode in accordance with the invention may indirectly specify multiple data types by providing an index or other kind of identifier in the barcode, and that index may be resolved by a separate server to specify the multiple actions specified by the barcode. Also, using this technique, the author of the barcode, or the operator of the resolution server, may dynamically change the data items associated with a given barcode at a later time without having to modify the barcode itself. 
         [0051]    Those skilled in the art will appreciate that, although described primarily in the context of barcodes for optical scanning, the present invention may be applied to any situation in which physical objects or phenomena in which machine-readable information has been encoded are converted to digital or electronic data by a scanning, listening, or other detection advice. For example, the present invention may be applied to information encoded within magnetic strips, audio signals, RFID signals, near field communication (NFC) signals, and other real-world “hardlinks.” 
         [0052]    The foregoing description of the invention, along with its associated embodiments, has been presented for purposes of illustration only. It is not exhaustive and does not limit the invention to the precise form disclosed. Those skilled in the art will appreciate from the foregoing description that modifications and variations are possible in light of the above teachings or may be acquired from practicing the invention. For example, the steps described need not be performed in the same sequence discussed or with the same degree of separation. Likewise various steps may be omitted, repeated, or combined, as necessary, to achieve the same or similar objectives. Accordingly, the invention is not limited to the above-described embodiments, but instead is defined by the appended claims in light of their full scope of equivalents.