پروتکل esc pos. دستور ESC POS ESC * برای چاپ بیت مپ در چاپگر

تعداد کمی از مردم در هنگام خرید از فروشگاه به نحوه عملکرد فناوری صندوقدار فکر می کنند. در واقع این یک مکانیزم روغن کاری شده است، نه تنها از نظر فنی، بلکه از نظر حقوقی نیز. همه می دانند که نکته اصلی دریافت چک است، اما فقط خود کارآفرینان می دانند که چرا چک یک سند مالی است که خرید را تأیید می کند.

در این مقاله ما تجربه خود را در توسعه صندوق پول به اشتراک می گذاریم و به شما می گوییم که چگونه همه چیز از داخل کار می کند.



صندوق پول قدیمی

1. سیستم: سخت افزار + نرم افزار در صندوق

کل مجموعه نرم افزاری و سخت افزاری که در محل کار صندوقدار نصب می شود را می توان سیستم POS یا پایانه POS از نقطه فروش انگلیسی - محل فروش نامید.

بیایید نحوه عملکرد یک سیستم POS را بررسی کنیم. از آنجایی که تفاوت اساسی بین سیستم و ترمینال در محل حافظه مالی (FP) یا حافظه مالی (FN) است: برای یک سیستم POS در دستگاه چاپ تعبیه شده است و برای یک پایانه POS در رایانه قرار دارد. واحد


صندوق دار معمولی. سیستم POS شرکت روسی"SHTRIKH-M"

سیستم POS - یک مجموعه نرم افزاری و سخت افزاری که بر اساس یک ثبت مالی فعالیت می کند. به طور معمول شامل یک کامپیوتر POS، مانیتور و صفحه کلید، چاپگر رسید، ضبط مالی، نمایشگر مشتری، کشو پول نقد و خواننده است. کارت های بانکی. مجموعه ای از عملکردهای نقدی معمولی: حسابداری و صدور کالا، دریافت و صدور پول، لغو خرید.

جالب ترین قسمت سیستم POS این است ثبت مالی - این قلب سیستم و یکی از کلاس های ماشین های صندوق فروش (CCM) است.

یک چاپگر رسید با حافظه مالی داخلی به عنوان یک ثبت کننده مالی عمل می کند. اطلاعات را از طریق یک کانال ارتباطی دریافت می کند، آنها را پردازش و چاپ می کند. داده‌های مربوط به تراکنش‌های نقدی را می‌توان تا زمانی که نیاز به تنظیم مجدد داشته باشد در حافظه مالی ذخیره کرد.

یک سرور برای انتقال مستقیم داده ها از ثبت کننده مالی به خدمات مالیاتی استفاده می شود اپراتور داده های مالی - OFD - یک شخص حقوقی خاص که مسئولیت دریافت، پردازش، ذخیره و انتقال داده های مالی به سازمان مالیاتی را بر عهده دارد.

سال گذشته، کارآفرینان روسی به طور فعال در مورد انتقال به صندوق های نقدی آنلاین و ارسال چک به اداره مالیات از طریق OFD در رابطه با تصویب قانون 54-FZ "در مورد استفاده از تجهیزات صندوق پول" بحث کردند.


نقش OFD. نمودار از مقاله ای در مورد 54-FZ و انتقال به صندوق های پول آنلاین

FTS خدمات مالیاتی فدرال است فدراسیون روسیه. در قزاقستان، این وظیفه توسط کمیته درآمد دولتی وزارت دارایی انجام می شود. و در بلاروس - وزارت مالیات و عوارض.

چندین OFD در فدراسیون روسیه فعال هستند، اما در قزاقستان تنها یک شرکت وجود دارد، قزاقتلکام JSC.

2. قانون گذاری: کنترل آنلاین جهانی صندوق های نقدی

کنترل آنلاین کار خرده فروشیدر حال حاضر در بسیاری از کشورها فعال است: کره جنوبی (2005)، سوئد (2008)، کانادا (2010)، لهستان (2011)، کرواسی (2013). در سال 2015 این رویکرد در قزاقستان اجرا شد. و در بلاروس، مهلت اتصال صندوق های نقدی به سیستم کنترل درآمد از راه دور به 1 ژوئیه 2018 موکول شد (همان مهلت در روسیه برنامه ریزی شده است).

استفاده از دستگاه های پول نقد آنلاین در قزاقستان توسط فصل 90 قانون مالیات تنظیم می شود. از سال 2015، فروشندگان سوخت و الکل شروع به انتقال رسیدها به اداره مالیات از طریق اینترنت کردند. در مرحله دوم - از سال 2016 - کسانی که در تجارت عمده فروشی مواد و تجهیزات مختلف فعالیت داشتند به سیستم متصل شدند. خرده فروشی مبلمان، نرم افزار و لوازم الکترونیکی؛ صاحبان هتل ها، رستوران ها، آرایشگاه ها و سینماها. مرحله سوم پروژه پیش بینی شده است.

