PCL มาตรฐานภาษาสั่งงานเครื่องพิมพ์เลเซอร์

 ความเป็นมามาตรฐานคำสั่งการควบคุมเครื่องพิมพ์ที่เรียกว่า  PCL (Printer Command Language) และแสดงให้เห็นลักษณะและความสามารถที่สำคัญของภาษาสั่งงานพีซีแอล

ยุคของการใช้เครื่องพิมพ์

การใช้เครื่องพิมพ์มีวิวัฒนากรพร้อมกับการพัฒนาคอมพิวเตอร์ เพราะเครื่องพิมพ์ก็เป็นอุปกรณ์ที่สำคัญสำหรับการทำรายงานผลที่ได้จากคอมพิวเตอร์ การใช้งานเครื่องพิมพ์มีการพัฒนามาหลายยุคสมัย และมีพัฒนาการดีขึ้นเรื่อย ๆ เราอาจจัดแบ่งเครื่องพิมพ์ออกเป็นระดับตามการใช้งานและการพัฒนาได้ดังนี้
ระดับแรก การพิมพ์ที่เรียกว่า Print and Space ลักษณะการพิมพ์เหมือนเครื่องพิมพ์ดีด กล่าวคือ ถ้าต้องการเลื่อนไปพิมพ์กลางหน้ากระดาษก็ต้องเคาะ Space ไปเรื่อย ๆ จนถึงตำแหน่งที่ต้องการ
ระดับที่สอง  เป็นงานพิมพ์ที่ใช้รหัสตัวควบคุมมาตรฐาน ทำให้ลดจำนวนส่งตัวอักษร space ลง เช่น การใช้ CR, LF การแทป การย่อหน้าโดยกำหนดเป็นตัวอักษรในตารางรัหสแอสกี และสามารถใช้ในการสื่อสารระหว่างเครื่องคอมพิวเตอร์กับเครื่องพิมพ์
ระดับที่สาม เป็นงานพิมพ์เวิร์ดโปรเซสเซอร์ ยุคนี้เป็นยุคของเครื่องพิมพ์ดอตแมตริกซ์ ซึ่งรับรุ้คำสั่ง ESC มีการกำหนดรูปแบบการพิมพ์ การย่อหน้า การใช้ตัวอักษรใหญ่เล็ก ขีดเส้นใต้ ตัวเอน การพิมพ์ลักษณ์พิเศษอื่น ๆ เครื่องพิมพ์ในยุคนี้เป็นที่รู้จักกันดีในหมู่นักไมโครคอมพิวเตอร์
ระดับที่สี่ เป็นการใช้ภาษาสั่งการพิมพ์ ลักษณะนี้ได้แก่ โพสต์สคริปต์,พีซีแอล เป็นต้น ภาษาสั่งงานพิมพ์นี้เป็นการประยุกต์ใช้งานพิมพ์ในลักษณะพิมพ์เป็นหน้าแทนที่จะพิมพ์แบบลำดับทีละบรรทัด เครื่องพิมพ์ที่พิมพ์เป็นหน้า ได้แก่ เครื่องพิมพ์เลเซอร์ เป็นต้น งานพิมพ์จึงทำได้ดี สามารถจัดรูปภาพและเอกสารร่วมกันได้ งานประยุกต์ก็จะกว้างขวางขี้นไปอีกมาก เช่น งานไทป์เซตติ้ง งานออกแบบกราฟิก งานเดสค์ท้อปพับลิชชิ่ง เป็นต้น

ทำไมต้องพีซีแอล (PCL)

บริษัทฮิวเล็ตต์-แพคการ์ด ซึ่งเป็นบริษัทที่มีชื่อเสียงในการพัฒนาเครื่องพิมพ์เลเซอร์และมีผู้นิยมใช้เครื่องพิมพ์ของฮิวเล็ตต์-แพคการ์ดอยู่มาก ได้พัฒนาภาษาสั่งงานเครื่องพิมพ์ขึ้นมาภาษาหนึ่งเรียกว่า พีซีแอล (PCL-Printer Command Language) พีซีแอลได้รับการพัฒนาขึ้นมาด้วยจุดมุ่งหมายดังต่อไปนี้
- ให้เครื่องพิมพ์ทุกเครื่องที่มีโครงสร้างกลไกฮาร์ดแวร์ต่างกันจะทำงานกับซอฟต์แวร์ได้เหมือนกัน
- ครื่องพิมพ์ระดับที่ต่ำกว่าจะเป็นเซตย่อยของเครื่องพิมพ์ระดับนี้กล่าวคือ การใช้งานของเครื่องพิมพ์อะไรก็ตามสามารถใช้กับพีซีแอลได้
- สั่งงานได้กะทัดรัดและง่ายรวดเร็ว
- มีการทำงานได้ทั้งรูปแบบที่เรียกว่า มาสเตอร์กราฟิกหรือแบบเดซีวีลที่พิมพ์ตัวอักษรทีละตัว เห็นได้ว่าบริษัทฮิวเล็ต-แพคการ์ดได้เน้นเครื่องพิมพ์ที่ใช้ PCL ครอบคลุมการทำงานของเครื่องพิมพ์อื่น ๆ ทั้งหมด ทำให้การเขียนซอฟต์แวร์จะได้เป็นมาตรฐานเดียวกันได้

