استيراد minibidi.c إلى minibidi.pp

تم بحمد الله استيراد الملف minibidi.c من لغة C إلى لغة الباسكال FreePascal مع بعض التعديل لكي يتناسب مع لغة باسكال، لا يعمل الملف على الدلفي لاستخدام اسلوب FreePascal فقط، و ليس لدي هدف في جعله كذلك.

الخوارزمية مكتوبة الأصلية مكتوبة بلغة السي بواسطة “أحمد خليفة” ضمن فريق arabeyes مشكورين جميعا،  و قد تم اجراء بعض التعديلات عليها من قبل “سيمون” و لكني لم استورد هذه التعديلات بعد.

تهدف الخوارزيمة إلى معالجة الأحرف العربية الـ unicode في متحول نصي من نوع widestring من جهة التوصيل Shaping أو ما يسمى Joining  و من جهة جعل الجملة مرتبة بسياق Right To Left من اليمين إلى اليسار، هذا مفيد في الأجهزة التي التي لا تملك ميزة طباعة النص موصلاً و مرتبا.

الملفات موجودة على المشروع minilib ضمن مسار minilib/lib

أيضا تم استيراد صفحة المحارف cp864 وهو صفحة المحارف (الترميز)  الفونت العربي من IBM لواجهات Console القديمة و لكنه مستخدم في الطابعات الحرارية في النسق النصي السريع.

الملفات موجودة على المشروع minilib ضمن مسار minilib/unicodes

من خلال العملين يمكن الآن جعل النص العربي المقطع في widestring موصلاو مرتبا  و يمكن تحويله إلى نص في صفحة محارف للطابعة الحرارية و إرساله إليها.

مثال


procedure TForm1.Button1Click(Sender: TObject);
var
w: widestring;
begin
Panel1.Canvas.Clear;
w := UTF8Decode(Edit1.Text);
BidiString(w, true, false, bdnContext, bdpRightToLeft);
Draw(w);
end;

مراجع

http://cvs.arabeyes.org/viewcvs/projects/adawat/minibidi
http://svn.tartarus.org/sgt/putty/minibidi.c?r1=8097&view=log
http://portaputty.googlecode.com/svn-history/r6/trunk/minibidi.c
http://www.unicode.org/Public/PROGRAMS/BidiReferenceCpp/
http://unicode.org/cldr/utility/bidi.jsp

Advertisements

