Python aan de lopende band
Pim Buurman
X support
<Pim.Buurman@xsupport.nl>
Een klant klopte bij ons aan met het volgende probleem: Hij heeft een lopende band waarop 100 pakjes per minuut langskomen, 2 camera's erboven, en een bandcontroller die communiceert (TCP/IP) welk pakje dit is. Iedere camera fotografeert ieder pakje (10Mb bitmap). Per pakje moet de barcode bepaald worden, het plaatje afgesneden worden tot alleen het pakje, en naar jpeg geconverteerd worden. Barcode en jpeg moeten met het nummer van het pakje teruggestuurd worden. De controlerende server is een dual processor Windows server met speciale camera hardware.

De verschillende basis-blokken zijn simpel, een pagina C code om bv. een camera aan te sturen en een plaatje terug te krijgen.

Het matchen van het plaatje met het pakje is fuzzy (onbekend TCP delay). Er is een cascade van barcode readers, zodat het aantal pakjes waarop een barcode gevonden is, zeer groot is. De real-time eisen impliceren dat de applicatie multi-threading is.

Om van de basis-blokken een goedwerkend programma te maken, hebben we een Python programma gemaakt dat als Windows service draait. De data-intensieve delen worden via extensies in C uitgevoerd.

Het programma voldoet aan de eisen, met name de snelheid van verwerking is goed.


De auteur heeft meer dan 15 jaar ervaring in het bouwen van complexe programma's, vroeger in C, tegenwoordig in Python. Deze applicatie was de eerste met strenge real-time eisen, maar dat was geen belemmering.




Last modified: Sun, 16 Oct 2005 20:50:27 +0200