ลักษณะของพีซีแอล

พีซีแอลมีลักษณะของคำสั่งที่ใช้ในการสั่งงานเครื่องพิมพ์ การสั่งงานก็เหมือนกับสั่งงานเครื่องพิมพ์ในระดับดอตแมตริกซ์เดิม คือส่งรหัสไปยังเครื่องพิมพ์ เครื่องพิมพ์จะทำการแปลความหมายของการพิมพ์
พีซีแอลที่ใช้นี้มี 3 รูปแบบคือ
1.  ใช้รหัสควบคุมโดยตรง เช่น การใช้รหัส CR, LF, FF เป็นต้น รหัสควบคุมนี้อยู่ในตารางรหัสแอสกีแล้ว
2.  ตัวอักษรตามรหัส ESC เช่น ESC ตามด้วย X  X ที่ตามมาจะสื่อความหมายกับเครื่องพิมพ์ในการสั่งการทำงาน รหัส X ที่ใช้มีค่าอยู่ระหว่างรหัส แอสกี 48-126 เช่น ESC E หมายถึงใช้รีเซตเครื่องพิมพ์ ESC 9 หมายถึงการรีเซตการตั้งขอบซ้ายและขอบขวา
3.  ตัวอักษรตามรหัส ESC ในรูปพารามิเตอร์ ในกรณีนี้ใช้ตัวอักษรหลายตัว และเป็นตัวแปรหรือตัวเลขที่แปรเปลี่ยนค่าได้ รูปแบบของการใช้เป็น 
ESC X  y # Z1 # Z2 # Z3…#Zn [data] โดยที่ 
y, #, Zi และ [data] อาจเป็นตัวเผื่อเลือก คือ จะมีหรือไม่ก็ได้
X เป็นตัวอักษรที่เรียกว่า พารามิเตอร์ ใช้รหัสแอสกีจาก 33-47 (!ถึง/) 
Y คือ ตัวอักษรบอกกรุ๊ป ใช้รหัสแอสกีจาก 96-126
# คือ ฟิล์ดบอกค่า เป็นกลุ่มของตัวอักษรที่เป็นค่าตัวเลข
Zi คือ ตัวอักษรพารามิเตอร์
Zn คือ ตัวบอกจบคำสั่ง
[data] คือ ตัวข้อมูลที่มองแบบรหัสไบนารี่
ตัวอย่างพีซีแอล

 คำสั่งดังกล่าวเป็นคำสั่งที่รวมคำสั่งเข้าด้วยกัน คือ ESC & I 1 o กับ ESC & I 1 2 A สังเกตว่าหาก

คำสั่งที่ใช้อยู่ในกลุ่มเดียวกันสามารถนำมารวมกันได้ แต่ต้องเปลี่ยนตัวอักษรบอกจบคำสั่งของคำสั่งแรกให้เป็นตัวอักษรตัวเล็กเสียก่อน เพราะรหัสจบคำสั่งของพีซีแอลจะใช้ตัวอักษรตัวใหญ่เท่านั้น

พีซีแอลสั่งงานให้ทำอะไรได้บ้าง

 ในที่นี้จะไม่ยกคำสั่งของพีซีแอล เพราะคำสั่งของพีซีแอลมีมาก และไม่สามารถนำมาแสดงให้ดูได้หมด ผู้สนใจหาดูได้จากหนังสือ Technical Reference Manual ของเครื่องพิมพ์เลเซอร์ สำหรับบทความนี้จะกล่าวถึงขีดความสามารถของพีซีแอลว่าทำอะไรให้เราได้บ้างในเชิงภายนอกที่เห็นว่าเราจะใช้พีซีแอลมาช่วยงานเราได้แค่ไหน

คำสั่งในการกำหนดขนาดกรอบการพิมพ์

 เครื่องพิมพ์เลเซอร์เป็นเครื่องพิมพ์ที่พิมพ์ได้ทีละแผ่น การจัดการข้อมูลการพิมพ์จะต้องกำหนดขอบเขตของการพิมพ์ โดยการกำหนดกรอบกระดาษ การกำหนดจุดบนกระดาษ พีซีแอลอ้างอิงตำแหน่ง X,Y ตำแหน่งอ้างอิง 0,0 อยู่บนซ้ายสุดของขอบกระดาษ โครงสร้างของตำแหน่งกระดาษแสดงได้ดังรูปที่ 1