15 فكرة على ”استيراد minibidi.c إلى minibidi.pp

  1. هل هذه الطابعة تستخدم رموز cp864؟
    وهل قمت بالطباعة بها من لازاراس؟

  2. الطابعة تستخدم برتوكول ESCPOS (متوافق مع Epson) لديها صفحة محارف عربية cp864 أو ibm864
    http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP864.TXT
    نعم باستخدام لازاروس حصرا لأن الـ minibidi.pp من الصعب ترجمته على الدلفي، و حاليا لم أعد اهتم بالدلفي في المشاريع الجديدة

    الطباعة سهلة
    حدد الفونت في الطابعة باارسال أوامر escpos خاصة
    ارسل المحارف في النص المحول إلى مخرج الطابعة COM

    يوجد مثال في minilib يطبع محارف أو رسومي لطابعة ESCPOS

    http://minilib.svn.sourceforge.net/viewvc/minilib/trunk/MiniComm/demo/escpos/
    يستخدم المكتبة
    http://minilib.svn.sourceforge.net/viewvc/minilib/trunk/MiniComm/printers/escpos/

  3. >>و حاليا لم أعد اهتم بالدلفي في المشاريع الجديدة

    هذه خطوة جريئة وفي اﻹتجاه الصحيح، ربنا يوفقك.

    إحدى مشاكل لازاراس هي عدم صدور النسخة رقم 1، ففي بعض الشركات (مثل الشركة التي أعمل بها) يُمنع إستخدام النسخ البيتا (اﻷقل من النسخة رقم 1)
    أما إذا كان المبرمج يملك نفسه أويعمل لصالحة فليست هناك مشكلة في إستخدام أي أداة، مادام هو مقتنع بها.

  4. هل هذه الطابعة تعمل في نظام لينكس، هل تحتاج تعريف؟

  5. هذه الطابعة حرارية توصل على مخرج تسلسلي COM جميع مزودي الأجهزة للطابعات يعرفونها، مخرج الكوم يجب ان يكون متوفر في الجهاز الخاص بالمطاعم، و برتوكول التخاطب ESCPOS مشهور و متوفر في كل الطابعات.
    لذلك ستعمل مع اللينوكس بسهول إذا وصلتها عبر مكتبة SYNASER
    http://www.ararat.cz/synapse/doku.php/start
    مكتبتي MiniComm لا تعمل على اللينوكس حاليا.

    أما عن لازاراس لاحظت انهم يخططون قريبا على الاصدار 1 من ال BugTracker و ارجو لهم التوفيق، إلا أنني لست مهتما بهذا فانا استعمل آخر svn شغال لدي و كل فترة اعمل تحديث و اقع في مشاكل كالعادة ارسلها عبر الـ BugTracker أو اصلحها إذا كان بمقدوري و ارسل التعديل.
    أمثلة
    http://bugs.freepascal.org/view.php?id=18014
    http://bugs.freepascal.org/view.php?id=17250

  6. قبل حوالي خمس سنين إستخدمت مكتبة لإتصال Com في لازاراس في لينكس، أظنها SynaSer وعملت بها برنامج لقراءة كبانية باناسونك، حيث يقوم البرنامج بتسجيل المكالمات التي تمت في هذا المقسم وإصدار فواتير. وكان يُستخدم في مراكز الإتصالات وبعض الفنادق.

  7. هل يوجد أمر لقطع الورقة أو الفاتورة؟
    وكيف يمكن معرفة أن الطابعة متوافقة مع برتوكول ESCPOS

  8. دائما ارجع إلى كتيب التشغيل، إذا لم يكن هنالك واحد، اترك الطابعة و شأنها و لا تعذب نفسك معها.
    الأمر موجود في الكتيب كذلك أوامر ESCPOS او EPSON و هما متوافقان
    بعض الطابعات لها برنامج معايرة تستطيع استخدامه لمعرفة مزايا هذه الطابعة.

  9. شكراً لهذه المعلومات

  10. لم اقدم المعلومة التي تستحق الشكر
    الشائع في أوامر الطابعة هو
    #$1B+#$69
    أو
    #$1B+#$6D
    يختلف حسب الطابعة و موجود في الكتيب حتما، و يمكن إضافة هذا الأمر إلى الدرايفر في حال لم يك الدرايفر يدعم خيار القطع التلقائي بعد كل أمر

  11. سوف أحاول طباعتهما كمقاطع

  12. قمت بإضافة هذه اﻷسطر:

    Writeln(F, ‘#$1B+#$69’);
    Writeln(F, ‘#$1B+#$6D’);

    لكن للأسف طُبعت كماهي

  13. بدون علامة التنصيص جرب واحدة منها

    Writeln(F, #$1B+#$69);
    Writeln(F, #$1B+#$6D);

  14. ابحث عن ESCPOS.PDF لتجد الكثير من المعلومات
    و هنالك بعض الأوامر في mnESCPOSPrinters.pas
    http://minilib.svn.sourceforge.net/viewvc/minilib/trunk/comm/printers/escpos/

    إذا كانت الطابعة بالفعل تدعم هذا التنسيق جرب المثال في
    http://minilib.svn.sourceforge.net/viewvc/minilib/trunk/comm/demo/escpos/
    المثال مكركب و لكن يوجد فيه طباعة تشبه الطباعة العادية و لكنها بطيئة اسم التابع PrintESCPOS

  15. لم تنقطع أيضاً، يظهر أنها لاتدعم هذا البروتوكول.
    سوف اذهب في إتجاه البحث عن طابعة أخرى إن شاء الله.
    في معظم المحلات عندنا يستخدمون طابعة EPSON، وهي تدعم العربية

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

شعار وردبرس.كوم

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   /  تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   /  تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   /  تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   /  تغيير )

Connecting to %s