کالبدشکافی دستورات ESC/POS: چگونه فرمت رسید را بدون نرمافزار حسابداری سفارشی کنیم؟
دستورات ESC/POS زبان استاندارد ارتباطی فیش پرینترهای حرارتی است که به برنامهنویسان اجازه میدهد بدون نرمافزار حسابداری، فرمت رسید، لوگو و بارکد را سفارشی کنند. با ارسال کدهای HEX از طریق CMD یا زبانهای برنامهنویسی، میتوانید فیش پرینتر برندهای اتم، بیکسولون و میوا را مستقیماً کنترل کنید.
دستورات ESC/POS چیست و چرا برای توسعهدهندگان اهمیت دارد؟
پروتکل ESC/POS (مخفف Epson Standard Code for Point of Sale) زبان دستوری است که تقریباً تمام فیش پرینترهای حرارتی دنیا آن را درک میکنند. بهجای استفاده از درایورهای سنگین ویندوز و ارسال دادههای گرافیکی حجیم، برنامهنویسان میتوانند با ارسال رشتههای متنی ساده و کدهای کنترلی (Control Codes)، مستقیماً با سختافزار ماشینهای اداری ارتباط برقرار کنند. این روش سرعت چاپ را بهشدت افزایش داده و مصرف حافظه را به حداقل میرساند.
پرکاربردترین دستورات ESC/POS برای سفارشیسازی رسید
برای برنامه نویسی چاپگر رسید، شناخت کدهای کنترلی پایه و نحوه ترکیب آنها ضروری است.
راهاندازی اولیه و ریست کردن پرینتر
پیش از ارسال هرگونه دستور، باید پرینتر را به حالت پیشفرض برگردانید. کد Initialize (معمولاً HEX: 1B 40) تمام تنظیمات فونت، فاصله خطوط و حالتهای بلوتوث یا شبکه را ریست میکند و از تداخل دستورات قبلی جلوگیری میکند.
تنظیم فونت، سایز و ضخامت متن
برای برجسته کردن عنوان فروشگاه یا جمع کل فاکتور، از دستورات تغییر سایز و Bold استفاده میشود. کدهای ESC ! (برای تغییر سایز) و ESC E (برای ضخیم کردن) به شما اجازه میدهند تنظیمات پیشرفته درایور فیش پرینتر را بهصورت نرمافزاری و در لحظه چاپ مدیریت کنید.
چاپ بارکد و QR کد
چاپ لوگو با کد نویسی یا بارکدهای میلهای نیازمند تبدیل تصویر به آرایهای از بایتها (Bitmap) و ارسال آن با دستورات GS v 0 است. برای QR کد، برندهای معتبر از دستورات GS ( k استفاده میکنند که تراکم و سطح تصحیح خطا (Error Correction) را مشخص میکند.
برش کاغذ و باز کردن کشو پول
پایان رسید با دستور Full Cut (GS V 66 0) یا Partial Cut بریده میشود. برای باز کردن کشو پول متصل به پرینتر، از پالس الکتریکی روی پینهای ۲ و ۵ پورت RJ11 استفاده میشود که با دستور ESC p 0 25 250 ارسال میگردد.
نحوه ارسال دستورات Raw به فیش پرینتر در ویندوز
برای تست کدهای دستوری فیش پرینتر اتم و بیکسولون بدون نوشتن نرمافزار کامل، میتوانید از خط فرمان ویندوز (CMD) استفاده کنید.
ابتدا یک فایل متنی حاوی کدهای HEX مورد نظر بسازید. سپس با استفاده از دستور copy در CMD، فایل را مستقیماً به پورت پرینتر (مثلاً USB001 یا COM3) بفرستید:
copy /b test_receipt.txt .USB001
این روش برای عیبیابی سریع و تست سلامت هد و کاتر بدون درگیر کردن نرمافزار حسابداری بسیار کارآمد است.
چالش ناسازگاری برندها: اتم، بیکسولون و میوا
اگرچه ESC/POS یک استاندارد جهانی است، اما برندهای مختلف برای قابلیتهای خاص خود (مانند چاپ گرافیک پیشرفته یا تنظیمات شبکه) دستورات اختصاصی (Vendor-specific commands) دارند.
برای مثال، کدهای دستوری فیش پرینتر اتم و بیکسولون در بخشهای پایه (مثل چاپ متن و برش کاغذ) کاملاً یکسان هستند، اما در دستورات چاپ لوگوی گرافیکی یا تنظیمات عمق حرارتی هد، ممکن است تفاوتهای جزئی داشته باشند. میوا (Meva) نیز در برخی دستورات بارکد از پارامترهای متفاوتی استفاده میکند.
بهترین راهکار برای توسعهدهندگان، استفاده از کتابخانههای متنباز (Open Source) ESC/POS است که این تفاوتها را بهصورت خودکار مدیریت میکنند، یا خواندن دقیق دفترچه راهنمای (Programmer Manual) هر برند قبل از کدنویسی.

تجهیزات پیشنهادی هانیک برای توسعهدهندگان و مدیران فنی
انتخاب فیش پرینتری که مستندات فنی (SDK و Programmer Manual) شفاف و کتابخانههای برنامهنویسی بهروزی داشته باشد، نیمی از راه موفقیت در پروژههای سفارشیسازی است. بهعنوان تأمینکننده تخصصی ماشینهای اداری، هانیک مدلهایی را پیشنهاد میکند که سازگاری بالایی با دستورات استاندارد ESC/POS دارند.
برای پروژههایی که نیاز به چاپ گرافیک سنگین و بارکدهای متراکم دارند، فیش پرینتر بیکسولون مدل SRP-E300 به دلیل پردازنده قوی و پشتیبانی عالی از دستورات گرافیکی ESC/POS، انتخاب ایدهآلی است.
اگر بهدنبال یک گزینه اقتصادی با سازگاری بالا برای پروژههای متنی و بارکدخوانی ساده هستید، فیش پرینتر اتم مدل A300i با درایورهای استاندارد و مستندات فنی در دسترس، گزینه بسیار مناسبی است.
سوالات متداول
- چگونه میتوانم لوگوی فروشگاه را با کدنویسی روی رسید چاپ کنم؟
باید تصویر لوگو را به فرمت Bitmap سیاه و سفید (1-bit) تبدیل کنید، سپس آن را به آرایهای از بایتهای HEX تبدیل کرده و با دستور GS v 0 به پرینتر ارسال نمایید.
- تفاوت دستورات ESC/POS با TSPL چیست؟
ESC/POS مخصوص فیش پرینترهای حرارتی (رسید) است و بر پایه خط و کاراکتر عمل میکند. اما TSPL زبان برنامهنویسی پرینترهای لیبلزن (بارکد و اتیکت) است که بر پایه مختصات X و Y کار میکند.
- چرا دستور برش کاغذ در برخی فیش پرینترها کار نمیکند؟
این مشکل معمولاً به دلیل تفاوت در دستورات برش بین برندهاست. اگر GS V 66 0 کار نکرد، کدهای جایگزین مانند GS V 0 یا ESC i را تست کنید.
- آیا میتوان فیش پرینتر بلوتوثی را با دستورات ESC/POS کنترل کرد؟
بله. پس از برقراری ارتباط بلوتوث و ایجاد یک پورت COM مجازی در سیستمعامل، میتوانید دقیقاً مانند پرینترهای سیمی، کدهای Raw را به آن ارسال کنید.
آخرین بروزرسانی: 5 مرداد 1405
گروه: آموزشی