ما به دلایلی به قوانین مراجعه می کنیم. آنها الزامات فنی اجباری برای سیستم های نرم افزاری و سخت افزاری را برای جمع آوری و ارسال داده ها به اداره مالیات توصیف می کنند. وظایف مهندسان توسعه به عنوان مثال، در دستور وزیر دارایی جمهوری قزاقستان، فهرستی از الزامات یک صندوق نقدی برای انتقال اطلاعات در مورد پرداخت های نقدی منتشر شد که برای ما در توسعه یک ثبت مالی بسیار مفید بود.

3. طراحی و منطق تجاری اداره ثبت مالی

دستگاه توسعه اولیه ما یک چاپگر رسید حرارتی است. سیستم مونتاژ Buildroot است. برنامه نویسی - در Qt.

این پروژه مستلزم توسعه موارد زیر بود:

1) مشخصات فنی؛
2) یک پروتکل تبادل با یک کامپیوتر POS، اجازه دهید آن را پروتکل POS-C بنامیم.
3) برنامه دیمون که دستگاه را کنترل می کند:

  • ماژول تبادل داده با سرور OFD با استفاده از پروتکل CCT (تجهیزات صندوق نقدی)؛
  • ماژول تبادل داده با رایانه POS با استفاده از پروتکل POS-C.
  • ماژول کنترل چاپ؛
  • ماژول کنترل رابط ارتباطی؛
  • ماژول تعامل با پایگاه داده؛
  • وب سرور

1) ماژول تبادل داده با سرور OFD

تبادل بین دستگاه و سرور با استفاده از پروتکل TCP/IP انجام می شود. در این تعامل، دستگاه مشتری است و OFD سرور است. بافرهای پروتکل به عنوان پایه ای برای رمزگذاری و رمزگشایی اطلاعات ارسال شده از طریق پروتکل CCP استفاده می شود.

هدف از رابط وب:

  1. تنظیم پارامترها؛
  2. مشاهده وضعیت دستگاه؛
  3. به روز رسانی نرم افزار


رابط وب

4. نتیجه گیری

بر اساس فناوری های ذکر شده، ما دستگاهی با عملکردها و تنظیمات بسیار از طریق یک رابط وب، پشتیبانی از پروتکل های تبادل مختلف با رایانه POS و قابلیت به روز رسانی نرم افزار توسعه داده ایم.

و اکنون به نظر می رسد که تیم مهندسی Promwad هرگز نمی تواند فقط به فروشگاه بیاید و چیزی بخرد بدون اینکه به تمام این موارد داخلی صندوق های پول آنلاین، پروتکل های انتقال داده ها، الزامات قانونی و چاپ کل این آشپزخانه فکر کند:
- چک را بگیر لطفا!
- ممنون، نیازی نیست! :-)

P.S. و در نهایت، یک لحظه طنز: یوفولوژیست های بریتانیایی از تیم ArtAlienTV در تصاویر مریخ نورد کنجکاوی شیئی شبیه به صندوق پول قدیمی کشف کردند.

ESC * یکی از چندین دستور "بیت تصویر" در ESC/POS است. داده‌های «قالب ستونی» را می‌پذیرد، که فقط می‌تواند یک ردیف 8 یا 24 پیکسلی را نشان دهد. بنابراین دو گزینه خوب در اینجا وجود دارد.

چاپ چند خط با استفاده از ESC*

به نظر می رسد که می توانید یک خط چاپ کنید، بنابراین من فرض می کنم که فرمت داده خود مشکل نیست.

می‌توانید چند خط را با تکرار دستور چاپ خطوط اضافی که با \n شکستگی از هم جدا شده‌اند، چاپ کنید. این کار مستلزم برش دادن تصویر و پر کردن آن با فضا است تا ارتفاع آن مضربی از 8 یا 24 پیکسل باشد (باز هم به دلیل فرمت).

به دلیل فاصله بین خطوط، باید دستور تغییر اندازه کانال های خطی را در حین چاپ تصویر صادر کنید و سپس دستور دیگری را برای تنظیم مجدد آنها در انتها صادر کنید.

من از ESC 3 0x10 برای خطوط 16 کانالی (بایت 0x1b 0x33 0x10) و ESC 2 (بایت 0x1b 0x32) برای تنظیم مجدد استفاده می کنم.

این روش چاپ سازگاری بسیار خوبی با چاپگرهای قدیمی دارد، اما ممکن است به مقداری نازک برسید خطوط افقیدر سیگنال خروجی

کل تصویر را با GS v 0 چاپ کنید

این بیت از فرمان تصویر داده‌های مختلف «فرمت شطرنجی» را می‌پذیرد. من از این واقعیت استفاده می کنم که یک حباب در این فرمت با داده های باینری در یک قالب پرکاربرد یکسان است. بیت مپ PBM (به طور خاص داده های باینری در فایل هایی با هدر P4).

ارتفاع تصویر بسته به اندازه بافر چاپ شما محدود می شود، اما می تواند تا 65535 پیکسل باشد. به دلیل نمایش، عرض باید بر 8 تقسیم شود.

ESC/POS مجموعه دستوراتی است که چاپگر رسید را چاپ می‌کند.

مقدمه

