مرة واحدة ، في أحد المشاريع ، سقطت طابعة مالية في يدي. نواجه هذه الأجهزة كل يوم عندما نقوم بالدفع في المتاجر ، لكن قلة من الناس تدرك ما هي عليه بالفعل. لن أخوض في تفاصيل أعمالهم ، سأقول فقط إن هذه هي الأشياء التي تطبع إيصالات بها بيانات شراء على ورق حراري خاص (نعم ، جميع الطابعات المالية تقريبًا لا تحتوي على حبر!).
اضطررت إلى معرفة كيفية الحصول على حالة عمل الطابعة المالية وإعداداتها الداخلية. تم الانتهاء من المهمة منذ وقت طويل ، وتم التخلي عن الطابعة المالية لفترة طويلة في الركن البعيد ... إلى أن حصلت على فكرة إعادة الإنشاء: D
تتيح لك هذه الطابعات طباعة الصور أحادية اللون. عندما كان لدي ما يكفي من المطبوعات الكافية من الأختام والشعارات وصور الزملاء ، قررت التلويح إلى
نسيج طويل قائم على السلسلة التي قتلوا فيها شخصًا دائمًا بكلمات "الشتاء يقترب" .
كان الإخراج مثل هذا الفيديو:
خطوات مفصلة لطباعة نسيج في
الثعبان أسفل القط أدناه.
في هذه المقالة ، سوف أصف بإيجاز الإجراء بتعليقات تفصيلية ، على افتراض أن الإخراج سيكون مقالة تدريبية تحتوي على العديد من المهارات العملية المفيدة:
- قم بتنزيل فيديو نسيج من يوتيوب
- إنشاء صورة نسيج أحادية اللون طويلة للطباعة على طابعة مالية
- الاتصال بالطابعة المالية
- طباعة نسيج على طابعة مالية
- نقوم بتنزيل مقطع الفيديو الناتج للنشر في الشبكات الاجتماعية
قم بتنزيل فيديو نسيج من يوتيوب
يتم ذلك ببساطة شديدة باستخدام مكتبة
pytube ، ما عليك سوى تحديد فهرس دفق الفيديو الذي ستقوم بتنزيله.
وظيفة لتنزيل الفيديو من يوتيوب:import time, pytube
عند تنفيذ خط
for stream in streams: print(stream)
، نرى في وحدة التحكم قائمة بجميع تدفقات الفيديو الموجودة في الفيديو:
<Stream: itag = "22" mime_type = "video / mp4" res = "720p" fps = "30fps" vcodec = "avc1.64001F" acodec = "mp4a.40.2">
<Stream: itag = "43" mime_type = "video / webm" res = "360p" fps = "30fps" vcodec = "vp8.0" acodec = "vorbis">
<Stream: itag = "18" mime_type = "video / mp4" res = "360p" fps = "30fps" vcodec = "avc1.42001E" acodec = "mp4a.40.2">
<Stream: itag = "137" mime_type = "video / mp4" res = "1080p" fps = "30fps" vcodec = "avc1.640028">
<Stream: itag = "248" mime_type = "video / webm" res = "1080p" fps = "30fps" vcodec = "vp9">
<Stream: itag = "136" mime_type = "video / mp4" res = "720p" fps = "30fps" vcodec = "avc1.4d401f">
<Stream: itag = "247" mime_type = "video / webm" res = "720p" fps = "30fps" vcodec = "vp9">
<Stream: itag = "135" mime_type = "video / mp4" res = "480p" fps = "30fps" vcodec = "avc1.4d401e">
<Stream: itag = "244" mime_type = "video / webm" res = "480p" fps = "30fps" vcodec = "vp9">
<Stream: itag = "134" mime_type = "video / mp4" res = "360p" fps = "30fps" vcodec = "avc1.4d401e">
<Stream: itag = "243" mime_type = "video / webm" res = "360p" fps = "30fps" vcodec = "vp9">
<Stream: itag = "133" mime_type = "video / mp4" res = "240p" fps = "30fps" vcodec = "avc1.4d4015">
<Stream: itag = "242" mime_type = "video / webm" res = "240p" fps = "30fps" vcodec = "vp9">
<Stream: itag = "160" mime_type = "video / mp4" res = "144p" fps = "30fps" vcodec = "avc1.4d400c">
<Stream: itag = "278" mime_type = "video / webm" res = "144p" fps = "30fps" vcodec = "vp9">
<Stream: itag = "140" mime_type = "audio / mp4" abr = "128kbps" acodec = "mp4a.40.2">
<Stream: itag = "249" mime_type = "audio / webm" abr = "50kbps" acodec = "opus">
<Stream: itag = "250" mime_type = "audio / webm" abr = "70kbps" acodec = "opus">
<Stream: itag = "251" mime_type = "audio / webm" abr = "160kbps" acodec = "opus">
اخترت موضوع مع معرف 18 ل إنها دقة صغيرة - لا نزال نطبعها على شريط فحص ، وننزلها بشكل أسرع))
قم بإنشاء صورة نسيج أحادية اللون طويلة للطباعة على طابعة مالية
لمعالجة الفيديو ، نحتاج إلى مكتبة
OpenCV ووسادة معروفة
(شوكة حديثة لـ PIL) (على الرغم من أننا هنا بدلاً من OpenCV يمكننا استخدام الأداة المساعدة
avconv من أداة
libav ، المزيد عنها في القسم الأخير من هذه المقالة). شكراً جزيلاً للمؤلف على كتابته python أو
python-opencv ، وهي عبارة عن عجلة python ، مثبتة عبر PIP ولا تتطلب تثبيت OpenCV نفسه (
الصيحة! ).
لا يمكن للطابعة المالية سوى طباعة الصور الخاصة - ملفات bmp أحادية اللون ذات عرض ثابت يبلغ 528 بكسل (ولكن الطول غير المحدود ، ho-ho-ho!). بالإضافة إلى ذلك ، فإن صورة نسيج في مقطع الفيديو تتحرك باستمرار ، لذلك نحن بحاجة إلى قطع الإطارات بعناية حتى نحصل على صورة واحدة طويلة.
كل هذا يتم بواسطة الوظيفة التالية: import os, cv2, numpy as np from PIL import Image
في الإخراج ، نحصل على صورة طويلة مع صورة نسيج كامل ، فقط جزء موضح أدناه ، الصورة الأصلية يبلغ عرضها 55000 بكسل ولا تمر وفقًا لقواعد النشر:

ولكن يتم الحصول على مثل هذه الصورة بعد تحويلات أحادية اللون ، فقط بدون تدوير:

نقوم بطباعة نسيج على طابعة مالية
لديّ طابعة مالية محددة لطراز Atol fprint-22 تحت تصرفي ، لكن القواعد العامة تنطبق على نماذج الطابعة المالية الأخرى. علاوة على ذلك ، فإن كتابي المالي قديم جدًا ولا يدعم متطلبات FZ-54 الجديدة الفتية (أذكر أنه بعد دخول هذا القانون حيز التنفيذ ، اضطر جميع المسؤولين الماليين إلى إرسال البيانات من خلال OFD إلى مكتب الضرائب ، والتي تنطوي على الألم والمعاناة - وميض من كل جهاز).
استطرادا صغيرا عن الطابعات المالية. إنها تتعلق بأجهزة نقاط البيع - وهذا هو كل أنواع الأجهزة الطرفية لتلبية احتياجات التجارة ، والتي ترتبط بجهاز كمبيوتر ومتكاملة في نظام واحد للمحاسبة والدفع. من بين هذه الأجهزة المعروفة ، شاهدت بالتأكيد ماسحات الباركود ومحطات الدفع ببطاقات الائتمان. لكل هذه الأجهزة ، تم اختراع بروتوكول تفاعل موحد UnifiedPOS.
باختصار ، هذا موضوع منفصل ودائرة ضيقة جدًا من المتخصصين المشاركين في أجهزة نقاط البيع. يكون الموقف معقدًا بسبب حقيقة أن معظم هذه الأجهزة مصممة للعمل حصريًا ضمن Windows من خلال كائنات COM - ملفات dll مع وصف وثائقي رديء جدًا للوظيفة. على الرغم من أنني سمعت عن أنظمة النقد التي تعمل بموجب FreeBSD ، إلا أنني لم أر شيئًا من هذا القبيل أثناء العمل مع أجهزة نقاط البيع ، ولحسن الحظ ، لم أكن بحاجة إلى غمر مفصل في عالم عمليات البيع بالتجزئة في نقاط البيع بالتجزئة ...
لذلك ، فإن إجراء العمل مع معظم هذه الأجهزة هو كما يلي:
- تم تثبيت برنامج التشغيل من الشركة المصنعة
- تم تكوين الاتصال بالجهاز من خلال الأداة المساعدة للشركة المصنعة
- تبحث عن مفتاح التسجيل المطلوب مع الجهاز المطلوب
- البحث عن الإعدادات اللازمة للاتصال به
(معظم العمل على واجهة البرنامج التسلسلي RS-232) - الاتصال بالجهاز من خلال كائن COM لبرنامج تشغيل الشركة المصنعة
- العمل مع الجهاز من خلال كائن API COM
- يتم تحرير كائن COM والمنفذ الفعلي للجهاز
( نقطة مهمة )
نظرًا لأن لديّ دفتر مالي قديم تحت تصرفي ، يتم استخدام برنامج التشغيل الخاص به خصيصًا للإصدار الثامن. الآن قامت الشركة المصنعة بإضافة برنامج تشغيل للنسخة العاشرة ، والذي يبسط إلى حد كبير العمل مع طابعة مالية من خلال وحدة تغليف بيثون منفصلة ، والتي تعتبر أخبارًا جيدة.
توضح التعليمة البرمجية التالية وظيفة تتصل بطابعة مالية باستخدام الخوارزمية الموصوفة أعلاه ، وتصدر صوتًا ، وتطبع صورة نسيج أحادية اللون تم الحصول عليها مسبقًا. سنحتاج إلى تثبيت
pywin32 .
تبين أن الشفرة طويلة جدًا ومملة ، لذا فقد وضعت تحت المفسد: import win32com.client from _winreg import HKEY_CURRENT_USER, OpenKey, EnumValue
كان الإخراج عبارة عن مخطوطة ، عرض على "أغنية من الجليد والنار":

