Code readingHow-to

Pharmacode symbology support check for fixed barcode readers

How to check Pharmacode support before you buy a fixed reader: read the documented symbology list, tell one-track Pharmacode from Code 32, then test-decode.

LumaSpec Vision11 min read Share on LinkedIn

On this page 11 sections
  1. 01Two codes share the name Pharmacode
  2. 02Why no setting can add a symbology
  3. 03What you need before the check
  4. 04Step by step: confirm support before you order
  5. 05Worked example: a 0.50 mm narrow bar across a 100 mm field
  6. 06Choosing the reader once the table checks out
  7. 07Common mistakes that waste a sample run
  8. 08When the usual answer is wrong
  9. 09The decision, case by case
  10. 10Checklist before you order
  11. 11Questions

You opened a fixed scanner's data sheet to switch Pharmacode on, and the 1D symbology table does not mention it. That missing entry is the answer: decode support is built into the reader, and an enable setting only turns a listed symbology on or off — it cannot add one. This walkthrough gives you the pre-purchase check, the sample decode that proves it, and the resolution arithmetic that clears the optics. It also separates the two different codes that both get called Pharmacode, because checking the wrong one wastes a sample run. You will finish knowing whether your shortlisted reader can read your code, and what to do when it cannot.

Two codes share the name Pharmacode

Pharmacode is not one symbology, and that is where most checks go wrong. Know which of the two codes you actually print before you open any data sheet.

The one-track Pharmacode encodes a plain number from 3 to 131070. Its data is binary — a run of narrow and wide bars — which is why the range tops out just under a power of two: 2^17 = 131072, so the ceiling is 131072 - 2 = 131070. It carries no letters and no separate check digit, and it exists for packaging-line control: confirming the right carton, leaflet and vial came together.

Code 32, the Italian Pharmacode, is the other one. Its alphabet spans the digits 0 to 9 and the letters A to Z, but an Italian Pharmacode payload is fixed at 8 digits: 7 data digits plus 1 check digit. The bar pattern comes from the Code 39 family, restricted to that numeric payload.

A symbology table lists them as separate entries. Thick-and-thin bars over a plain number is one-track Pharmacode; eight digits printed under the bars is Code 32. Identify yours first, with a loupe rather than from memory.

Why no setting can add a symbology

A fixed reader decodes exactly what its decoder was built with. The symbology table in the model's documentation is the inventory of that decoder, and every enable setting in the configuration tool only switches entries in that table on and off. Symbologies often ship disabled, because a decoder listening for every code at once misreads more — so an entry that is off is normal, and an entry that is absent is final.

That difference is what sends engineers hunting for an enable switch: the scanner's data sheet had a 1D symbology table, and Pharmacode was not in it. No menu path, host command or license file rebuilds a decoder. If the table for the exact model, at the firmware you will run, does not name the symbology, that reader cannot decode it. Plan on a model that does, or on decoding the image somewhere else.

What you need before the check

  • The data sheet or user guide for the exact model and firmware revision, open at the symbology section.
  • Known-good samples of the code as actually printed: one per print source, and both families if the line runs both.
  • A loupe with a scale or a caliper, to measure the narrow bar in millimetres.
  • The real packaging in hand. Foil blister web and glossy labels glare under reader lighting; matte cartons do not.
  • Your integration plan: the trigger source and the barcode reader PLC communication design.

Step by step: confirm support before you order

  1. Open the documentation for the exact model and firmware revision, and find the supported-symbology table, under headings such as 1D symbologies or decode capability.
  2. Search the table for both names: Pharmacode for the one-track code, and Code 32 or Italian Pharmacode for the alphanumeric one. Support for one never implies the other.
  3. Read what the table prints beside each entry — minimum module width and reading distance where the sheet gives them — and compare against your measured narrow bar.
  4. If the symbology you need is absent, stop: the reader is out for that code, and no setting changes it. Go to the exits below.
  5. If it is listed, enable it in the reader's configuration tool or web page, in the symbology settings — codes that ship disabled stay disabled until you switch them on. Set the trigger at the same time; the fixed barcode reader trigger modes guide lays out sensor, serial and free-run options.
  6. Test-decode a sample at the real working distance, at line speed, under the line's lighting. For a first connection over USB, the fixed code reader USB setup walkthrough covers the readback checks.
  7. For Code 32, confirm the returned string is the full 8 digits including the check digit. A 7-digit return means the wrong symbology decoded, or the reader strips the check digit before output.
  8. Present the sample ten times and log each decode; barcode read confidence explains which numbers to trust. Ten clean decodes at line speed is a pass.