قبل از شروع، سه چیز وجود دارد که باید در مورد ESC/POS بدانید:

  1. اکثر چاپگرهای رسید مدرن به شکلی از آن پشتیبانی می کنند.
  2. نوشتن آن بسیار ساده است.
  3. دستورات با یک کاراکتر ESC (ASCII 27) شروع می شوند.

اتفاقا رسید چاپ شده در ویدیوی بالا نمونه ای از مخزن escpos-php است. من این پرینت را بررسی می کنم، زیرا تمام ویژگی های اساسی ESC/POS را نشان می دهد.

ساختار فرمان

چهار کاراکتر ASCII خاص در توالی دستورات ظاهر می شوند -

مخفف نام کد (Hex)
NUL پوچ 0x00
LF تغذیه خط 0x0A
ESC فرار کنید 0x1B
G.S. جداکننده گروه 0x1D

متن معمولی به سادگی به چاپگر فرستاده می‌شود و با خطوط شکسته از هم جدا می‌شود. دستورات با ESC یا GS شروع می شوند و با یک کاراکتر قابل چاپ و گاهی اوقات تعدادی اعداد دنبال می شوند

اعداد به سادگی به عنوان یک کاراکتر منتقل می شوند. به عنوان مثال، '5' به عنوان 0x05 ارسال می شود.

نمونه ها

مقدار دهی اولیه

هنگامی که برای اولین بار به چاپگر متصل می شوید، باید آن را مقداردهی اولیه کنید. این به قالب‌بندی پیش‌فرض برمی‌گردد، به جای فونت دو خطی سه‌گانه که ممکن است چاپ قبلی از آن استفاده کرده باشد.

دستور بازنشانی قالب بندی به صورت زیر است:

نیاز به __DIR__. "/autoload.php"؛ از Mike42\Escpos\Printer استفاده کنید. از Mike42\Escpos\PrintConnectors\FilePrintConnector استفاده کنید. $connector = New FilePrintConnector("/dev/usb/lp0"); $printer = چاپگر جدید ($connector); $printer -> close();

00000000 1b 40 |.@| 00000003

متن "سلام دنیا".

این ساده ترین نوع رسید است و فقط حاوی متنی بدون قالب است.

متن به سادگی به چاپگر ارسال می شود و با فیدهای خط جدا می شود.

نیاز به __DIR__. "/autoload.php"؛ از Mike42\Escpos\Printer استفاده کنید. از Mike42\Escpos\PrintConnectors\FilePrintConnector استفاده کنید. $connector = New FilePrintConnector("/dev/usb/lp0"); $printer = چاپگر جدید ($connector); /* متن */ $printer -> text("Hello world\n"); $printer -> cut(); $printer -> close();

00000000 1b 40 48 65 6c 6c 6f 20 77 6f 72 6c 64 0a 1d 56 |.@سلام دنیا..V| 00000010 41 03 |A.| 00000012

تغذیه خط

چاپگر می تواند با این دستور به سرعت از تعداد مشخصی از خطوط عبور کند.

دستورات عبارتند از:

LF
ESCd[شماره]
ESC v[شماره]

فرمان اول به جلو و دومی برعکس تغذیه می شود. از مثال، می توان دریافت که چاپگر آزمایشی از تغذیه کاغذ معکوس پشتیبانی نمی کند.

Require_once(dirname(__FILE__). "/escpos-php/Escpos.php"); $printer = new Escpos(); /* تغذیه خط */ $printer -> text("ABC"); $printer -> feed(7); $printer -> text("DEF"); $printer -> feedReverse(3); $printer -> text("GHI"); $printer -> feed(); $printer -> cut(); $printer -> close();

00000000 1b 40 41 42 43 1b 64 07 44 45 46 1b 65 03 47 48 | [ایمیل محافظت شده]| 00000010 49 0a 1d 56 41 03 |I..VA.| 00000016

حالت های چاپ

حالت های چاپ شامل ارتفاع قلم، عرض و پررنگ بودن در یک ویژگی واحد است.

دستور این است:

حالت های فونت از ترکیب منطقی OR با هم مجموعه ای از ویژگی ها ساخته شده اند. 0 نمایانگر متن طرح A است. پرچم های حالت عبارتند از:

حالت شماره
فونت A (بدون حالت) 0
فونت B 1
تاکید کرد 8
ارتفاع دو برابر 16
عرض دو برابر 32
زیر خط بکشید 128

رسید نمونه تأثیر هر پرچم را نشان می دهد.