عادت الطابعة أخيرًا ، وطبعت ببطء وباهتة ، ثم انتهت تمامًا من طباعة المشهد النهائي فقط - لم تشهد أي طابعة مالية واحدة مثل هذا الحمل: D
يبقى لإعداد الفيديو ونشره على الشبكة الاجتماعية.
كمسلسل صوتي
، وجدت
تركيبة للهواة على شبكة
8bit - موضوع عنوان السلسلة . كانت الفكرة هي فرض بعضنا البعض دون استخدام محرر فيديو على الإطلاق ، سأكتب عن ذلك لاحقًا في الجزء الأخير من المقال.
نقوم بتنزيل مقطع الفيديو الناتج للنشر في الشبكات الاجتماعية
لهذه الأغراض ، هناك أداة وحدة تحكم مفيدة وقوية للغاية تحل محل محرر الفيديو بأكمله - libav . وهو يتضمن أدوات مساعدة avconf و ffmpeg للعمل مع ملفات الفيديو والصوت. بصراحة ، بالنسبة لي كانت هذه الأداة اكتشافًا حقيقيًا ، أوصي به الجميع!
الفكرة الأساسية للتثبيت:
- قطع من لقطة الفيديو على جزء الهاتف الذكي في البداية وجزء في النهاية
(لتناسب ملف mp3 مع موسيقى 8bit لثلاث مسرحيات) - اكتب 3 خسائر لملفات الصوت في ملف واحد
- تراكب ملف الفيديو وملف الصوت في ملف فيديو جديد
- تحويل ملف الفيديو من صيغة mov إلى صيغة mp4
(يقوم هاتفي الذكي بتصوير مقاطع الفيديو باستخدام ملحق mov)
لهذه الأغراض ، كتبت نصًا لتشغيله على سطر الأوامر ، والذي يمكن تنفيذه على حد سواء bash in linux و bat in win (تتم الإشارة إلى الاختلافات في تعليقات البرنامج النصي): # avconv -ss 00:00:10 -i got_print.mov -t 00:06:00 -c:v copy got_print_tmp.mov # ( win) (echo file 'got_8bit.mp3' & echo file 'got_8bit.mp3' & echo file 'got_8bit.mp3') > list.txt # ( linux) # cat list.txt # file 'got_8bit.mp3' # file 'got_8bit.mp3' # file 'got_8bit.mp3' # 3 ffmpeg -f concat -i list.txt -acodec copy got_8bit_3.mp3 # avconv -i got_print_tmp.mov -i got_8bit_3.mp3 -c copy got_print_final.mov # mp4 avconv -i got_print_final.mov -c:v libx264 got_print_final.mp4 # (windows) del got_8bit_3.mp3 del got_print_tmp.mov # (linux) # rm got_8bit_3.mp3 # rm got_print_tmp.mov
هذا كل شيء ، يتم إنشاء الفيديو:
ملحوظة: مقالتي الأولى عن حبري ، التي خططت لكتابة مقالة قصيرة للبداية ، قص ما أمكنني ذلك) آمل أن تكون القراءة ممتعة ، وأن تكون نتيجة عملي مثيرة للاهتمام)