Print อักษรใหญ่,Barcode ด้วย ESC-Code
เครดิต : หัวข้อนี้เป็นความสำเร็จของ รุ่นพี่ที่ทำงานคนหนึ่งครับ (พี่บูลย์)เกิดจาก IBM Printer มีราคาแพงมากกว่า Printer ทั่วไป 2-3 เท่า
ในขณะที่ บางงาน ดูไม่คุ้มที่ต้องทำตามขั้นตอนของ IBM
IBM ได้เตรียม Printer File ไว้สำหรับการทำ อักษร(Font)ใหญ่ หรือ Barcode
แต่เท่าที่ทราบ จนถึงปัจจุบัน (ปี 2016) ต้องใช้ Printer เฉพาะรุ่นที่ รองรับ *IPDS ได้
(ปี 2015 ได้ทราบว่า Laser Printer หลายรุ่นทำได้แล้ว - แค่ลง PTF เพิ่ม)
ทางเลือกอื่น ในการพิมพ์ อักษร(Font)ใหญ่ หรือ Barcode
บน Dot Metric Printer ที่ไม่รองรับ *IPDS
คือ การพิมพ์โดยผ่าน Mode = ESC-Code ของ Printer
Q: ทำไมต้องใช้ Dot Metric Printer
A: ใช้กับ งานที่ต้องมี Copy หรือ ความเร็วสูง, ปริมาณมาก, ทนทาน (ราคาถูกกว่า)
ก่อนเลือกใช้ ขอให้คำนวนต้นทุนก่อนน๊ะครับ! (ปี 2017 Laser Printer ราคาถูกลงมามาก)
Q: ข้อเสียของ Dot Metric Printer มีอะไร ?
A: อักษร/Barcode "ไม่ชัด" - ไม่เหมาะกับส่งให้ลูกค้า
ถ้าใช้กันเอง (ต้องมี Barcode ที่ผ่านการทดสอบ ว่าอ่านได้)
ตย. ใช้ Printer รุ่น Fujitsu DL-6400 เมื่อต่อกับ Window
(ยุ่ง-1) Config Window/Printer
1.1 ต้องติดตั้ง Driver = EPSON LQ 2xxx
ผมเคยทดลองใช้ Driver ของ Fujistu ตรงๆ สั่งพิมพ์ ESC ไม่ได้!
1.2 Config ให้ Printer ให้ทำงาน กับ ESC ได้ (ผมเข้าใจว่ามันตั้งค่าไว้แล้ว)
EUMULATE =ESC/P2
(ยุ่ง-2) เขียนโปรแกรม
2.1 ก่อนที่ RPG จะเริ่ม เปิด/สร้าง Spool File
OVRPRTF QPRINT RPLUNPRT(*NO)
หมายถึง ไม่ต้อง auto clear ค่าถ้าพบ อักษรพิเศษ (กลุ่ม "คำสั่ง" ESC)
ทำที่ CL หรือ ทำใน RPG (เรียกใช้ ก่อน OPEN)
2.2 แทรก ESC-Command
- เปิดใช้
- (ต่อไปนี้) ให้พิมพ์ อักษรใหญ่/Barcode
- ข้อความที่จะพิมพ์
- ยกเลิก การพิมพ์ อักษรใหญ่/Barcode
ESC-Command
ใครสนใจไปลองอ่านดูน๊ะครับ มีรายละเอียด น่าสนใจมากแบบย่อๆ คือ EPSON ได้ฝังชุดคำสั่ง ให้เราสามารถสั่งพิมพ์ได้โดยตรง เป็นชุดคำสั่งไม่มาก
เช่น อักษรใหญ่ขึ้น 1,2 เท่า อักษรกว้างขึ้น 1,2 เท่า เป็นต้น
ต้องไปอ่านคู่มือ ว่า ESC-Code ทำอะไรได้บ้าง ตรงกับที่เราต้องการหรือไม่ ?
สังเกต - ตัวเลือกจะน้อย เมื่อเทียบกับ สิ่งที่เราคุ้นเคย เช่น ตั้งค่า Font=Arial ,Size=8,12,72
Q: ทำงานยาก และ มีข้อจำกัดเพียบ แล้วทำไมยังใช้อยู่ ?
A: เพราะ ตัวเลือกอื่นๆ เสียเงินมากครับ
Printer กลุ่ม POS หลายรุ่น ยังรองรับ งานในลักษณะนี้อยู่
(แปลกเหมือนกัน ผ่านมา 20 ปีแล้ว ผมยังต้องใช้เทคนิคนี้อยู่)
Q: แล้วมีตัวเลือก อื่นๆมั๊ย ?
A: ผมเสนอให้ ย้ายไปเขียน Report บน Web แล้วครับ!
ใครที่ ถูกกดดันให้ทำในแบบที่คุ้นเคย บทความนี้คงช่วยได้บ้าง (ผมว่ามันยากกว่า)
วิธีใช้
โดยการส่งรหัส แทรกลงไปในตัวรายงาน ด้วย Format ตามนี้"เปิดใช้ ESC" + "จำนวนคำสั่งที่เรียกใช้" + คำสั่ง + ข้อความที่จะพิมพ์
ตย. ต้องการพิมพ์ ความกว้าง 2 เท่า, ความสูง 2 เท่า ใน O-spec เดิม
เดิม
O E 10 DTL010
O O#TXT 40
1. เลือก ESC Command ให้ตรง + จัดให้มี Format
"คำสั่งเปิดใช้ ESC" + จำนวนคำสั่ง + คำสั่ง ESC + "คำสั่งปิด ESC"
1.1 คำสั่ง "เปิด" ใช้ ESC = 03 คำสั่ง "ปิด" ด้วย 40
จำนวนคำสั่ง = (นับจากด้านล่าง)
เครื่องที่ผมใช้เป็น DBCS (double byte) จะนับแบบนี้
ตาราง ESC-Command (รหัสเลขฐาน 16)
ESC (1B) v (76) Double Width เปิด = 01 รหัสรวม 1B7601 (3 Byte)
ESC (1B) w(77) Double Height เปิด = 01 รหัสรวม 1B7701 (3 Byte)
... จำนวนคำสั่ง ที่จะใช้= 6 คำสั่ง
สรุป เขียนต่อเนื่องคือ 03061B76011B770140
1.2 คล้ายกัน เพื่อพิมพ์ ข้อความเสร็จ ให้ "ยกเลิก" ESC ข้างต้น
เปลี่ยนจาก เปิด (01) เป็น ปิด (00)
ตาราง ESC-Command (รหัสเลขฐาน 16)
ESC (1B) v (76) Double Width ปิด = 00 รหัสรวม 1B7600 (3 Byte)
ESC (1B) w(77) Double Height ปิด = 00 รหัสรวม 1B7700 (3 Byte)
ใน RPG เขียนแบบนี้
I
X'03061B7601- C HEXON
I
'1B770140'
I
X'03061B7600- C HEXOF
I '1B770040'
แทรกคำสั่งใน O-Spec
เดิม
O E 10 DTL010
O O#TXT 40
ใหม่
(แทรก)
O E 10 DTL010
O
HEXON 1
O O#TXT 40
O HEXOF
60