نیاز به __DIR__. "/autoload.php"؛ از Mike42\Escpos\Printer استفاده کنید. از Mike42\Escpos\PrintConnectors\FilePrintConnector استفاده کنید. $connector = New FilePrintConnector("/dev/usb/lp0"); $printer = چاپگر جدید ($connector); /* حالت های قلم */ حالت های $ = آرایه(چاپگر:::MODE_FONT_A، چاپگر::: MODE_FONT_B، چاپگر::: MODE_EMPHASIZED، چاپگر::: MODE_DOUBLE_HEIGHT، چاپگر::: MODE_DOUBLE_WIDTH، چاپگر:::DE); برای ($i = 0؛ $i< 2 ** count($modes); $i++) { $bits = str_pad(decbin($i), count($modes), "0", STR_PAD_LEFT); $mode = 0; for($j = 0; $j < strlen($bits); $j++) { if(substr($bits, $j, 1) == "1") { $mode |= $modes[$j]; } } $printer ->selectPrintMode($mode);

00000000 1b 40 1b 21 00 41 42 43 44 45 46 47 48 49 4a 61 |.@.!.ABCDEFGHIJa| 00000010 62 63 64 65 66 67 68 69 6a 6b 0a 1b 21 80 41 42 |bcdefghijk..!.AB| 00000020 43 44 45 46 47 48 49 4a 61 62 63 64 65 66 67 68 |CDEFGHIJabcdefgh| 00000030 69 6a 6b 0a 1b 21 20 41 42 43 44 45 46 47 48 49 |ijk..! ABCDEFGHI| 00000040 4a 61 62 63 64 65 66 67 68 69 6a 6b 0a 1b 21 a0 |Jabcdefghijk..!.| 00000050 41 42 43 44 45 46 47 48 49 4a 61 62 63 64 65 66 |ABCDEFGHIJabcdef| 00000060 67 68 69 6a 6b 0a 1b 21 10 41 42 43 44 45 46 47 |ghijk..!.ABCDEFG| 00000070 48 49 4a 61 62 63 64 65 66 67 68 69 6a 6b 0a 1b |HIJabcdefghijk..| 00000080 21 90 41 42 43 44 45 46 47 48 49 4a 61 62 63 64 |!.ABCDEFGHIJabcd| 00000090 65 66 67 68 69 6a 6b 0a 1b 21 30 41 42 43 44 45 |efghijk..!0ABCDE| 000000a0 46 47 48 49 4a 61 62 63 64 65 66 67 68 69 6a 6b |FGHIJabcdefghijk| 000000b0 0a 1b 21 b0 41 42 43 44 45 46 47 48 49 4a 61 62 |..!.ABCDEFGHIJab| 000000c0 63 64 65 66 67 68 69 6a 6b 0a 1b 21 08 41 42 43 |cdefghijk..!.ABC| 000000d0 44 45 46 47 48 49 4a 61 62 63 64 65 66 67 68 69 |DEFGHIJabcdefghi| 000000e0 6a 6b 0a 1b 21 88 41 42 43 44 45 46 47 48 49 4a |jk..!.ABCDEFGHIJ| 000000f0 61 62 63 64 65 66 67 68 69 6a 6b 0a 1b 21 28 41 |abcdefghijk..!(A| 00000100 42 43 44 45 46464 6 67 |BCDEFGHIJabcdefg| 00000110 68 69 6a 6b 0a 1b 21 a8 41 42 43 44 45 46 47 48 |hijk..!.ABCDEFGH| 00000120 49 4a 61 62 63 64 65 66 67 68 69 0000120 . 00130 18 41 42 43 44 45 46 47 48 49 4a 61 62 63 64 |.ABCDEFGHIJabcde 00000140 66 67 68 69 6b 0a 1b 21 98 41 42 45 BC .4 9 4a 61 62 63 64 65 66 67 68 69 6a 6b 0a | GHIJabcdefghijk. 00000160 1b 21 38 41 42 43 44 45 46 47 48 49 4a 61 62 63 |.! 41 42 43 44 |. defghijk..!.ABCD 00000180 45 46 47 48 4a 61 62 63 64 65 66 67 68 69 6a |EFGHIJabcdefghij| 9 4a 61 |k..!. ABCDEFGHIJa|000001a0 62 63 64 65 66 67 68 69 6a 6b 0a 1b 21 81 41 42 |bcdefghijk..!.AB| 000001b0 43 44 45 46 47 48 49 4a 61 62 65Gdefghijk | 000001c0 69 6a 6b 0a 1b 21 21 41 42 43 44 45 46 47 48 49 |ijk..!!ABCDEFGHI| 000001d0 4a 61 62 63 64 65 66 67 68 69 6a 6b 0a 1b 21 a1 |Jabcdefghijk..!.| 000001e0 41 42 43 44 45 46 47 48 49 4a 61 62 63 64 65 66 |ABCDEFGHIJabcdef| 000001f0 67 68 69 6a 6b 0a 1b 21 11 41 42 43 44 45 46 47 |ghijk..!.ABCDEFG| 00000200 48 49 4a 61 62 63 64 65 66 67 68 69 6a 6b 0a 1b |HIJabcdefghijk. .| 00000210 21 91 41 42 43 44 45 46 47 48 49 4a 61 62 63 64 |!.ABCDEFGHIJabcd| 00000220 65 66 67 68 69 6a 6b 0a 1b 21 31 41 42 43 44 45 |efghijk..!1ABCDE| 00000230 46 47 48 49 4a 61 62 63 64 65 66 67 68 69 6a 6b |FGHIJabcdefghijk| 00000240 0a 1b 21 b1 41 42 43 44 45 46 47 48 49 4a 61 62 |..!.ABCDEFGHIJab| 00000250 63 64 65 66 67 68 69 6a 6b 0a 1b 21 09 41 42 43 |cdefghijk..!.ABC| 00000260 44 45 46 47 48 49 4a 61 62 63 64 65 66 67 68 69 |DEFGHIJabcdefghi| 00000270 6a 6b 0a 1b 21 89 41 42 43 44 45 46 47 48 49 4a |jk..!.ABCDEFGHIJ| 00000280 61 62 63 64 65 66 67 68 69 6a 6b 0a 1b 21 29 41 |abcdefghijk..!)A| 00000290 42 43 44 45 46 47 48 49 4a 61 62 63 64 65 66 67 |BCDEFGHIJabcdefg| 000002a0 68 69 6a 6b 0a 1b 21 a9 41 42 43 44 45 46 47 48 |hijk..!.ABCDEFGH| 000002b0 49 4a 61 62 63 64 65 66 67 68 69 6a 6b 0a 1b 21 |IJabcdefghijk..!| 000002c0 19 41 42 43 44 45 46 47 48 49 4a 61 62 63 64 65 |.ABCDEFGHIJabcde| 000002d0 66 67 68 69 6a 6b 0a 1b 21 99 41 42 43 44 45 46 |fghijk..!.ABCDEF| 000002e0 47 48 49 4a 61 62 63 64 65 66 67 68 69 6a 6b 0a |GHIJabcdefghijk.| 000002f0 1b 21 39 41 42 43 44 45 46 47 48 49 4a 61 62 63 |.!9ABCDEFGHIJabc| 00000300 64 65 66 67 68 69 6a 6b 0a 1b 21 b9 41 42 43 44 |defghijk..!.ABCD| 00000310 45 46 47 48 49 4a 61 62 63 64 65 66 67 68 69 6a |EFGHIJabcdefghij| 00000320 6b 0a 1b 21 00 41 42 43 44 45 46 47 48 49 4a 61 |k..!.ABCDEFGHIJa| 00000330 62 63 64 65 66 67 68 69 6a 6b 0a 1b 21 80 41 42 |bcdefghijk..!.AB| 00000340 43 44 45 46 47 48 49 4a 61 62 63 64 65 66 67 68 |CDEFGHIJabcdefgh| 00000350 69 6a 6b 0a 1b 21 20 41 42 43 44 45 46 47 48 49 |ijk..! ABCDEFGHI| 00000360 4a 61 62 63 64 65 66 67 68 69 6a 6b 0a 1b 21 a0 |Jabcdefghijk..!.| 00000370 41 42 43 44 45 46 47 48 49 4a 61 62 63 64 65 66 |ABCDEFGHIJabcdef| 00000380 67 68 69 6a 6b 0a 1b 21 10 41 42 43 44 45 46 47 |ghijk..!.ABCDEFG| 00000390 48 49 4a 61 62 63 64 65 66 67 68 69 6a 6b 0a 1b |HIJabcdefghijk..| 000003a0 21 90 41 42 43 44 45 46 47 48 49 4a 61 62 63 64 |!.ABCDEFGHIJabcd| 000003b0 65 66 67 68 69 6a 6b 0a 1b 21 30 41 42 43 44 45 |efghijk..!0ABCDE| 000003c0 46 47 48 49 4a 61 62 63 64 65 66 67 68 69 6a 6b |FGHIJabcdefghijk| 000003d0 0a 1b 21 b0 41 42 43 44 45 46 47 48 49 4a 61 62 |..!.ABCDEFGHIJab| 000003e0 63 64 65 66 67 68 69 6a 6b 0a 1b 21 08 41 42 43 |cdefghijk..!.ABC| 000003f0 44 45 46 47 48 49 4a 61 62 63 64 65 66 67 68 69 |DEFGHIJabcdefghi| 00000400 6a 6b 0a 1b 21 88 41 42 43 44 45 46 47 48 49 4a |jk..!.ABCDEFGHIJ| 00000410 61 62 63 64 65 66 67 68 69 6a 6b 0a 1b 21 28 41 |abcdefghijk. .!(A| 00000420 42 43 44 45 46 47 48 49 4a 61 62 63 64 65 66 67 | BCDEFGHIJabcdefg| 00000430 68 69 6a 4 4 4 a 6 46 47 48 |hijk..!.ABCDEFGH| 00000440 49 4a 61 62 63 64 65 66 67 68 69 6a 6b 0a 1b 21 |IJabcdefghijk..!|00000450 18 41 42 453 46 6 4 65 |.ABCDEFGHIJabcde|. 00000460 66 67 68 69 6a 6b 0a 1b 21 98 41 42 43 44 46 |fghijk..!.ABCDEF|00000470 47 48 49 4a 61 62 63 64 65 66 69 68 0 1b 21 38 41 42 43 44 45 46 47 48 49 4a 61 62 63 |.!8ABCDEFGHIJabc 00000490 64 65 66 67 68 69 6a 6b 0a 1b 21 b8 41 42 43 404 47 4 8 49 4a 61 62 63 64 65 66 67 69 6a |EFGHIJabcdefghij| 000004b0 6b 0a 1b 21 01 41 42 43 44 45 46 47 48 49 4a 61 |K..!.06 65 66 67 6 8 69 6a 6b 0a 1b 21 81 41 42 |. bcdefghijk.. 00004d0 43 44 45 46 47 49 4a 61 63 64 66 67 000004f0 4a 61 62 63 64 65 66 67 68 69 6a 6b 0a 1b 21 a1 |Jabcdefghijk..!.| 00000500 41 42 43 44 45 46 47 48 49 4a 61 62 63 64 65 66 |ABCDEFGHIJabcdef| 00000510 67 68 69 6a 6b 0a 1b 21 11 41 42 43 44 45 46 47 |ghijk..!.ABCDEFG| 00000520 48 49 4a 61 62 63 64 65 66 67 68 69 6a 6b 0a 1b |HIJabcdefghijk..| 00000530 21 91 41 42 43 44 45 46 47 48 49 4a 61 62 63 64 |!.ABCDEFGHIJabcd| 00000540 65 66 67 68 69 6a 6b 0a 1b 21 31 41 42 43 44 45 |efghijk..!1ABCDE| 00000550 46 47 48 49 4a 61 62 63 64 65 66 67 68 69 6a 6b |FGHIJabcdefghijk| 00000560 0a 1b 21 b1 41 42 43 44 45 46 47 48 49 4a 61 62 |..!.ABCDEFGHIJab| 00000570 63 64 65 66 67 68 69 6a 6b 0a 1b 21 09 41 42 43 |cdefghijk..!.ABC| 00000580 44 45 46 47 48 49 4a 61 62 63 64 65 66 67 68 69 |DEFGHIJabcdefghi| 00000590 6a 6b 0a 1b 21 89 41 42 43 44 45 46 47 48 49 4a |jk..!.ABCDEFGHIJ| 000005a0 61 62 63 64 65 66 67 68 69 6a 6b 0a 1b 21 29 41 |abcdefghijk..!)A| 000005b0 42 43 44 45 46 47 48 49 4a 61 62 63 64 65 66 67 |BCDEFGHIJabcdefg| 000005c0 68 69 6a 6b 0a 1b 21 a9 41 42 43 44 45 46 47 48 |hijk..!.ABCDEFGH| 000005d0 49 4a 61 62 63 64 65 66 67 68 69 6a 6b 0a 1b 21 |IJabcdefghijk..!| 000005e0 19 41 42 43 44 45 46 47 48 49 4a 61 62 63 64 65 |.ABCDEFGHIJabcde| 000005f0 66 67 68 69 6a 6b 0a 1b 21 99 41 42 43 44 45 46 |fghijk..!.ABCDEF| 00000600 47 48 49 4a 61 62 63 64 65 66 67 68 69 6a 6b 0a |GHIJabcdefghijk.| 00000610 1b 21 39 41 42 43 44 45 46 47 48 49 4a 61 62 63 |.!9ABCDEFGHIJabc| 00000620 64 65 66 67 68 69 6a 6b 0a 1b 21 b9 41 42 43 44 |defghijk. .!.ABCD| 00000630 45 46 47 48 49 4a 61 62 63 64 65 66 67 68 69 6a |EFGHIJabcdefghij| 00000640 6b 0a 1b 21 00 1d 56 41 03 |k..!..VA.| 00000649

$printer -> text("ABCDEFGHIJabcdefghijk\n"); ) $printer -> selectPrintMode(); // بازنشانی $printer -> cut(); $printer -> close();