ในการอ้างอิงทางแน Xของพีซีแอล จะอ้างอิงเป็นจุด หรืออ้างแบบแบบแกนนอน จะเป็นดังรูป 2
ขนาดกระดาษ
A
B
C
D
E
F
G
H
LETTER
3300
2550
3180
2550
60
60
50
100
LEGAL
4200
2550
4080
2550
60
60
50
100
EXECUTIVE
3150
2175
3030
2175
60
60
50
100
A4
3507
2480
3389
2480
60
58
50
92
COM-10
2850
1237
2730
1237
60
60
50
100
MONARC
2250
1162
2130
1162
60
60
50
100
C5
2704
1913
2586
1913
60
58
50
92
DL
2598
1299
2480
1299
60
58
50
92

รูปที่ 2 กรอบการพิมพ์แบบแกนนอน

ขอบกระดาษ
A
B
C
D
E
F
G
H
LETTER
2550
330
2400
330
50
100
60
60
LEGAL
2550
4200
2400
4200
50
100
60
60
EXCUTIVE
2175
3150
2025
3150
50
100
60
60
A4
2480
3507
2338
2507
50
92
60
58
COM-10
1237
2850
1087
2850
50
100
60
60
MONARC
1162
2250
1012
2250
50
100
60
60
C5
1913
2704
1771
2704
50
92
60
58
DL
1299
2598
1157
2598
50
92
60
58

รูปที่ 3 กรอบการพิมพ์แบบแถบตั้ง

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

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

พีซีแอลสามารถสั่งการกำหนดเคอร์เซอร์ได้เหมือนจอภาพ

 การพิมพ์บนกระดาษจำเป็นต้องมีการกำหนดเคอร์เซอร์ การเลื่อนเคอร์เซอร์ เครื่องพิมพ์เลเซอร์มีเคอร์เซอร์และจะเลื่อนเคอร์เซอร์ได้สองแบบ แบบแรกคือ การเลื่อนแบบแอปโซลุท และแบบที่สองเป็นแบบ รีเลตีฟ แบบแอปโซลุทเป็นแบบที่ใช้พีซีแอลสั่งให้เลื่อนไปยังตำแหน่ง X, Y โดยตรง ส่วนแบบรีเลตีฟนั้นค่าตัวเลขพารามิเตอร์ที่บอกมาจะนำมาบวกหรือลบกับค่าเดิม โครงสร้างการกำหนดเคอร์เซอร์แสดงได้ดังรูป 4
ในการพิมพ์ตัวอักษรลงบนกระดาษเคอร์เซอร์จะเลื่อนไปเองโดยอัตโนมัติ นอกจากนี้เรายังสามารถ

เก็บตำแหน่งของเคอร์เซอร์ลงในสแต็ก และเรียกหน่วยเดซิพอยต์ หรืออ้างเป็นคอลัมน์ก็ได้ การอ้างเป็น
เดซิพอยต์เป็นหน่วยทางด้านงานพิมพ์ ซึ่งหนึ่งเดซิพอยต์มีค่าเท่ากับ 1/720 นิ้ว ส่วนการอ้างอิงทางแกน
Y จะต้องเป็นจุดหรือหน่วยเดซิพอยต์หรือเป็นแถวก็ได้
เครื่องพิมพ์เลเซอร์ส่วนใหญ่ให้รายละเอียดจุดมีค่าเป็น 1/300 นิ้ว หรือพิมพ์ได้ละเอียด 300 จุดต่อนิ้ว
การสั่งงานด้วยพีซีแอลสามารถสั่งให้การพิมพ์พิมพ์ตามแนวนอน หรือแนวตั้งของกระดาษก็ได้ ถ้าพิมพ์แนวนอน ก็เรียกการพิมพ์แบบ landscape และถ้าพิมพ์แกนตั้งก็เรียกว่า portrait
การพิมพ์แบบนอนนั้นผู้สั่งงานใช้คำสั่งพีซีแอลเพื่อกำหนดการพิมพ์จะต้องไม่พิมพ์เกินกรอบที่กำหนด เครื่องพิมพ์แต่ละเครื่องมีกรอบการพิมพ์ ดังนั้นการอ้างอิงตำแหน่ง X, Y ต้องไม่เกินกว่าตำแหน่งของกรอบกระดาษ
กรอบกระดาษแบบแกนนอนมีกรอบการพิมพ์ได้ดังรูปที่ 4 ส่วนการสั่งงานพีซีแอลในกรอบการพิมพ์กลับเข้ามาใหม่ได้ การสั่งพิมพ์นี้สั่งพิมพ์ได้ทั้งแบบตัวอักษรหรือกราฟิกผสมกันได้

