فصل ۳ — برنامه Bridge (پل اتصال سختافزار)
صندوق فروش در مرورگر اجرا میشود و مرورگر نمیتواند مستقیم با کارتخوان، پرینتر، ترازو و نمایشگر مشتری حرف بزند. برنامه Bridge این پل است: کنار صندوق اجرا میشود و این دستگاهها را به صندوق وصل میکند.
سه شکل دارد که همگی یک کار میکنند (نسخه iOS آزمایشی است):
- اپ اندروید روی تبلت
- برنامه دسکتاپ روی کامپیوتر (Windows/Mac/Linux)
- اپ iOS (آزمایشی)
⚠️ زبان: رابط اپ اندروید عملاً انگلیسی است. فقط چند رشته قدیمی به آلمانی ترجمه شدهاند؛ کل داشبوردی که اپراتور میبیند (وضعیتها، Power Guard، Keep Bridge Awake، لاگها و…) انگلیسی است.
💡 معمولاً Bridge را یک بار راهاندازی میکنید و بعد در پسزمینه کار میکند. آدرس Bridge را در صندوق ← تنظیمات ← Bridge وارد میکنید (راهنمای صندوق، فصل ۹). اپ اندروید بهصورت سرویس پیشزمینه پایدار اجرا میشود: با بستن برنامه از لیست هم زنده میماند، بعد از بهروزرسانی خودکار دوباره راه میافتد، و یک پایشگر هر ۳۰ ثانیه در صورت لازم سرور را دوباره بالا میآورد.
۳-۱. اپ اندروید — صفحه وضعیت
یک صفحه تمامصفحه (کیوسک) با یک خط خلاصه در بالا و چند کارت وضعیت. هنگام اجرا پیام «در حال آمادهسازی پل، اتصال کارتخوان و نمایشگر مشتری» را میبینید.
- خلاصه کلی بالای صفحه، مثلاً: «پل آماده پرداخت»، «کارتخوان آماده، منتظر مرورگر»، «مرورگر وصل شد / کارتخوان آفلاین»، «در حال بازیابی اتصال کارتخوان»، یا «تراکنش در جریان است».
- کارتهای وضعیت (هر کدام یک نقطه رنگی و یک کلمه وضعیت):
- WebSocket — درگاه محلی که صندوق به آن وصل میشود.
- مرورگر (Browser) — آیا صندوق وصل شده.
- کارتخوان (POS Terminal) — وضعیتها: قطع / در حال اتصال / در حال اتصال دوباره / متصل / مشغول (Busy) هنگام تراکنش.
- نمایشگر مشتری — وضعیت نمایشگر دوم.
- Power Guard — محافظت باتری/پردازنده/وایفای برای جلوگیری از قطعی در بیکاری.
کارت آدرس Bridge
- آدرس را نشان میدهد (محلی
127.0.0.1:PORTیا آدرس شبکه با IP دستگاه) که باید در صندوق وارد شود. - دکمه حالت اتصال، سهحالته است و با هر زدن میچرخد: محلی ← شبکه ← خودکار (Auto). حالت خودکار اگر آدرس شبکه محلی موجود باشد روی شبکه و در غیر این صورت روی محلی میرود.
- نگه داشتن دکمه حالت اتصال: ساخت یا پاک کردن توکن جفتسازی — یک کد ۶حرفی که به آدرس اضافه میشود (
?token=XXXXXX) تا فقط صندوق مجاز بتواند وصل شود. این توکن فقط در حالت شبکه اعمال میشود (در حالت محلی نادیده گرفته میشود) و در آدرس بهصورت «Paired/Open» نشان داده میشود.
سایر کارتها و ورود به لاگ
- Power Guard → «بیدار نگهداشتن پل» (Keep Bridge Awake): تنظیمات باتری اندروید را باز میکند تا Bridge در بیکاری قطع نشود.
- لاگها: با دکمه Enable/Disable Logs روشن/خاموش میشود و View Logs صفحه لاگ را باز میکند؛ خاموش کردن، لاگهای ذخیرهشده را پاک میکند. راه دوم برای باز کردن لاگ، نگه داشتن (long-press) روی نوار بالای صفحه است.
- صفحه لاگ: فقطخواندنی است — متن تکعرض که هر ثانیه تازه میشود و به پایین اسکرول میکند؛ دکمه اشتراک/خروجی ندارد (برای فرستادن به پشتیبانی باید دستی کپی کنید).
- صفحه نمایشگر مشتری: روی نمایشگر دوم، اقلام و جمع سفارش را با یک قالب وب به مشتری نشان میدهد. در اندروید خودکار به هر نمایشگر دومِ متصل میچسبد (بدون انتخاب دستی؛ با جدا شدن کابل حذف میشود).
۳-۲. برنامه دسکتاپ — «LonioBridge — Host»
یک پنجره کوچک کنترل برای اجرای Bridge روی کامپیوتر:
- فرم راهاندازی:
- پورت WebSocket (پیشفرض ۸۰۸۸)
- آدرس اتصال (Bind): فقط این کامپیوتر یا کل شبکه (پیشفرض
0.0.0.0). - نمایشگر مشتری: انتخاب دستی مانیتوری که نمایشگر مشتری باشد (یا هیچکدام).
- شروع/توقف برای اجرای پل؛ تنظیمات در فایل
~/.loniobridge/host.propertiesبین اجراها حفظ میشود. - اجرای خودکار (Autostart): با پارامتر
--autostart(نصبکننده روی ویندوز آن را با اسکریپتهای فعال/غیرفعالسازی تنظیم میکند تا با روشن شدن سیستم بالا بیاید). - حالت بدون پنجره (Console): با
--consoleمیتوان بدون رابط گرافیکی اجرا کرد. - پنل وضعیت: حالت سرور (متوقف / در حال شروع / در حال گوش دادن روی پورت / پورت نامعتبر / خطا)، تعداد صندوقهای متصل، وضعیت کارتخوان، و نشانگر مشغول/بیکار (هنگام تراکنش).
- گزارش فعالیت: لاگ زماندار رویدادها؛ گزینه Verbose برای ثبت فریمهای خام کارتخوان (فقط برای عیبیابی).
⚠️ در پنجره دسکتاپ انتخاب پرینتر یا ترازو وجود ندارد؛ فقط پورت، آدرس اتصال و نمایشگر مشتری. پرینتر و ترازو از سمت صندوق پیکربندی میشوند و Bridge آنها را طبق پیام صندوق راه میاندازد.
۳-۳. چه دستگاههایی وصل میشوند
- کارتخوان: دو راهانداز وجود دارد که در پروفایل ترمینال انتخاب میشود:
- ZVT (پیشفرض) — از طریق شبکه/TCP، با اتصال دوباره خودکار (backoff) و وضعیتهای در حال اتصال/بازیابی/متصل.
- GP Tom (SoftPOS) — راهانداز Global Payments که روی همان تبلت اندروید با اپ کارتخوان GP حرف میزند (فروش/ابطال/عودت؛ تسویهی روزانه از این مسیر App2App هنوز پشتیبانی نمیشود).
- نمایشگر مشتری: قالب وب (اقلام و جمع سفارش) که صندوق به آن میفرستد؛ اندروید خودکار میچسبد، دسکتاپ با انتخاب دستی مانیتور.
- پرینتر:
- ⚠️ روی اندروید، چاپ فعلاً فقط پذیرفته میشود ولی اجرای واقعی چاپ پیاده نشده؛ چاپ واقعی روی دسکتاپ کار میکند.
- دسکتاپ سه راه دارد: سریال، پرینتر سیستم (ویندوز)، و شبکه/TCP (پیشفرض، پورت 9100)؛ شامل برش کاغذ و باز کردن کشوی پول.
- ترازو: فقط روی دسکتاپ — سریال یا USB-HID، با تشخیص واحد (kg/g/lb/oz) و حالت پایدار/ناپایدار. اندروید ترازو ندارد.
۳-۴. پیکربندی که راهانداز باید بداند
- پورت (پیشفرض ۸۰۸۸) و آدرس اتصال (محلی در برابر شبکه).
- تفاوت
127.0.0.1(محلی) و IP شبکه: اگر صندوق روی همین دستگاه است، محلی کافی است؛ اگر روی دستگاه دیگر است، حالت شبکه + IP لازم است و هر دو باید روی یک شبکه باشند. - توکن جفتسازی (
?token=…) فقط در حالت شبکه. - تنظیمات باتری اندروید (Keep Bridge Awake) برای جلوگیری از قطعی.
۳-۵. عیبیابی سریع
نشانه | کار کنید |
|---|---|
صندوق میگوید دستگاه پیدا نشد | مطمئن شوید Bridge روشن است؛ آدرس نمایشدادهشده در Bridge را دقیقاً در صندوق ← تنظیمات ← Bridge وارد کنید. |
صندوقِ دستگاهِ دیگر وصل نمیشود | در Bridge دکمه حالت را روی شبکه بگذارید و از آدرس IP (نه |
کارتخوان مدام قطع میشود (اندروید) | «Keep Bridge Awake» را بزنید تا از خواب باتری خارج شود. |
کسی نمیتواند وصل شود ولی نباید | شاید توکن جفتسازی فعال است؛ توکن درست را در آدرس صندوق بگذارید یا با نگه داشتن دکمه حالت، توکن را پاک کنید. |
چاپ روی تبلت اندروید کار نمیکند | چاپ واقعی روی اندروید هنوز پیاده نشده؛ برای چاپ از نسخه دسکتاپ استفاده کنید. |
برای گزارش مشکل به پشتیبانی | لاگها را روشن کنید، مشکل را بازتولید کنید، بعد در اندروید متن View Logs را دستی کپی کنید (دکمه اشتراک ندارد) یا در دسکتاپ گزارش فعالیت را با Verbose بفرستید. |