Tube barcode reading not working

Hi,
A small issue that have been driving me crazy:
I want to unload my carrier with 32 positions, reload it and use my autoload to read the barcodes on each tubes.
The autoload loads the carrier but doesn’t read the tubes.
On any other position with different carriers (e.g. the DWP above greyed out), it works, here, it doesn’t.
I do not see the red light passing over each tubes. I have tried different wild cards but nothing works.

Any idea why?

Thanks a lot!

What labware definition are you using? All of the barcode reading values including if you can read barcodes can be found in the labware properties.

See below for the properties for the default sample carrier with 12x75mm tubes.

If you can export and share your method, then we can confirm the settings that are being used.

You can upload to this link. Password is Hamilton2025

1 Like

Hi Eric,
Indeed, the CountofBCPos was set to 0.
I corrected it and now, it works, many thanks!

However, I have a few other issues and questions:
1) I am scanning my tubes and I am getting this error:

The barcodes were generated in excel using the font Libre Barcode 39 and all the barcodes were then printed on AVERY 5167 stickers.

2) I am trying to fully understands how the logic of building an array of barcodes works and something doesn’t click:

  • we use the load carrier step to load the carrier and scan the barcodes
  • the barcodes are temporary stored in a txt file:
  • then, we create an empty array, use a loop and use the step GetLabwareBarcode from AppsLib 1.7 to retrieve the barcodes:
  • But that steps asks for a sequence, while the barcodes were stored in a text file…
    I am missing the link between the text file and the sequence.

Thank you very much!

The text file generated by the Load Single Step is one way to get the barcode values. However, I would recommend using the built-in sample tracking function, which functions like the GetLabwareBarcode utilizes. The important thing to note is that whenever you perform any Load step on the system, the barcodes, along with the labware and position ids are automatically entered into the Sample Tracking database.

Please refer to this thread for a great overview of the different Load steps you could use.

I find using the Load Smart Step to be the most straightforward and powerful, as you can load via a sequence. This same sequence can then be used when you call out to functions such as the GetLabwareBarcode.

There are other posts and examples for barcode handling/matching that you can find on the forum, but this post would help get you started!

1 Like

Amazing, thank you very much.

Regarding the issue reading my barcodes and the error the system returns, do you have any idea why? Is it the way I generated my barcodes (Code 39 in excel).

Best,

1 Like

Can you please upload the trace file for the run using the link I provided above and share a picture of what the barcodes look like in the sample carrier?

Which platform are you using? If you have access to the operator’s manual, there is a section for barcode specifications. Often, misreads are either due to print quality or lack of white space, etc. that doesn’t conform to the specifications.

Hi @KevinJ,

Do you have Code 39 enabled in the VENUS system configuration editor?

1 Like

Hi Matt,
Yes, Code39 is enabled:

Thank you

1 Like

Hi Eric,
I have uploaded the files using the link you provided.
I have a Starlet. I tried using barcodes on tubes and containers:



Hi @KevinJ,

Would you be able to download the Cognex app on your phone and see if you can read these barcodes with that? I am seeing underscore characters in your plate barcodes which are not typically part of code 39 language. Also, most if not all 1D barcode languages have specific start and stop sequences that specify where a camera should start and stop reading. If these are code 39 barcodes, the start and stop sequences are the asterisk character designated in barcode symbology for code 39 and I am not seeing those sequences in the barcodes found in your images.

Matt

1 Like

Hi Matt, thank you for your answer,
I will check that on Monday.

Also, I was thinking about slowing down the load speed to give more time for the reader to scan those barcodes.

On other topics, I found the command: MlStarBarcodeReadSpeed that can be added to the labware property.
I have tried to add this option here with an initial value of 50 (for 50%).

I didn`t do anything.

Is that the right way of doing it? Any advice on that?

Thanks a lot

Hi @KevinJ,

I have rarely if ever had to slow down the barcode reading speed, especially for 1D barcodes. I took a look again at the barcodes you are using so go ahead and take a look at the following image:

Assuming this is a Code39 barcode and this particular sample tube is labeled as HPQC-1, it is definitely missing the start and stop signals that are required to tell the barcode reader where to start reading and where to stop reading. A Code39 barcode that says HPQC-1 should look like *HPQC-1*.

Matt

2 Likes

I Matt,
Indeed, I corrected my barcodes and now, I can scan them with my phone.

Out of curiosity, how can I slow down the speed of the loading step?
Is that the right function: MlStarBarcodeReadSpeed
How are values working? in %? (100 = full speed?)

Thanks a lot!

Check out this post. It’s not a percentage, it’s a speed value:

Property key: MlStarBarcodeReadSpeed
Property value: ~500 (default is 1281; 128.1mm/s)

3 Likes

Amazing, thanks a lot!

Last question:
I managed to make my tube reading work. I am now trying to scan 5 plates each having a barcode. That is the block of code I used for my tubes:

Basically:
Create a sequence with the tubes, load the rack, scan every position with labware, retrieve BC value based on the sequence, populate an array.

I am trying to apply the same for my plates but each plate has 96 positions. I tried a few thing but every time, my method returns an empty barcode. What is the good way to create the sequence?


Thanks a lot

Hi @KevinJ

The labware level for racks (plates) as managed by the sample tracking database is 300. The value 400 that you are using maps to individual containers of a rack or plate.

The return of an empty string is expected without explicitly applying individual barcodes to the requested well positions. In your case, update 400 to 300 for the labware level and it should work as expected.

Thanks.

-Nick

2 Likes

Thank a lot Nick!
So, my sequence with 1 well per plate is good?

Cheers

Yes, it’s perfect!