รูปที่ 4 การควบคุมเคอร์เซอร์

พีซีแอลสามารถสั่งงานเพื่อกำหนดสิ่งแวดล้อม

 ข้อเด่นของการใช้พีซีแอลเห็นจะได้แก่การสั่งพิมพ์เป็นหน้า และคำสั่งพีซีแอลมีรูปลักษณะที่ควบคุม

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

พีซีแอลกับลักษณะของตัวอักษร (ฟอนต์)

 ปกติภายในเครื่องพิมพ์เลเซอร์มีการเก็บรูปแบบลักษณะตัวอักษรไว้แล้วหลายรูปแบบ เครื่องพิมพ์

เลเซอร์บางเครื่องสามารถเก็บรูปแบบตัวอักษรได้ถึง 16 แบบหรือสามารถโหลดมาเพิ่มเติมได้อีก ในการสั่งพิมพ์นั้นอาจให้พิมพ์ตัวหนาโดยใช้ฟอนต์เดิมได้ หรือเลือกฟอนต์หลายชนิดผสมกันได้ รูปที่ 5 เป็นตัวอย่าง
การสั่งให้พิมพ์ตัวหนาและเลือกตัวอักษรหลายแบบ


รูปที่ 5 ตัวอย่างการสั่งให้พิมพ์ตัวหนาและการเลือกตัวอักษรหลายแบบ

การสร้างตัวอักษรใช้เอง

 การสร้างตัวอักษรภาษาไทยใช้เองทำได้สะดวกมาก เพราะเครื่องพิมพ์เลเซอร์มีขีดความสามารถที่จะให้ผู้ใช้งานสร้างไฟล์ตัวอักษรและโหลดเข้ามายังเครื่องพิมพ์เลเซอร์ได้
ตัวอักษรที่จะสร้างขึ้นจะเป็นตัวอักษรที่มีความละเอียดค่อนข้างสูง ดังนั้นจึงต้องใช้จุดที่อยู่ในเซลตัวอักษรจำนวนมาก
รูปที่ 6 เป็นขอบเขตของตัวอักษรหนึ่งตัว ซึ่งเมื่อสร้างตัวอักษรขึ้นใช้เองต้องให้รายละเอียดข้อมูลเหล่านี้ไว้หมด

รูปที่ 6 เซลตัวอักษร

การกำหนดข้อมูลตัวอักษรจะเก็บไว้ในไฟล์ โดยโครงสร้างของไฟล์เขียนได้อย่างคร่าว ๆ เป็นดังรูปที่ 7

รูปที่ 7 โครงสร้างไฟล์ที่เก็บข้อมูลตัวอักษร
ข้อมูลตัวอักษรแต่ละตัวจะเก็บเป็นข้อมูลตัวเลขไบนารี และมีข้อมูลอยู่มากพอควรสำหรับตัวอักษร แต่ละชุด รูปที่ 8 เป็นตัวอย่างข้อมูลของตัวอักษรตัวหนึ่งที่เก็บรายละเอียดของตัวอักษรขนาด 24x32 จุด

รูปที่ 8 ข้อมูลตัวอักษณหนึ่งตัว
ด้วยวิธีการกำหนดข้อมูลตัวอักษรแต่ละตัวแยกกัน ทำให้เราสามารถสั่งงานเครื่องพิมพ์เลเซอร์ในลักษณะที่พิมพ์แบบตัวอักษรที่มีความกว้างไม่เท่ากันได้

คำสั่งพีซีแอลสำหรับลากเส้น ตีกรอบ ระบายแรเงา

 เพื่อให้การใช้งานเครื่องพิมพ์เลเซอร์ได้ดียิ่งขึ้น คำสั่งของพีซีแอลยังรวมเอาคำสั่งที่เกี่ยวกับกราฟิกลงไปไว้ด้วย เช่น คำสั่งในการลากเส้นตีกรอบ หรือแม้แต่ระบายหรือแรเงา
ผู้เขียนโปรแกรมพีซีแอลสามารถนำคำสั่งต่าง ๆ มารวมกันให้เป็นมาโครได้ นอกจากนี้พีซีแอลยังครอบคลุมการทำงานแบบเดิมที่ใช้คำสั่ง ESC ไว้กล่าวคือ สามารถทำการแปลงรหัส ESC ที่ใช้กับเครื่องพิมพ์อื่นให้ใช้กับเครื่องพิมพ์เซอร์ได้


เขียนโดย : รศ. ยืน ภู่วรวรรณ
ไมโครคอมพิวเตอร์ ฉบับที่ 58 เดือนพฤษภาคม 2539