دستور این است:

زیر خط بکشید

ESC - [شماره]

آرگومان برای عدم خط کشی 0، برای زیر خط 1، برای زیر خط سنگین 2 تنظیم شده است.< 3; $i++) { $printer ->نیاز به __DIR__. "/autoload.php"؛ از Mike42\Escpos\Printer استفاده کنید. از Mike42\Escpos\PrintConnectors\FilePrintConnector استفاده کنید. $connector = New FilePrintConnector("/dev/usb/lp0"); $printer = چاپگر جدید ($connector); /* زیر خط بکشید */ برای ($i = 0؛ $i

setUnderline($i); [ایمیل محافظت شده]سریع ب| 00000010 72 6f 77 6e 20 66 6f 78 20 6a 75 6d 70 73 20 6f |روباه قایق پرش o| 00000020 76 65 72 20 74 68 65 20 6c 61 7a 79 20 64 6f 67 |ور سگ تنبل| 00000030 0a 1b 2d 01 54 68 65 20 71 75 69 63 6b 20 62 72 |..-.The quick br| 00000040 6f 77 6e 20 66 6f 78 20 6a 75 6d 70 73 20 6f 76 |روباه خود پرش ov| 00000050 65 72 20 74 68 65 20 6c 61 7a 79 20 64 6f 67 0a |er سگ تنبل.| 00000060 1b 2d 02 54 68 65 20 71 75 69 63 6b 20 62 72 6f |.-.داداش سریع| 00000070 77 6e 20 66 6f 78 20 6a 75 6d 70 73 20 6f 76 65 |wn fox jumps ove| 00000080 72 20 74 68 65 20 6c 61 7a 79 20 64 6f 67 0a 1b |r سگ تنبل..| 00000090 2d 00 1d 56 41 03 |-..VA.| 00000096

برش ها

دستور این است:

ESC V [شماره]

این استدلال ظاهراً نشان‌دهنده این است که آیا باید یک برش «جزئی» (65) یا «کامل» (66) انجام داد، اما تأثیری بر مدل چاپگر من ندارد.

نیاز به __DIR__. "/autoload.php"؛ از Mike42\Escpos\Printer استفاده کنید. از Mike42\Escpos\PrintConnectors\FilePrintConnector استفاده کنید. $connector = new FilePrintConnector("/dev/usb/lp0"); $printer = چاپگر جدید ($connector); /* برش */ برای ($i = 0؛ $i< 5; $i++) { $printer ->cut(Printer:::CUT_PARTIAL);

$printer -> cut(Printer:::CUT_FULL); ) $printer -> cut(); $printer -> close(); [ایمیل محافظت شده] 00000000 1b 40 1d 56 42 03 1d 56 41 03 1d 56 42 03 1d 56 |

| 00000010 41 03 1d 56 42 03 1d 56 41 03 1d 56 42 03 1d 56 |A..VB..VA..VB..V| 00000020 41 03 1d 56 42 03 1d 56 41 03 1d 56 41 03 |A..VB..VA..VA.| 0000002e

دستور این است:

تاکید

ESC E [شماره]

از 1 برای فعال کردن تاکید و 0 برای غیرفعال کردن آن استفاده کنید.< 2; $i++) { $printer ->نیاز به __DIR__. "/autoload.php"؛ از Mike42\Escpos\Printer استفاده کنید. از Mike42\Escpos\PrintConnectors\FilePrintConnector استفاده کنید. $connector = new FilePrintConnector("/dev/usb/lp0"); $printer = چاپگر جدید ($connector); /* تاکید */ برای ($i = 0؛ $i

setEmphasis($i == 1); [ایمیل محافظت شده]$printer -> text("روباه قهوه ای سریع از روی سگ تنبل می پرد\n"); ) $printer -> setEmphasis(false); // بازنشانی $printer -> cut(); $printer -> close();

00000000 1b 40 1b 45 00 54 68 65 20 71 75 69 63 6b 20 62 |

نیاز به __DIR__. "/autoload.php"؛ از Mike42\Escpos\Printer استفاده کنید. از Mike42\Escpos\PrintConnectors\FilePrintConnector استفاده کنید. $connector = new FilePrintConnector("/dev/usb/lp0"); $printer = چاپگر جدید ($connector); /* Double-strike (به نظر می رسد اساساً مانند تأکید است) */ for($i = 0؛ $i< 2; $i++) { $printer ->setDoubleStrike($i == 1);

$printer -> text("روباه قهوه ای سریع از روی سگ تنبل می پرد\n"); ) $printer -> setDoubleStrike(false); $printer -> cut(); $printer -> close(); [ایمیل محافظت شده] 00000000 1b 40 1b 47 00 54 68 65 20 71 75 69 63 6b 20 62 |

سریع ب| 00000010 72 6f 77 6e 20 66 6f 78 20 6a 75 6d 70 73 20 6f |روباه قایق پرش o| 00000020 76 65 72 20 74 68 65 20 6c 61 7a 79 20 64 6f 67 |ور سگ تنبل| 00000030 0a 1b 47 01 54 68 65 20 71 75 69 63 6b 20 62 72 |..G.The quick br| 00000040 6f 77 6e 20 66 6f 78 20 6a 75 6d 70 73 20 6f 76 |روباه خود پرش ov| 00000050 65 72 20 74 68 65 20 6c 61 7a 79 20 64 6f 67 0a |er سگ تنبل.| 00000060 1b 47 00 1d 56 41 03 |.G..VA.| 00000067

فونت ها< count($fonts); $i++) { $printer ->نیاز به __DIR__. "/autoload.php"؛ از Mike42\Escpos\Printer استفاده کنید. از Mike42\Escpos\PrintConnectors\FilePrintConnector استفاده کنید. $connector = new FilePrintConnector("/dev/usb/lp0"); $printer = چاپگر جدید ($connector); /* فونت ها (بسیاری از چاپگرها "Font C" ندارند) */ $fonts = array(Printer:::FONT_A, Printer:::FONT_B, Printer:::FONT_C); برای ($i = 0؛ $i

setFont($fonts[$i]); [ایمیل محافظت شده]$printer -> text("روباه قهوه ای سریع از روی سگ تنبل می پرد\n"); ) $printer -> setFont(); // بازنشانی $printer -> cut(); $printer -> close();

00000000 1b 40 1b 4d 00 54 68 65 20 71 75 69 63 6b 20 62 |

دستور این است:

سریع ب| 00000010 72 6f 77 6e 20 66 6f 78 20 6a 75 6d 70 73 20 6f |روباه قایق پرش o| 00000020 76 65 72 20 74 68 65 20 6c 61 7a 79 20 64 6f 67 |ور سگ تنبل| 00000030 0a 1b 4d 01 54 68 65 20 71 75 69 63 6b 20 62 72 |..M.The quick br| 00000040 6f 77 6e 20 66 6f 78 20 6a 75 6d 70 73 20 6f 76 |روباه خود پرش ov| 00000050 65 72 20 74 68 65 20 6c 61 7a 79 20 64 6f 67 0a |er سگ تنبل.| 00000060 1b 4d 02 54 68 65 20 71 75 69 63 6b 20 62 72 6f |.M.The quick bro| 00000070 77 6e 20 66 6f 78 20 6a 75 6d 70 73 20 6f 76 65 |wn fox jumps ove| 00000080 72 20 74 68 65 20 6c 61 7a 79 20 64 6f 67 0a 1b |r سگ تنبل..| 00000090 4d 00 1d 56 41 03 |M..VA.| 00000096

توجیه

نیاز به __DIR__. "/autoload.php"؛ از Mike42\Escpos\Printer استفاده کنید. از Mike42\Escpos\PrintConnectors\FilePrintConnector استفاده کنید. $connector = new FilePrintConnector("/dev/usb/lp0"); $printer = چاپگر جدید ($connector); /* توجیه */ $justification = آرایه(چاپگر:::JUSTIFY_LEFT، چاپگر:::JUSTIFY_CENTER، چاپگر:::JUSTIFY_RIGHT); برای ($i = 0؛ $i< count($justification); $i++) { $printer ->setJustification($justification[$i]);

$printer -> text("A man a plan a canal panama\n"); ) $printer -> setJustification(); // بازنشانی $printer -> cut(); $printer -> close(); [ایمیل محافظت شده] 00000000 1b 40 1b 61 00 41 20 6d 61 6e 20 61 20 70 6c 61 |

مرد یک پلا| 00000010 6e 20 61 20 63 61 6e 61 6c 20 70 61 6e 61 6d 61 |n a canal panama| 00000020 0a 1b 61 01 41 20 6d 61 6e 20 61 20 70 6c 61 6e |..a.A man a plan| 00000030 20 61 20 63 61 6e 61 6c 20 70 61 6e 61 6d 61 0a | یک کانال پاناما.| 00000040 1b 61 02 41 20 6d 61 6e 20 61 20 70 6c 61 6e 20 |.a.A man a plan | 00000050 61 20 63 61 6e 61 6c 20 70 61 6e 61 6d 61 0a 1b |یک کانال پاناما..| 00000060 61 00 1d 56 41 03 |a..VA.| 00000066

دستورات عبارتند از:

بارکدها
GS h [شماره]

ESC k [شماره] [متن] NUL فرمان اول ارتفاع بارکد را تعیین می کند - با نقطه اندازه گیری می شود، در حالی که فرمان دوم بارکد واقعی را چاپ می کند. عدد نشان دهنده استاندارد بارکد است کهبرای اکثر

اهداف باید "4" باشد که نشان دهنده CODE39 است. 6 استاندارد توسط درایور PHP پشتیبانی می شود.

متوجه خواهید شد که به دلیل اشکالات درایور یا ناسازگاری چاپگر، همه بارکدها چاپ نمی شوند! همانطور که در بالا ذکر شد، توصیه من این است که در صورت مواجه شدن با این موضوع از CODE39 استفاده کنید.< count($barcodes); $i++) { $printer ->نیاز به __DIR__. "/autoload.php"؛ از Mike42\Escpos\Printer استفاده کنید. از Mike42\Escpos\PrintConnectors\FilePrintConnector استفاده کنید. $connector = new FilePrintConnector("/dev/usb/lp0"); $printer = چاپگر جدید ($connector); /* بارکد */ $barcodes = آرایه(چاپگر:::BARCODE_UPCA، چاپگر:::BARCODE_UPCE، چاپگر:::BARCODE_JAN13، چاپگر:::BARCODE_JAN8، چاپگر:::BARCODE_CODE39، چاپگر:::BARCODE_IT: BARCODE_CODABAR)؛ $printer -> setBarcodeHeight(80); برای ($i = 0؛ $i

text("بارکد $i " . "\n"); [ایمیل محافظت شده] 0 .| 00000010 1d 6b 00 39 38 37 36 00 0a 42 61 72 63 6f 64 65 |.k.9876..بارکد| 00000020 20 31 20 0a 1d 6b 01 39 38 37 36 00 0a 42 61 72 | 1 ..k.9876..بار| 00000030 63 6f 64 65 20 32 20 0a 1d 6b 02 39 38 37 36 00 |کد 2 ..k.9876.| 00000040 0a 42 61 72 63 6f 64 65 20 33 20 0a 1d 6b 03 39 |.بارکد 3 ..k.9| 00000050 38 37 36 00 0a 42 61 72 63 6f 64 65 20 34 20 0a |876..بارکد 4 ​​.| 00000060 1d 6b 04 39 38 37 36 00 0a 42 61 72 63 6f 64 65 |.k.9876..بارکد| 00000070 20 35 20 0a 1d 6b 05 39 38 37 36 00 0a 42 61 72 | 5 ..k.9876..بار| 00000080 63 6f 64 65 20 36 20 0a 1d 6b 06 39 38 37 36 00 |کد 6 ..k.9876.| 00000090 0a 1d 56 41 03 |..VA.| 00000095