Skip to main content

MDB 2 UART Protocol - Version 1

คำอธิบาย

MDB2UART Box คือ กล่องแปลงสัญญาณระหว่าง duckpay box (UART) กับ ตู้จำหน่ายสินค้าอัตโนมัติ (MDB)

1 port configuration


Boardrate : 9600
Parity : NONE
Data bits : 8
Stop bits : 1

2 Data Structure


data

  • Header 1 และ 2 เป็นค่าคงที่
  • *length บิตที่ 0-6 เป็นจำนวนไบต์ทั้งหมดของชุดข้อมูล บิตที่ 7 หากเป็น 1 แสดงว่าเป็นข้อมูลที่ส่งจากกล่องแปลง mdb ไปหา duckpay และถ้าเป็น 0 แสดงว่าเป็นข้อมูลที่ส่งจาก duckpay ไปหา กล่องแปลง mdb
  • data 1 จะเป็น CMD ของชุดข้อมูล
  • crc คือ ผลลัพธ์ที่ได้จากการบวกกันของทุกไบต์
Header 1 (d)Header 1 (g)*lengthcmddata 1data Ncrc
0x640x67xxxxxxxxxx

ACK and POLL

Header 1 (d)Header 1 (g)*lengthcmdcrc
0x640x670x050x000xD0

####ตัวอย่าง


3 Data Command


3.1 คำสั่งอ่านสถานะของกล่องแปลง mdb

duckpay ส่งไปหา mdb2uart

Header 1 (d)Header 1 (g)*lengthcmdcrc
0x640x670x050x010xD1

mdb2uart ตอบกลับ duckpay

Header 1 (d)Header 1 (g)*lengthcmddata 1crc
0x640x670x850x010x00xx

data1 :

  • bit 0 = 0 no vmc connect and 1 vmc connected
  • bit 1 = 0 disable and 1 enable
  • bit 2 = reserve
  • bit 3 = reserve
  • bit 4 = reserve
  • bit 5 = reserve
  • bit 6 = reserve
  • bit 7 = reserve

3.2 คำสั่ง Vend Request

เป็นคำสั่งที่ส่งมาจาก mdb2uart เมื่อมีการกดหมายเลขที่เครื่องจำหน่ายสินค้า โดยที่หน้าเครื่องจำหน่ายสินค้าจะต้องไม่มียอดเงินค้างอยู่ ในชุดข้อมูลจะมีหมายเลขช่องและราคาส่งเข้ามา

mdb2uart สั่งไปหา duckpay

Header 1 (d)Header 1 (g)*lengthcmddata 1data 2crc
0x640x670x8B0x02xxxxxx
  • data 1 : เป็นหมายเลขช่องที่เลือก จะมี 2 ไบต์
  • data 2 : เป็นราคาของช่องที่เลือก จะมี 4 ไบต์

duckpay ตอบกลับ mdb2uart ACK

Header 1 (d)Header 1 (g)*lengthdatacrc
0x640x670x050x000xD0

*กล่อง duckpay จะต้องตอบกลับด้วย ACK หากไม่ตอบ mdb2uart จะพยายามส่งอยู่ 10 ครั้งและหลังจากนั้นจะหยุดส่ง


3.3 คำสั่ง Vend cancel

เป็นคำสั่งที่ส่งมาจาก mdb2uart เมื่อมีการปุ่ม "Exit" ที่เครื่องจำหน่ายสินค้า

mdb2uart สั่งไปหา duckpay

Header 1 (d)Header 1 (g)*lengthcmdcrc
0x640x670x850x03xx

duckpay ตอบกลับ mdb2uart ACK

Header 1 (d)Header 1 (g)*lengthdatacrc
0x640x670x050x000xD0

*กล่อง duckpay จะต้องตอบกลับด้วย ACK หากไม่ตอบ mdb2uart จะพยายามส่งอยู่ 10 ครั้งและหลังจากนั้นจะหยุดส่ง


3.4 คำสั่ง Vend approve

เป็นคำสั่งที่ส่งมาจาก duckpay หลังจากที่มีการจ่ายเงินสำเร็จ

duckpay สั่งไปหา mdb2uart

Header 1 (d)Header 1 (g)*lengthcmddata 1crc
0x640x670x890x04xxxx
  • data 2 : เป็นจำนวนเงินที่จ่ายเข้ามา จะมี 4 ไบต์

mdb2uart ตอบกลับ duckpay ACK

Header 1 (d)Header 1 (g)*lengthdatacrc
0x640x670x050x000xD0

*กล่อง mdb2uart จะต้องตอบกลับด้วย ACK หากไม่ตอบ mdb2uart จะพยายามส่งอยู่ 10 ครั้งและหลังจากนั้นจะหยุดส่ง


3.5 คำสั่ง Vending dispense success

เป็นคำสั่งที่ส่งมาจาก mdb2uart หลังจากที่จบการจ่ายสินค้า

mdb2uart สั่งไปหา duckpay

Header 1 (d)Header 1 (g)*lengthcmdcrc
0x640x670x850x05xx

duckpay ตอบกลับ mdb2uart ACK

Header 1 (d)Header 1 (g)*lengthdatacrc
0x640x670x050x000xD0

*กล่อง mdb2uart จะต้องตอบกลับด้วย ACK หากไม่ตอบ mdb2uart จะพยายามส่งอยู่ 10 ครั้งและหลังจากนั้นจะหยุดส่ง


3.6 คำสั่ง Send Card data

เป็นคำสั่งที่ส่งมาจาก mdb2uart หลังจากที่มีการแตะบัตร RFID

mdb2uart สั่งไปหา duckpay

Header 1 (d)Header 1 (g)*lengthcmddata 1data 2...data 17crc
0x640x670x960x10xxxxxxxx
  • data 1 : card block number
  • data 2-17 : card data 16 byte

duckpay ตอบกลับ mdb2uart ACK

Header 1 (d)Header 1 (g)*lengthdatacrc
0x640x670x050x000xD0

*กล่อง mdb2uart จะต้องตอบกลับด้วย ACK หากไม่ตอบ mdb2uart จะพยายามส่งอยู่ 10 ครั้งและหลังจากนั้นจะหยุดส่ง