เปิดเก๊ะคิดเงิน (Cash Drawer) ผ่านแลนด้วย PHP

จริงๆก่อนที่จะมาเขียนโปรแกรมหน้าร้าน (POS: Point-of-sale) เองก็มพยายามที่จะไปซื้อโปรแกรมคนอื่นเหมือนกันแต่หลายๆเจ้าที่ติดต่อไปก็ไม่ติดต่อกลับมาอาจด้วยเหตุผลที่ว่าร้านเราเล็กเกินไป (ที่คิดแบบนั้นเพราะมีบริษัทนึงแจ้งเรามาแบบนั้น เขาแจ้งว่าไม่คุ้มที่จะให้เซลล์เดินทางไป​) งั้นเอาว่ะ เขียนเองก็ได้

โปรแกรมนี่เหมือนอัจฉริยะข้ามคืนครับ โปรแกรมยังเขียนไม่เสร็จเลย พรุ่งนี้ต้องใช้แล้ว ก็เอาไปใช้ทั้งๆอย่างนั้นเลย ช่วงอาทิตย์แรกๆนี่นั่งแก้โค้ตตรงนั้นเลย

จริงๆได้เขียน POS ด้วยตัวเองก็สนุกไปอีกแบบเหมือนกันได้ลองอะไรใหม่ๆบ้าง

เรื่องที่ใหม่มากตอนนั้นคือเรื่องการเปิดเก๊ะคิดเงิน (Cash Drawer) หรือเก๊ะเก็บเงิน คือเราไม่เข้าใจการทำงานมันจริงๆ เพราะเป็นเรื่องที่ใหม่มากๆของเรา

ตอนนั้นการแก้ปัญหาตอนนั้นคือ “สั่งให้เครื่องพิมพ์เป็นผู้เปิดเก๊ะคิดเงินหลังจากที่พิมพ์เสร็จ” (ในตอนนั้นใช้เครื่องพิมพ์ของ XPrinter N200N มั้ง เป็น USB)

ความวิกฤติก็คือ ไม่ว่าจะพิมพ์น้อยหรือเยอะแค่ไหนเครื่องพิมพ์ก็จะสั่งให้เปิดเก๊ะเสมอ (เอ้าก็เป็นคนสั่งเอง)

เราสามารถสั่งให้เรื่องพิมพ์ทำเช่นนั้นได้โดยการ คลิกขวาที่เครื่องพิมพ์เลือก properties แล้วเลือก Dervice Settings แล้วส่วนของ Cash Select ก็เลือกเอาว่าจะให้ทำยังไง (เปิดเก๊ะก่อนพิมพ์ หรือ พิมพ์ให้เสร็จก่อนค่อยเปิดเก๊ะ) อันนี้แล้วแต่ความสะดวกของแต่ละการใช้งาน

ทีนี่ตอนใช้งานจริงมันไม่ใช่ไง คือจะให้เปิดเก๊ะตลอดเวลาที่กระดาษออกมันก็ไม่ไหวป่ะก็เลยพยายามหาทางแก้ไขไปเปิดในอินเทอร์เนตก็มีแนะนำให้สร้าง hotkey สำหรับเปิดเก๊ะขึ้นมา ซึ่งเราว่ามันไม่ใช่

จนไปเจอคนแนะนำให้ทำ fwrite ส่งค่าเข้าไปที่เครื่องพิมพ์เป็นค่าสำหรับการ kick cash drawer ออกมาซึ่งก็ได้เป็นโค้ตข้างล่างนี้

$fpo = fsockopen("192.168.1.155", 9100, $er, $es, 10); 
if (!$fp) { 
    die('ERROR'); 
}else{ 
  $opencode = Chr(27) . Chr(112) . Chr(0). Chr(148) . Chr(49);
  fwrite($fp, $opencode);
  fclose($fp); 
} 
//192.168.1.155 เป็นเลข IP ของเครื่องพิมพ์ดู IP เครื่องพิมพ์และตั้งค่าได้โดยก่อนเปิดเครื่อง กดปุ่มพ่นกระดาษออกมาค้างไว้แล้วเปิดเครื่อง ปล่อยมือจากปุ่มพ่นกระดาษแล้วจะมีตั้งค่าออกมาครับ

แต่… อย่างที่บอกไปแล้วข้างบนครับคือโค้ตมันออกแบบมาเอาไว้ใช้สำหรับเครื่องพิมพ์ในระบบ Network ซึ่งหมายความว่าจะใช้โค้ตนี้ได้เครื่องพิมพ์ปัจจุบันของผม (แบบ USB) ใช้ไม่ได้ เลยตัดสินใจเปลี่ยนซะเลยเป็น Xprinter เหมือนเดิม แต่เปลี่ยนเป็นรุ่น 80C ซึ่งรองรับ Network

พอเราเสียบสายทุกอย่างเรียบร้อยแล้ว

ไม่ได้ใช้ได้เฉพาะ XPrinter อย่างเดียวนะ ใช้ได้เกือบทุกรุ่นเลยยังไงลองหาข้อมูลเกี่ยวกับ Kick Code กับยี่ห่อ + รุ่นในอินเทอร์เนตดูครับ อย่างของผมคือ 27 112 0 148 49 ดังนั้นก็เอาไปแก้ในโค้ตได้เลยครับ

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *