Barcode Scanner Emulator
ส่วนต่อท้าย ENTER และ TAB ในเครื่องสแกนบาร์โค้ด
ส่วนต่อท้ายคือการกดแป้นที่เครื่องสแกนส่งทันทีหลังข้อมูลบาร์โค้ดที่ถอดรหัสแล้ว การเลือกส่วนต่อท้ายที่ถูกและจัดการให้ถูกต้องในแอปเป็นแหล่งบั๊กการเชื่อมต่อเครื่องสแกนที่พบบ่อยที่สุดแหล่งหนึ่ง
ส่วนต่อท้ายคืออะไร และเหตุใดเครื่องสแกนจึงส่ง
เนื่องจากเครื่องสแกนส่งข้อมูลเป็นการกดแป้นดิบโดยไม่มีตัวคั่นในตัว แอปที่รับจึงไม่มีทางรู้ได้อย่างน่าเชื่อถือว่าการสแกนจบแล้ว เว้นแต่เครื่องสแกนจะต่อแป้นปิดท้ายอย่างชัดเจน แป้นนั้นคือส่วนต่อท้าย หากไม่มี แอปจะต้องเดาว่าเสร็จแล้วจากหมดเวลาที่ไม่มีการทำงาน ซึ่งช้ากว่าและเชื่อถือน้อยกว่า
ENTER (CR)
ส่วนต่อท้ายที่พบบ่อยที่สุด ส่งเป็นแป้น Enter/Return ซึ่งตรงกับ carriage return ใน ASCII คือ 0x0D ในฟอร์ม HTML ส่วนใหญ่ การกด Enter ในช่องข้อความช่องเดียวจะส่งฟอร์มที่ห่ออยู่ ดังนั้น ENTER จึงเข้ากับเวิร์กโฟลว์ “สแกนแล้วส่ง” เช่น ช่องค้นหาหรือการค้นหาช่องเดียว
TAB
ส่งเป็นแป้น Tab คือ 0x09 แทนที่จะส่งฟอร์ม Tab จะย้ายโฟกัสไปยังองค์ประกอบถัดไปที่โฟกัสได้ ส่วนต่อท้ายนี้เหมาะกับการป้อนข้อมูลหลายขั้น เช่น สแกนรหัสสินค้า → เลื่อนไปช่องจำนวนอัตโนมัติ → สแกนรายการถัดไป โดยไม่ส่งก่อนเวลา
คู่ CR/LF และการไม่มีส่วนต่อท้าย
เครื่องสแกนบางรุ่นตั้งให้ส่งคู่ CR+LF ทั้งคู่ได้ (พบบ่อยเมื่อป้อนแอปแบบเทอร์มินัลหรืออนุกรม) และบางรุ่นตั้งให้ไม่มีส่วนต่อท้ายเลย ในกรณีนั้นแอปต้องตรวจว่าการสแกนจบจากจังหวะเวลาของอินพุต
เหตุใดจึงสำคัญต่อ POS และเว็บแอป
ส่วนต่อท้ายที่ผิดทำให้เกิดบั๊กที่เฉพาะเจาะจงและสับสน: ส่วนต่อท้าย ENTER บนฟอร์มหลายช่องอาจส่งฟอร์มก่อนกรอกจำนวนหรือส่วนลด ส่วนส่วนต่อท้าย TAB บนเวิร์กโฟลว์ช่องค้นหาเดียวจะปล่อยให้การค้นหาไม่ถูกเรียก เพราะไม่มีอะไรกระตุ้นการส่ง ต้องจับคู่ส่วนต่อท้ายกับเวิร์กโฟลว์ ไม่ใช่ปล่อยไว้ที่ค่าโรงงาน
วิธีทดสอบพฤติกรรมส่วนต่อท้าย
สแกนลงใน ตัวทดสอบอินพุตบาร์โค้ด ซึ่งรายงานชัดเจนว่าตรวจพบ ENTER หรือ TAB ที่ท้ายการสแกน หากต้องการเห็นรหัสแป้นจริง (เช่น แยก CR จาก LF) ให้ใช้ ตัวทดสอบเหตุการณ์แป้นพิมพ์ แทน
การเปลี่ยนส่วนต่อท้ายบนเครื่องสแกน
พฤติกรรมส่วนต่อท้ายเป็นการตั้งค่าฝั่งเครื่องสแกน ตั้งค่าผ่านยูทิลิตีซอฟต์แวร์ของผู้ผลิต หรือโดยการสแกนบาร์โค้ดตั้งค่าพิเศษที่พิมพ์ในคู่มือเครื่องสแกน ดู การตั้งค่าเครื่องสแกนบาร์โค้ด สำหรับขั้นตอนการตั้งค่าทั่วไป