The exits when step 4 stops you:

  • Filter the fixed code readers range — the camera finder narrows it by interface, resolution, shutter and mount — then open the symbology table of each shortlisted model before ordering.
  • Move the decode off the reader. A smart camera you program yourself — an X86-platform unit such as the LS-SMC-0017, with an 8.8 MP sensor and a global shutter — can host a decode library that documents Code 32 and hands the string to the PLC.
  • Send us the code sample through the contact page and we will name the models whose tables include it.

Niche symbologies fail this check the same way everywhere: Industrial 2 of 5 support in fixed readers and Micro PDF417 reader support follow the same table-first rule.

Worked example: a 0.50 mm narrow bar across a 100 mm field

This example settles whether resolution could be the reason a read fails, before anyone blames the decoder. Two of the inputs are example values; substitute your measured numbers.

Inputs:

  • Reader: the LS-CRD-0028, whose data sheet prints a 2560 x 2048 sensor and an 8 mm lens.
  • Field of view across the label, measured: 100 mm.
  • Narrow bar of the printed code, measured with the loupe: 0.50 mm.

Rule, in words: sampling theory puts the floor at 2 pixels across the narrowest bar — below that the bar pattern is not resolved at all — and reliable decoding wants 3, so both edges of every bar carry gray values.

px_per_bar = sensor_px_across * bar_mm / fov_mm px_per_mm = sensor_px_across / fov_mm min_bar_mm = 3 / px_per_mm

Arithmetic:

  • Pixels per millimetre: 2560 px / 100 mm = 25.6 px/mm.
  • Pixels per narrow bar: 25.6 px/mm × 0.50 mm = 12.8 px.
  • Largest field of view that still holds 3 px per bar: 2560 px × 0.50 mm / 3 = 426.7 mm.
  • Smallest narrow bar that still yields 3 px at 100 mm: 3 / 25.6 px/mm = 0.117 mm, about 0.12 mm.

Result and decision: 12.8 px per bar is better than four times the working minimum, so the resolution passes with a wide margin. If a reader of this class still fails on your Pharmacode print, the optics are cleared — look at the symbology table first, then at glare, contrast and focus, and never at megapixels. The order is at risk only if the measured bar falls below about 0.12 mm at this field of view; below that, shrink the field of view or move up a resolution tier.

The same trade-off between module size, angle and standoff on moving lines is worked through in Code 128 module size, reading angle and reader distance.

Camera resolution for the smallest feature
Units
Pixels needed
–
Sensor size
– MP
Smallest sensor that fits
–
Pixel on the part
– mm
Pixels across the feature, that sensor
–

Pixels needed = field / feature × pixels per feature on each axis (field incl. margin). The lens must resolve the pixels too: Nyquist = 1000 / (2 × pixel µm) lp/mm.

Find cameras with enough pixels Open the full calculator

Choosing the reader once the table checks out

Symbology first, optics second — never the other way round. Once the table names your code, pick on packaging and speed.

For a single code at close range on foil or glossy stock, take the polarized route: glare off the film kills more pharma reads than any decoder does. The MV-IDB005EXI-05NRP is a 1.3 MP polarized code reader with a 70 mm focus distance.

Fixed code readersHikrobot MV-IDB005EXI-05NRP Fully isolated version, 1.3 MP resolution, 4.63 mm focal length, 70 mm focus distance, Polarized industrial code readerMV-IDB005EXI-05NRP
Interface
Fast Ethernet
Resolution
Up to 3 MP
Shutter
Global
Lens mount
M5.8
$719.00 · quotedView and quote

For bigger label panels, several codes per image or faster webs, step up the sensor tier. The LS-CRD-0028 is a 5 MP reader rated at 60 codes/s with an 8 mm lens. The MV-ID5120RM-08M-RBN is a 12 MP GigE reader for wide fields, and the MV-ID3013PM-12M-WBN is a 1.3 MP compact unit with a 12 mm focal length where mounting space is short. The table below lines up a compact, a mid and a high-resolution model:

Specification LS-CRD-0028 MV-ID5120RM-08M-RBN MV-ID3013PM-12M-WBN
Symbologies 1D: Code 39, Code 93, Code 128, CodaBar, EAN8, EAN13, UPCA, UPCE, ITF14, Matrix 2 of 5, Matrix 25, MSI, China Post, Code 11, Industrial 25; 2D: QR Code, Data Matrix; Stack codes: PDF417 1D codes: Code 39, Code 93, Code 128 (GS1-128 included), CodaBar, EAN 8, EAN 13, UPCA, UPCE, ITF 14, ITF 25, Matrix 25, MSI, China Post, Code 11, Industrial 2of5, and Pharmacode; 2D codes: QR Code (GS1-QR included), Data Matrix (GS1-DM included), MicroQR, AZTEC, HanXin; Stacked codes: PDF417, MicroPDF417 1D codes: Code 39, Code 93, Code 128, CodaBar, EAN 8, EAN 13, UPCA, UPCE, ITF 14, ITF 25, Matrix 25, MSI, China Post, Code 11, and Industrial 25; 2D matrix codes: QR Code (GS1-QR included), Data Matrix (GS1-DM included), MicroQR, AZTEC, HanXin, Maxi code; Stacked codes: PDF417, MicroPDF417
Max. frame rate 30 fps 10 fps 60 fps
Sensor type CMOS Rolling shutter, mono, 1/1.57", 2 μm × 2 μm Global shutter, mono, 1/2.7", 4 μm × 4 μm
Resolution 2560× 2048 px 4096 × 3024 1280 × 1024
Exposure time 35 μs ~ 1 s 33 μs to 1 sec 35 μs to 1 sec
Data interface Fast Ethernet (100 Mbit/s) Gigabit Ethernet (1000 Mbit/s) Fast Ethernet (100 Mbit/s)
Digital I/O 3 non-isolated inputs, 3 non-isolated outputs, 1 RS-232 12-pin M12 connector provides power and I/O, including opto-isolated input (LineIn 0/1/2) × 3, opto-isolated output (LineOut 3/4/5) × 3, RS-232 input × 1, and RS-232 output × 1.; Supports device triggering via pressing button on device and smart tune. 17-pin M12 connector provides power and I/O, including non-isolated input (LineIn 0/1/2) × 3, non-isolated output (LineOut 3/4/5) × 3, RS-232 × 1. Supports device triggering via pressing button on top.;17-pin M12 connector provides power and I/O, including isolated input (LineIn 0/1/2) × 3, isolated output (LineOut 3/4/5) × 3, RS-232 × 1. Supports device triggering via pressing button on top.
Power supply 24 V 24 VDC 24 VDC
Power consumption 20 W @ 24 V Avg.: 15.5 W @ 24 VDC (light source enabled); Max.: 36 W @ 24 VDC (light source enabled) Avg.: 9 W @ 24 VDC (light source enabled); Max.: 48 W @ 24 VDC (light source enabled)
Ingress protection IP67 IP67 (under proper installation of waterproof lens cap) IP67 (under proper installation of waterproof lens cap)
Weight 280 g Approx. 405 g (0.9 lb.) Approx. 280 g (0.6 lb.)
Max. reading speed – 30 codes/sec 84 codes/sec
Price $920.00 $1,969.00 $1,979.00

Values as printed in each product's data sheet; open a part for its drawing and full specifications.

When glare needs hardware rather than a new reader, reader accessories carries polarizing covers and add-on light boards that fit these series. For line-speed limits and strobe timing on conveyors, see high-speed conveyor barcode reading.

