سؤال

أواجه مشكلة في إنتاج وتحميل الرسومات لطابعة EPL2.

بعد أن تعبت حرفيا أي قطع من البرامج وتجول الإنترنت ، أنا في حيرة.

لدي ملف 1 بت أحاول تحميله مع البرنامج النصي التالي ..

setppi.txt

GK"NAMEPCX"
GK"NAMEPCX" 
GM"NAMEPCX"3042

ثم التحميل مع

copy setppi.txt+ppirmt.pcx lpt1/b

هل حصل أي شخص لديه خبرة على أي نصائح قبل أن أغضب ما الذي يبقى شعري؟ أنا متأكد تقريبًا من أن هذه المشكلة تتعلق بإنشاء PCX ولكن بعد أن جربت جميع الخيارات ، لست متأكدًا من خطوتي التالية.

هل كانت مفيدة؟

المحلول

ها هي الطريقة التي وجدت بها لإنشاء PCX بشكل صحيح:

في GIMP ، احفظ الملف باعتباره BMP 1 بت (أبيض وأسود). لا تحدد PCX لأن التنسيق المحفوظ ليس PCX 1 بت كما هو مطلوب من قبل الطابعة!

استخدم برنامج تحويل ImageMagick لتحويل BMP إلى PCX.

كانت القضية الأخرى التي واجهتها بعد أن حصلت على أن الرسومات لا تزال فاسدة ، وكانت هذه مشكلة codepage ، لذلك احترس من ذلك.

نصائح أخرى

لا تذكر لغة البرمجة التي تستخدمها.

إذا كان C# (أو .NET عمومًا) ، فإليك منشور مدونة حول طباعة الصور باستخدام EPL:
باستخدام أمر EPL2 GW لإرسال صورة إلى طابعة حرارية حمار وحشي

ونشر مدونة آخر من نفس الرجل ، هذا جعلني أبدأ بطباعة EPL إلى طابعات Zebra مع C#.

هناك طريقتان لإخراج رسومات PCX باستخدام لغة EPL2. الأول هو الشخص الذي اقترحته:

GK"namepcx"
GK"namepcx"
GM"namepcx",3042
..... and here follows monochrome PCX data ...
..... with 128-bit header and following pixel data 1 bit-per pixel..

في وقت لاحق يجب أن تكون قادرًا على كتابة هذا المخزن "namepcx" إلى عازلة صورة الطابعة عبر جنرال موتورز ، لكنني قضيت يومين في تجربة متجر PCX ، لكن لن يتم تخزينه بشكل صحيح أبدًا. لذلك انتهى بي الأمر ببساطة باستخدام GW أمر لكتابة بيانات البكسل مباشرة إلى المخزن المؤقت للطابعات. تجنب "التخزين في ذاكرة الفلاش". كما كان من المفترض أن يكون هذا التخزين "الفلاش" عبر GM هو تخزين بعض الصور (مثل الشعار) والتي ستكرر على جميع العلامات. وبالتالي يمكنك تخزينها مرة واحدة ثم طباعة 10 000 علامة مع نفس الشعار. ومع ذلك ، إذا كانت البارضة من Java ، فعادةً ما تقوم بطباعة العديد من الصور المختلفة على ملصقات مختلفة. وبالتالي ، إذا قمت بتخزين صورة جديدة لكل تسمية ، فسوف "تلبس" ذاكرة الفلاش بسرعة. (على سبيل المثال ، يقول دليل طابعة LP 2824 أن ذاكرة الفلاش لديها فقط 100 ألف دورة كتابة).

لذلك قد يبدو ذلك باستخدام GW لكتابة Imag مباشرة إلى المخزن المؤقت للصور بدلاً من استخدام 3 خطوات GK GM GG قد يكون حلاً أفضل.

إخلاء المسئولية: أنا أكتب حاليًا SVG-to-EPL-Transpiler ، والذي يمكن العثور عليه هنا

كنت أواجه نفس المشكلة مؤخرًا ، وحلها بإرسال أ GW-التوافق للطابعة.

الفرق الرئيسي ل GK-GK-GM-GG هل لا ترسل رأس PCX ، بل البيانات الثنائية الخام (AFAIK بدون ضغط LRE).

لقد استخدمت رمز C# (غير محسّن/ساذج) ، والذي يستخدم بشكل كبير تغيير البتات. يمكن تنفيذ الخوارزمية بأي لغة على الرغم من أنها واضحة:

[NotNull]
public IEnumerable<byte> GetRawBinaryData([NotNull] Bitmap bitmap,
                                          int octetts)
{
  var height = bitmap.Height;
  var width = bitmap.Width;

  for (var y = 0;
        y < height;
        y++)
  {
    for (var octett = 0;
          octett < octetts;
          octett++)
    {
      var value = (int) byte.MaxValue;

      for (var i = 0;
            i < 8;
            i++)
      {
        var x = octett * 8 + i;
        var bitIndex = 7 - i;
        if (x < width)
        {
          var color = bitmap.GetPixel(x,
                                      y);
          if (color.A > 0x32
              || color.R > 0x96 && color.G > 0x96 && color.B > 0x96)
          {
            value &= ~(1 << bitIndex);
          }
        }
      }

      yield return (byte) value;
    }
  }
}

الشيء الذي عليك أن تضعه في الاعتبار للتحويلات:

  • 1: نقطة بيضاء
  • 0: النقطة السوداء
  • width يجب أن يكون مضاعف 8 (حيث نرسل بايت) - الرمز أعلاه يعتني بذلك عن طريق الحشو
  • الدوران/اتجاه التسمية!
  • يتم تنفيذ بعض العتبة هنا ...

لقد نفذت أيضا GM-GG, ، لكن هذا سيتجاوز نطاق هذه الإجابة. يمكن العثور على الرمز ذي الصلة في EplCommands.StoreGraphics(bitmap:Bitmap,name:string).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top