delphi4arab منتديات دلفي للعرب

نسخة كاملة : قراءة الباركود في دلفي
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
المشروع ZBar for Windows لقرائة الباركود بأنواعه عبر استخدام كاميرا الويب او ملف صورة
كود :
http://sourceforge.net/projects/zbarw/files/

الكود المصدري مع بعض الامثلة لاستخدام ملفات الـ DLL بعدة لغات منها C , C++, pERL , PYTHON .
مع توفر ملفات Header لكل منها .
كود :
http://sourceforge.net/p/zbarw/code/ci/default/tarball

بحثت كثيرا عن مثال بالدلفي لكني لم اجد الا سورس لقرائة الباركود من ملف صورة فقط .

ان امكن احد الاخوة استخدام مكتبة ZBar.pas الموجودة في نفس المشروع للقراءة من الويب كام
هناك امثلة للاستخدام مع السي ++.


كود :
#include <iostream> #include <zbar.h> using namespace std; using namespace zbar; class MyHandler : public Image::Handler { void image_callback (Image &image) { for(SymbolIterator symbol = image.symbol_begin(); symbol != image.symbol_end(); ++symbol) cout << "decoded " << symbol->get_type_name() << " symbol " << "\"" << symbol->get_data() << "\"" << endl; } }; int main (int argc, char **argv) { // create and initialize a Processor const char *device = "/dev/video0"; if(argc > 1) device = argv[1]; Processor proc(true, device); // configure the Processor proc.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1); // setup a callback MyHandler my_handler; proc.set_handler(my_handler); // enable the preview window proc.set_visible(); proc.set_active(); try { // keep scanning until user provides key/mouse input proc.user_wait(); } catch(ClosedError &e) { } return(0); }
كيف تحويل الكود الي دلفي
كود :
#include <iostream> #include <zbar.h> using namespace std; using namespace zbar; class MyHandler : public Image::Handler { void image_callback (Image &image) { for(SymbolIterator symbol = image.symbol_begin(); symbol != image.symbol_end(); ++symbol) cout << "decoded " << symbol->get_type_name() << " symbol " << "\"" << symbol->get_data() << "\"" << endl; } }; int main (int argc, char **argv) { // create and initialize a Processor const char *device = "/dev/video0"; if(argc > 1) device = argv[1]; Processor proc(true, device); // configure the Processor proc.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1); // setup a callback MyHandler my_handler; proc.set_handler(my_handler); // enable the preview window proc.set_visible(); proc.set_active(); try { // keep scanning until user provides key/mouse input proc.user_wait(); } catch(ClosedError &e) { } return(0); }
أخي ألا يوجد كود بالبسكال يعمل نفس عمل ......لأنني لست متمكن للغة c .
قمت بكاتبة البرنامج بدلفي مند عدة أيام اقدمه لكم


كود :
program Project2; {$APPTYPE CONSOLE} uses SysUtils, Zbar in 'Zbar.pas'; var device: pansichar; proc : zbar_processor_t; symbol:zbar_symbol_t; image : zbar_image_t ; procedure MyHandler(img: zbar_image_t; userdata: Pointer); cdecl; var sym:zbar_symbol_t; stype : zbar_symbol_type_t; begin sym := zbar_image_first_symbol(img); stype := zbar_symbol_get_type(sym); writeln(zbar_get_symbol_name(stype), zbar_get_addon_name(stype), zbar_symbol_get_data(sym)); writeln(zbar_get_symbol_name(stype), zbar_get_addon_name(stype), zbar_symbol_get_data(sym)); end; begin try device:= '/dev/video0'; //create a Processor proc := zbar_processor_create(1); //initialize the Processor zbar_processor_init(proc, device, 1); // setup a callback //My_Handler.Create ; zbar_processor_set_data_handler(proc, MyHandler, nil); //enable the preview window zbar_processor_set_visible(proc, 1); zbar_processor_set_active(proc, 1); //keep scanning until user provides key-mouse input try zbar_processor_user_wait(proc, -1); finally end; //clean up */ zbar_processor_destroy(proc); readln; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
مثال على الاستخدام في دلفي في مشروعين للتحميل

كود :
http://www.mediafire.com/download/wt77ho7sanzad1b/Zbar_Cam_Scanner_Win.rar

كود :
http://www.mediafire.com/download/wt77ho7sanzad1b/Zbar_Cam_Scanner_Win.rar


الفارق بين الكود السابق في سي++ هو قراءة الرموز الموجودة في الصورة الملتقطة باستخدام حلقة تكرارية أي انه لو وجد اكثر من رمز باركود سيتم قرائتها كلها.

غير انني في المثال المرفق اكتفيت بقراءة رمز واحد و ههو الأول.


يمكنك بهدا المثال الاستغناء عن قارئ الباركود و تعويضه بكاميرا الكمبيوتر 'Webcam'.