|
Barcode scanner hardware is generally able to read any barcode of a particular layout. 'One-dimensional' readers such as wands (which look like a pen you 'draw' along the length of the symbol) and lasers can generally read any one-dimensional code, that is, where the symbol consists of a sequence of parallel lines of varying thicknesses and spacing, and some can read two-dimensional codes which consist of a stack of one-dimensional codes, such as PDF or DataMatrix. The new Reduced Space Symbology, recently renamed DataBar, may be too new for some scanners - they may need a firmware upgrade.
Imagers, which simply take an image in the same way as a digital camera, can generally handle both 1D and 2D barcodes. They struggle if the barcode is very long, though, as the scanner needs to be placed a long way from the code to fit it all in to the image, and then the resolution of each line is not very good, making measurement of the bars and spaces difficult. Most methods of encoding - referred to as symbologies - are self-checking, meaning that the scanner just won't return anything, rather than returning incorrect data.
The different symbologies are designed for different purposes. For example, UPC and EAN are for encoding Global Trade Item Numbers, basically Stock Keeping Unit codes which identify a product in retail. That's their sole purpose and they shouldn't be used for anything else. If you're marking a product for sale by high-street retailers, you need a GTIN for your product, which means you need to register with your local GS1 Member Organization[^] to get a Company Prefix, a range of item numbers assigned to you. If you're in the US, this will be a UPC; if abroad, an EAN. In fact the two symbologies are the same thing, except that EAN changes the parity of some of the bars in the left-hand half of the code to encode the first digit. The original UPC parity scheme represents a '0' in EAN, the country code for the US in the GS1 system.
If your item is a book, it should have an ISBN (International Standard Book Number) and the barcode should be derived from that. A book barcode is an EAN, and traditionally started 978, then the first 9 digits of the ISBN (the tenth was a check character), then the EAN check digit. Because the 10-digit ISBN is close to being exhausted, new books are getting an 'ISBN-13' which is simply a GTIN; in future a new prefix will be issued if it hasn't been already. Magazines, newspapers and other periodicals start 977. Some books may have a 'supplemental' of five digits indicating the price or price code. Magazines often have a 2-digit supplemental indicating the issue number, so the base GTIN stays the same between issues and only the issue number is varied.
UPC E is simply a scheme for suppressing consecutive 0s in some UPC A barcodes to provide a shorter code. A UPC E code can (and in my view, should) be converted to the canonical GTIN representation when being read.
Retail products can also be marked with an EAN 8 barcode, which is a different number from the EAN 13 code. Some sources say that the EAN 8 code is a derivation but I believe this is incorrect.
For shipping containers of retail products, you should generally mark with Interleaved 2 of 5 (ITF) or GS1-128 (formerly called EAN-128). The former encodes two characters at a time, one with the lines, the other with the spaces (hence interleaved). Because of this it can only encode an even number of digits. ITF has a bug: the start and stop characters are underspecified, and some codes can be interpreted incorrectly if the scanner beam exits the top or bottom of the code (e.g. scanned obliquely). To prevent this, ITF is commonly used with thick black horizontal bars touching the top and bottom of the data bars.
GS1-128 is simply a Code 128 barcode with specific encoding rules to enable it to carry more than one piece of information. Those rules dictate the way that different pieces of data are encoded and delimited so that software can extract each piece of information. Couriers often use a subset of GS1-128 they call a 'license plate' for each package.
The airline industry I believe uses a special variant of ITF called IATA-2 of 5 which has different start and stop characters to avoid the partial decode problem.
Other symbologies are pretty generic and have certain properties which lend themselves to different purposes. As mentioned, Interleaved 2 of 5 can only encode numeric data but its length is bounded only by the practical limit of how wide the barcode can be. Code 39 encodes upper case Latin characters in addition to the numbers, plus a few symbol characters as well. There is also a standard extension to Code 39 called Full ASCII, where other characters from the ASCII set are encoded by escaping using the symbol characters; however, it is not possible to detect whether a barcode is intended to be Full ASCII or not. A variant of Code 39, Trioptic 39, uses different start and stop characters.
Code 39 has a small advantage in one way in that each character is encoded as a pattern starting and ending in a bar - the space between characters is not significant. This allows 'bar code fonts' to be used with word processors which might adjust this spacing, as long as the modules themselves are not distorted. Other symbologies such as Code 128 are continuous, that is they start with a bar and end with a space of a designated width.
Code 128 can encode the full ASCII character set. It does this not by having 128 distinct patterns but by having 'code sets' where the 103 different patterns have different meanings depending on which code set you're in. There are patterns reserved for shifting code sets, and three different start characters to indicate the code set used at the beginning. For a fully numeric barcode, Code 128 can be more compact by using Code Set C, where 100 of the patterns represent two digits, 00 to 99. (The remaining three are 'shift to Code A', 'shift to Code B', and 'FNC 1', a generic non-printable character that is used to indicate a GS1-128 code and delimit variable-length elements of a GS1-128 barcode).
Generally, if you're just encoding something for your own purposes I'd use Code 128, unless you want to take advantage of barcode fonts in which case Code 39 might be more appropriate.
DoEvents: Generating unexpected recursion since 1991
|
|
|
|
|
OK - this has to be your most comprehensive answer to date.
|
|
|
|
|
Well, when you've worked with barcodes for seven years, you pick a few things up!
DoEvents: Generating unexpected recursion since 1991
|
|
|
|
|
That's fair enough, but for somebody who's renowned for giving comprehensive answers you've outdone yourself this time.
|
|
|
|
|
Mike Dimmick wrote: Imagers, which simply take an image in the same way as a digital camera, can generally handle both 1D and 2D barcodes.
FYI, there's a third category of reader (probably not used so much anymore, now that imagers have become cheaper): raster-scanning lasers can scan 1D barcodes and PDF-417 but not other 2D symbologies. PDF-417 is designed so that it can be read by combining many independent one-dimensional reads. If a particular read crosses from one 'row' to the next, the character on which the crossing occurred will not be read, but the system will detect the crossing and can thus properly assign the following characters to the appropriate row.
I mention this for a few reasons:
-1- I think PDF-417 is a really cool technology which, although it's obsolete, still deserves to be appreciated and marveled at.
-2- While I don't know the market situation, I would not be surprised if used raster-scanning lasers are or will be available cheaper than other imaging technologies. If information capacity is more important than small symbol size, using PDF-417 may allow one to equip one's shop with compatible readers more cheaply than other symbologies.
-3- With a firmware upgrade, a line scanner that has enough memory should be able to handle PDF-417 barcodes if the user waves the scanner slowly over the barcode a few times, though I'm not aware of any that do. This might make an interesting hobby project, though.
-4- PDF-417 barcodes are physically larger than other 2D barcodes with similar information content; it may be nice to understand why.
|
|
|
|
|
Some scanners that connect via serial port or PS/2 keyboard port can be configured so as to prefix each data record with a character indicating the encoding. This will likely cause problems with any application that doesn't expect such a thing.
I would expect/hope that USB-based readers could be configured so that an application that was interested in the encoding on a barcode could ask, while those that weren't interested wouldn't be bothered with the information. Actually, what would be ideal would be if a USB-based reader had a driver that could be configured to behave differently based upon what application was open, but I haven't looked into whether such things were possible.
|
|
|
|
|
Hi all,
I have a .net framework v3.5 that requires XP service pack 2. Have problems downloading the service pack. Any help
|
|
|
|
|
Try a different computer? Their shouldn't be any problems if you download the SP as a service pack CD image.
Regards,
Thomas Stockwell
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
Visit my homepage Oracle Studios
Discounted or Free Software for Students:
DreamSpark - downloads.channel8.msdn.com
MSDN Academic Alliance - www.msdnaa.com
|
|
|
|
|
OK, so we can use System.Console.Beep to play a simple beep or play a specified frequency for a specified duration, but what if I want to play a specified frequency until I tell it to stop? Like Turbo Pascal used to do.
I haven't found a way to do it very well. The best I've accomplished is spawning off a thread to play a short beep repeatedly until I tell it to stop. What I don't like is that there is a noticeable break between beeps.
Even having the thread play a long beep and aborting the thread doesn't work; the thread doesn't abort until the long beep is done (it must not understand the concept of "abort").
Any other ideas?
|
|
|
|
|
|
System.Console.Beep is a thin wrapper around the OS Beep[^] function.
It might be better to play a sound or stream via wave output APIs since Beep will only go through the legacy PC speaker.
I believe the thread can't be aborted because this is native code - Thread.Abort can only be processed when managed code is running. There is no documented way of aborting a Beep.
DoEvents: Generating unexpected recursion since 1991
|
|
|
|
|
That's just ripe for a nasty piece of practical joke code somewhere. I a little one-liner to spawn a thread, hardly noticeable , just one hellish beeeeeeeeeeeep.
Semicolons: The number one seller of ostomy bags world wide. - dan neely
|
|
|
|
|
Have I mentioned my Westminster Chime Windows Service that I sometimes run on the email server?
|
|
|
|
|
The speaker is fine, I like the speaker.
|
|
|
|
|
I am writing an application for a Microchip PIC microcontroller, and have built a set of wrapper functions so that I can run the same application in VB.net. This allows me to test and debug my code, including the user interface (the device has a keypad and LCD) without having to burn a chip with every revision. Unfortunately, I've not managed to satisfactorily emulate the behavior of the device's beeper.
The beeper is controlled by a separate microcontroller which accepts two types of commands:
-1- Play the specified list of notes or warbles immediately (aborting any current sound).
-2- Play the specified list of notes or warbles as soon as the current one is done (abort any previously-queued list, but don't affect the current list)
What would be the best way to emulate that behavior on the PC? I tried using a separate thread and console.beep, but the timing is all over the place.
|
|
|
|
|
I have been making server controls for a while now. Extending System.Web.UI…
And I can add a propertys and methods to my server controls. But I have always thought it would be nice to just be able to add it to the web control.
Something like
<asp:button id=”xxx” runat=”server” text=”text” ButtonBlink=”true”…
So all asp:button controls have the method ButtonBlink and if I have ButtonBlink set to true. The button would blink off and on.
I was told this could not be done in 2.0 but that you would be able to in 3.5.
Any ideas?
Thanks
Danny
|
|
|
|
|
You might be thinking of AJAX Extender controls.
- S
50 cups of coffee and you know it's on!
|
|
|
|
|
You could do that with Control Extenders, in fact any attribute on an element will be rendered on to the base element. You can retrieve that value through the Attributes property.
|
|
|
|
|
Hi,
Is there a class i could use to be able to make a VPN connection using PPTP ?
I want to write a smal client application so that our home users could easely open a VPN connection to our network ...
Thx!
Vinny.
Vinny
|
|
|
|
|
I have the following code execute:
if (Directory.Exists(exportFolder))
{
Directory.Delete(exportFolder, true);
}
Directory.CreateDirectory(exportFolder);
and then a database update, and then:
wiz57.PerformExport();
Occassionally, about 1 in 20 tests I run in the IDE, PerformExport fails because exportFolder does not exist. How can it not exist if I create it and no exception is thrown? I can only suspect that the Directory code is not truly synchronous, and has not completed before PerformExport executes.
Semicolons: The number one seller of ostomy bags world wide. - dan neely
|
|
|
|
|
hi,
can anybody tell me how to acces smart tag using C#.NET in MS word 2003.
smart tag present under Tools--> Auto Correct Options-->Smart Tags in MS word 2003.
Regards:
Biswajit
biswajit nayak
|
|
|
|
|
biswajit nayak wrote: can anybody tell me how to acces smart tag using C#.NET in MS word 2003.
No. No one knows how to do that. And if anyone did it certainly would not be Microsoft and if they did they certainly would not document it.[^]
Good luck, you're going to need it.
led mike
|
|
|
|
|
hi mike,
I think you misunderstood my question.
I need to access the smarttag in MS word 2003 which is not there in the older version of MS word.
The link you send i worked on that but still it's not help full for me , From the last 5 days i am trying on this topic and searching in the net but till now i have not yet received the corerct solution.
So please help me.
biswajit nayak
|
|
|
|
|
Hi,
i am totally new to C#.NET, so please can any body tell me how to access the header and footer of a MS word document using C#.NET it's very urgent please help me.
Regards:
Biswajit
biswajit nayak
|
|
|
|
|
|