Common mistakes that waste a sample run

  • Counting Code 39 as Code 32. The pattern family is shared; the payload is not. Code 32 is restricted to 8 digits with a check digit, and only a table entry named Code 32 guarantees the structure is validated.
  • Testing with the best print in the drawer. Present the worst carton you intend to accept. Improving decode rates on damaged, low-contrast codes covers the image-side fixes once support is proven.
  • Ordering from the finder filters alone. Interface, resolution, shutter and mount say nothing about the symbology set; the filters shortlist, the table decides.
  • Leaving every symbology enabled. On mixed lines this raises cross-reads; enable what the line prints and nothing else.
  • Asking a decoder to grade. Print-quality grading is a separate capability; barcode reader verification for label inspection covers what verification needs beyond a decode.

When the usual answer is wrong

  • The table says Pharmacode and your code is Code 32 — or the reverse. The name collision runs both directions. Confirm with the decoded string, not with the label your team uses for the code.
  • The table names your symbology and the sample still fails. Then it is an image problem, not an inventory problem: work through Pharmacode not decoding: check image and read setup before touching the reader choice.
  • The code sits on clear film or etched metal. Contrast that low is a lighting decision — polarization, angle, backlight — and no decoder list fixes it.
  • The line must grade the print, not just read it. Decode support alone is then the wrong basis for the purchase; buy the grading capability.

The decision, case by case

  • Both symbologies listed: order the model, enable exactly those two, and pass the ten-presentation sample test before the line runs.
  • Only one listed: it covers one family only. If the line runs both codes, the model is out; if it runs one, proceed on that entry.
  • Neither listed: the reader is out. Take a listed model, or move the decode to a camera plus software — do not buy on a promise of a later firmware.
  • Listed, but the sample fails: the reader stays; fix the image. The worked example above tells you whether pixels are even in question.

Checklist before you order

  • Symbology table checked for both names: Pharmacode and Code 32 / Italian Pharmacode.
  • The table belongs to the exact model and firmware you will run.
  • Narrow bar measured in millimetres; pixels per bar at your field of view at 3 or better.
  • Sample decoded ten times at working distance, line speed and line lighting.
  • Code 32 returns all 8 digits, check digit included.
  • Glare plan for foil or glossy labels: a polarized model or a cover.
  • Trigger source and PLC link designed.
  • Volume pricing settled through the quote page.

Ready to build the full station — reader, lens, light, controller and trigger? Start at the system configurator, or run it from the camera step below.

Build the whole station

The configurator matches a camera, lens, light, light controller and cables to each other, step by step, and lists only parts that fit what you already picked.

Start with the camera

Questions

Is Code 32 the same symbology as Pharmacode?

No. One-track Pharmacode is a binary code of narrow and wide bars holding numeric values from 3 to 131070. Code 32, the Italian Pharmacode, is a Code 39-family code whose payload is fixed at 8 digits: 7 data digits plus 1 check digit. A reader must list each separately; support for one never implies the other. Code 32's human-readable string also begins with an A (ASCII 65) that the bars themselves do not encode.

Can a firmware update or license add Pharmacode to a reader that lacks it?

Only if the maker ships a firmware revision whose symbology table for your exact model adds it, and the documentation for that revision says so. Plan the purchase on what the current model documentation lists: a symbology absent from the table for the firmware you will run is unavailable in that device, and no parameter or license file changes it. Buy the model that lists the code today.

How many pixels per narrow bar does decoding need?

Two pixels per narrow bar is the sampling floor — below it the bar pattern is not resolved at all — and three is the practical minimum, so both edges of every bar carry gray values. Pixels per narrow bar equals sensor pixels across, multiplied by the bar width in millimetres, divided by the field of view in millimetres. At 2560 pixels across a 100 mm field of view, a 0.50 mm bar gets 12.8 pixels: ample.

Will a reader that decodes Code 39 also decode Code 32?

No. Code 32 uses a Code 39-style bar pattern but restricts the character set and fixes the length at 8 digits with 1 check digit. A Code 39 decoder will either reject the string or return digits it cannot validate as Italian Pharmacode. The model's symbology table must name Code 32 for the read to count, and the returned string should carry all 8 digits.

Where do I find the symbology list before ordering?

In the model's data sheet or user guide, under supported symbologies, decode capability or the 1D code table. The catalog filters on this site narrow readers by interface, resolution, shutter and mount — symbology support is not a filter — so open the sheet for each shortlisted model, or send the code sample through our contact page and we will name the readers that list it.