24
Thaieasyelec นายสิทธิกร หมึกแดง (นักศึกษาฝ ึกงาน ) : Line computer54 QT + THERMAL PRINTER

บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

QT + THERMAL PRINTER

Page 2: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

ไฟล์ mianwindow.ui ไดเรกทอรี่ Forms ภายในประกอบไปด้วย Form File (.ui) ท่ีได้จากการออกแบบ หน้าตาของโปรแกรม (User Interface) การออกแบบ GUI สามารถดูรายละเอียดเพ่ิมเติมได้จากก บทความการพัฒนาโปรแกรมบน Raspberry Pi ด้วย Qt ตอนท่ี 3 แนะน าการใช้งาน Qt Creator

.

.

.

.

Page 3: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

อธิบาย ไฟล์ mianwindow.ui เพ่ิมเติม 1. ปุ่ม btn_connect_printer คือปุ่มคอนเน็ค ท ำหน้ำเชื่อมต่อกับคอมพอร์ต 1.1 comboBox_port_printer คือ คอมโบบล็อก มีไว้ส ำหรับเลือกคอมพอร์ต 1.2 comboBox_baud_rate_printer คือ คอมโบบล็อก มีไว้ส ำหรับเลือกบอร์ดเรต 1.3 lineEdit_status_com_port_printer คือ กล่องข้อควำม มีไว้ส ำหรับแสดงสถำนะกำรเชื่อมต่อคอมพอร์ต ซ่ึงทั้ง ข้อที่ 1,1.1,1.2 และ 1.3 อยู่ภำยใน ฟังก์ชั่น void MainWindow::on_btn_connect_printer_clicked(bool checked) 2. ปุ่ม btn_feed_printer คือปุ่มฟีตกระดำษ ท ำหน้ำเที่ฟีตกระดำษ 1 บรรทัด 2.1 textEdit_input_text_printer คือ กล่องข้อควำม มีไว้ส ำหรับพิมพ์ข้อควำมใดๆก็ได้ ซ่ึงจะท ำงำนร่วมกับปุ่มฟีตกระดำษ เม่ือท ำกำรพิมพ์ข้อควำมในกล่องข้อควำมเสร็จแล้ว ให้ท ำกำรกดปุ่มฟีตกระดำษ 1 ครั้ง เพ่ือท ำกำรพิมพฺข้อควำมดังกล่ำวออกมำ ซ่ึงทั้ง ข้อที่ 2 และ 2.1 อยู่ภำยใน ฟังก์ชั่น void MainWindow::on_btn_feed_printer_clicked() 3. ปุ่ม btn_Initialze คือปุ่มที่มีไว้ส ำหรับก ำหนดค่ำเริ่มต้นกำรพิมพ์ให้กับปริ้นเตอร์ ซ่ึงอยู่ภำยใน ฟังก์ชั่น void MainWindow::on_btn_Initialze_clicked() 4. ปุ่ม btn_Bold คือปุ่มที่มีไว้ส ำหรับก ำหนดรูปแบบตัวอักษรให้เป็นตัวหนำ ซ่ึงอยู่ภำยใน ฟังก์ชั่น void MainWindow::on_btn_Bold_toggled(bool checked) 5. lineEdit_barcode_number คือ กล่องข้อควำมซีเรียล ที่มีไว้ส ำหรับกรอกหมำยเลขซัเรียล 13 ให้กับบำร์โค้ด ซ่ึงอยู่ภำยใน ฟังก์ชั่น void MainWindow::on_lineEdit_barcode_number_textChanged(const QString &arg1) 6. combo_barcod_w คือ คอมโบบล็อก มีไว้ส ำหรับเลือกขนำดควำมกล้ำงของบำร์โค้ด 7. combo_barcod_h คือ คอมโบบล็อก มีไว้ส ำหรับเลือกขนำดควำมสูงของบำร์โค้ด 8 combo_barcod_font คือ คอมโบบล็อก มีไว้ส ำหรับเลือกฟอนต์ของบำร์โค้ด 9. combo_barcod_position คือ คอมโบบล็อก มีไว้ส ำหรับเลือกต ำแหน่งกำรแสดงของหมำยเลซีเรียลบำร์โค้ด

Page 4: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

10.ปุ่ม btn_barcode_print คือ ปุ่มปริ้นบำร์โค้ด มีไว้ส ำหรับปริ้นบำร์โค้ด ซ่ึงจะท ำงำนร่วมกับเครืองมือในข้อที่ 5-10 ข้อมูลที่ได้ท ำกำรเลือกไว้ข้ำงต้น จะถูกน ำมำสั่งปริ้นในปุ่มปริ้นบำร์โค้ดนี้ ซ่ึงทั้ง ข้อที่ 5,6,6,7,8,9 และ 10 อยู่ภำยใน ฟังก์ชั่น void MainWindow::on_btn_barcode_print_clicked() 11. radioButton_underline_1 คือปุ่มเรดิโอบอททอม มีไว้ส ำหรับก ำหนดรูปแบบตัวอักษรให้ขีดเส้นใต้ ขนำด 1 dot ซ่ึงอยู่ภำยใน ฟังก์ชั่น void MainWindow::on_radioButton_underline_1_clicked(bool checked) 12. radioButton_underline_2 คือปุ่มเรดิโอบอททอม มีไว้ส ำหรับก ำหนดรูปแบบตัวอักษรให้ขีดเส้นใต้ ขนำด 2 dot ซ่ึงอยู่ภำยใน ฟังก์ชั่น void MainWindow::on_radioButton_underline_2_clicked(bool checked) 13. radioButton_underline_3 คือปุ่มเรดิโอบอททอม มีไว้ส ำหรับก ำหนดรูปแบบตัวอักษรให้ยกเลิกกำรขีดเส้นใต้ ซ่ึงอยู่ภำยใน ฟังก์ชั่น void MainWindow::on_radioButton_underline_3_clicked(bool checked) 14. radioButton_rotate_1 คือ ปุ่มเรดิโอบอททอม มีไว้ส ำหรับก ำหนดรูปแบบตัวอักษร ให้หมุนตำมเข็มนำฬิกำ 90 องศำ โดยมีขนำด 1 dot ซ่ึงอยู่ภำยใน ฟังก์ชั่น void MainWindow::on_radioButton_rotate_1_clicked(bool checked) 15. radioButton_rotate_1 คือ ปุ่มเรดิโอบอททอม มีไว้ส ำหรับก ำหนดรูปแบบตัวอักษร ให้หมุนตำมเข็มนำฬิกำ 90 องศำ โดยมีขนำด 2 dot ซ่ึงอยู่ภำยใน ฟังก์ชั่น void MainWindow::on_radioButton_rotate_2_clicked(bool checked) 16. radioButton_rotate_1 คือ ปุ่มเรดิโอบอททอม มีไว้ส ำหรับก ำหนดรูปแบบตัวอักษร ให้ยกเลิกกำรหมุนตำมเข็มนำฬิกำ 90 องศำ และก ำหนดขนำดตัวอักษรเป็นขนำดปกติ ซ่ึงอยู่ภำยใน ฟังก์ชั่น void MainWindow::on_radioButton_rotate_3_clicked(bool checked) 17. ปุ่ม btn_logo คือปุ่มที่มีไว้ส ำหรับสั่งปริ้นบำร์โลโก้ ซ่ึงโลโก้ดังกล่ำวได้ถูกบันทึกไว้แล้วในหน่วยควำมจ ำของเครื่องปริ้น เพียงแค่กดปุ่มนี้ เครื่องปริ้นก็จะท ำกำรเรียกโลโก้ที่อยู่ในหน่วยควำมจ ำ ขึ้นมำปริ้น ซ่ึงอยู่ภำยใน ฟังก์ชั่น void MainWindow::on_pushButton_clicked()

Page 5: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

ไฟล์ .pro เป็นไฟล์ท่ีเก็บรายละเอียดของตัว Project

Page 6: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

ไฟล์ mainwindow.h ไดเรกทอรี่ Headers ภายในประกอบด้วย Header File (.h) ท่ีประกาศใน Project

บรรทัดที่ 4-16 เรียกใช้คลำส ต่ำงๆที่ใช้ในงำน

Page 7: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

บรรทัดที่ 31-47 ประกำศฟังก์ชั่นย่อย ภำยใต้ private slot สำมำรถเรียกใช้งำนตัวแปรที่อยู่ในคลำสเดียวกันได้ เท่ำนั้น บรรทัดที่ 51-52 ประกำศตัวแปร ภำยใต้ private นี้ คลำสอ่ืนๆสำมำรถเรียกใช้งำนตัวแปรได้

Page 8: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

ไฟล์ mian.cpp

mainwindow.cpp ไดเรกทอรี่ Sources ภายในประกอบด้วย Source File (.cpp) ท่ีเป็นโค้ดโปรแกรมของ Project

Page 9: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

บรรทัดที่ 5 ประกำศตัวแปร เป็น Global

บรรทัดที่ 24 ประกำศตัวแปร serial_printer เป็น พอยต์เตอร์ บรรทัดที่ 26-29 เป็นกำรก ำหนดพำรำมิเตอร์ หรือ ก ำหนดชื่อคอมพอร์ตลงไปใน ui_comboBox_port บรรทัดที่ 31-32 เป็นกำรก ำหนดพำรำมิเตอร์ หรือ ก ำหนดบอร์ดเรตลงไปใน ui_comboBox_baud_rate บรรทัดที่ 35-38 เป็นกำรก ำหนดพำรำมิเตอร์ หรือ ก ำหนดควำมกว้ำงของบำร์โค้ด

ลงไปใน ui_combo_barcode_w บรรทัดที่ 41-44 เป็นกำรก ำหนดพำรำมิเตอร์ หรือ ก ำหนดควำมสูงของบำร์โค้ด

ลงไปใน ui_combo_barcode_h

Page 10: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

บรรทัดที่ 47-49 เป็นกำรก ำหนดพำรำมิเตอร์ หรือ ก ำหนดฟอนต์ของบำร์โค้ด ลงไปใน ui_combo_barcode_font

บรรทัดที่ 51-54 เป็นกำรก ำหนดพำรำมิเตอร์ หรือ ก ำหนดต ำแหน่งของตัวเลข หรือ ซีเรียลบนบำร์โค้ด ลงไปใน ui_combo_barcode_position

บรรทัดที่ 56 ก ำหนดให้ ui->lineEdit_status_com_port_printer แสดงข้อควำมเป็น "Close Comport"

Page 11: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

บรรทัดที่ 67 คือฟังก์ชั่นที่สร้ำงมำจำกอีเว้นท์จำกกำรคลิกขวำที่ปุ่ม connect เลือก Go to slot… ---> Signal > click(bool) ---> คลิกปุ่ม Ok บรรทัดที่ 69 ก ำหนดเง่ือนไข ถ้ำมีกำรกดปุ่ม connect หรือ ตัวแปร checked==1 ให้ท ำบรรทัดถัดไป บรรทัดที่ 71 ก ำหนดให้ข้อควำมที่ปุ่ม connect เปลี่ยนเป็น Disconnect บรรทัดที่ 73 เรียกใช้พำรำมิเตอร์จำกบรรทัดที่ 26-29 มำแปลงให้เป็นสตริง เก็บไว้ในตัวแปร ComPort บรรทัดที่ 74 ก ำหนดคอมพอร์ตให้กับ serialport โดยน ำข้อมูลที่เป็นสตริง /dev ซ่ึงเป็นไดเร็กทอรี่ที่ระบุคอม พอร์ตมำต่อด้วยข้อมูลที่อยู่ในตัวแปร Comport ก็จะได้เป็น /dev/ComPort บรรทัดที่ 75 แสดงไดเร็กทอรี่ของคอมพอร์ต ออกทำงคอนโซล

Page 12: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

บรรทัดที่ 77-82 เรียกใช้พำรำมิเตอร์จำกบรรทัดที่ 31-32 ซ่ึงข้อมูลจะเป็นชนิด int โดยข้อมูลตัวแรกจะเป็น 0,1,2 ตำมล ำดับ จำกนั้นก็น ำมำเปรียบเทียบโดยกำรใช้ switch case ถ้ำหำกเรำเลือกข้อมูลใน combox_buad_rate เป็น Buad115200 ข้อมูลที่ รีเทรินออกมำก็จะเป็น 0 เม่ือน ำมำเปรียบเทียบใน switch case ก็จะท ำตำมเง่ือนไขใน case 0 บรรทัดที่ 84 setDatabit ให้มีค่ำเท่ำกับ Data8 บรรทัดที่ 85 setstopbit ให้มีค่ำเท่ำกับ Onestop บรรทัดที่ 86 setparity ให้มีค่ำเท่ำกับ NoParity บรรทัดที่ 87 setflowcontrol ให้มีค่ำเท่ำกับ NoFlowControl บรรทัดที่ 91 ก ำหนดเง่ือนไข ถ้ำหำกว่ำมีกำรเชื่อมต่อกับ Serialport บรรทัดที่ 93 สั่งให้ serialport อ่ำนข้อมูลมำจำกภำยนอก บรรทัดที่ 94 แสดงไดเร็กทอรี่และชื่อคอมพอร์ตที่ ui_textEdit_sent บรรทัดที่ 97 ถ้ำหำกว่ำเลือกคอมพอร์ตไม่ถูกต้อง หรือ ไม่มีกำรเชื่อมต่อคอมพอร์ต จะมีกล่องข้อควำมแจ้ง

เตือน “Please Check Comport”

บรรทัดที่ 100 ถ้ำหำกสถำนะของปุ่ม connect ไม่เท่ำกับ 1 หรือ เป็น false บรรทัดที่ 101 แสดงข้อควำมในหน้ำ console “ Close comport ” บรรทัดที่ 103 แสดงข้อควำม “ Connect ” ที่ปุ่ม Connect บรรทัดที่ 104 แสดงข้อควำม “Close Comport Success” ใน ui->lineEdit_status_com_port_printer บรรทัดที่ 105 ปิดคอมพอร์ต

Page 13: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

บรรทัดที่ 111 ฟังก์ชั่น on_btn_feed_printer_clicked() ท ำหน้ำที่สั่งให้ปริ้นเตอร์ฟีดกระดำษ 1 บรรทัด บรรทัดที่ 113 ประกำศตัวแปร input_text เพ่ือน ำข้อมูลที่กรอกใน ui->textEdit_input_text_printer มำเก็บ ไว้ในตัวแปร input_text บรรทัดที่ 114 ประกำศตัวแปร feed เป็นชนิด ByteArray บรรทัดที่ 115 แสดงข้อมูลที่เก็บอยู่ในตัวแปร input_text ออกทำงคอนโซล บรรทัดที่ 117 ส่งข้อมูลที่เก็บอยู่ในตัวแปร input_text ไปยังปริ้นเตอร์ เพ่ือท ำกำรปริ้นข้อควำมดังกล่ำวออกมำ บรรทัดที่ 119 น ำข้อมูล 0x0A ไปเก็บไว้ในตัวแปร feed[0] บรรทัดที่ 122 ส่งข้อมูลที่เก็บอยู่ในตัวแปร feed ไปยังปริ้นเตอร์ซ่ึง 0x0A ก็คือค ำสั่งฟีดกระดำษนั้นเอง และท ำ กำรเคลียร์ข้อมูลในตัวแปร feed

บรรทัดที่ 126 ฟังก์ชั่น on_btn_Initialze_clicked() ท ำหน้ำที่ก ำหนดค่ำเริ่มต้นให้กับปริ้นเตอร์ บรรทัดที่ 130 ประกำศตัวแปร ESC1 เป็นตัวแปรชนิด ByteArray บรรทัดที่ 131 น ำข้อมูล 0x1B ไปเก็บไว้ในตัวแปร ESC1 [0] บรรทัดที่ 132 น ำข้อมูล 0x40 ไปเก็บไว้ในตัวแปร ESC1 [1] บรรทัดที่ 133 ส่งข้อมูลที่เก็บอยู่ในตัวแปร ESC1 ไปยังปริ้นเตอร์ และท ำกำรเคลียร์ข้อมูลในตัวแปร ESC1

Page 14: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

บรรทัดที่ 139 ฟังก์ชั่น on_btn_Bold_toggled(bool checked) ท ำหน้ำที่ ก ำหนดรูปแบบตัวอักษรให้เป็น ตัวหนำ บรรทัดที่ 141 ประกำศตัวแปร ESC1 และ ESC2 เป็นตัวแปรชนิด ByteArray บรรทัดที่ 142 น ำข้อมูล 0x1B ไปเก็บไว้ในตัวแปร ESC1 [0] บรรทัดที่ 143 น ำข้อมูล 0x1B ไปเก็บไว้ในตัวแปร ESC2 [0] บรรทัดที่ 147 น ำข้อมูล 0x47 ไปเก็บไว้ในตัวแปร ESC1 [1] บรรทัดที่ 148 น ำข้อมูล 0x01 ไปเก็บไว้ในตัวแปร ESC1 [2] บรรทัดที่ 150 น ำข้อมูล 0x47 ไปเก็บไว้ในตัวแปร ESC2 [1] บรรทัดที่ 151 น ำข้อมูล 0x00 ไปเก็บไว้ในตัวแปร ESC2 [2] บรรทัดที่ 153-156 ก ำหนดเง่ือน ถ้ำตัวแปร checkd == true หรือ มีกำรกดปุ่ม btn_Bold ก็จะ ส่งข้อมูลที่เก็บ อยู่ในตัวแปร ESC1 ไปยังปริ้นเตอร์ซ่ึงข้อมูลใน ESC1 จะก ำหนดรูปแบบตัวอักษรเป็นตัวหนำ และท ำกำรเคลียร์ข้อมูลในตัวแปร ESC1 บรรทัดที่ 158-160 ถ้ำหำกว่ำไม่มีกำรกดปุ่ม btn_Bold ก็จะ ส่งข้อมูลที่เก็บ อยู่ในตัวแปร ESC2 ไปยังปริ้นเตอร์ ซ่ึงข้อมูลใน ESC2 จะก ำหนดรูปแบบตัวอักษรเป็นปกติ และท ำกำรเคลียร์ข้อมูลในตัวแปร ESC2

Page 15: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

บรรทัดที่ 165 ฟังก์ชั่น on_btn_Bold_toggled(bool checked) ท ำหน้ำที่ รับข้อมูลที่ตัวเลข หรือ ซีเรียลของ บำร์โค้ด บรรทัดที่ 167-170 ท ำกำรตรวจเช็คว่ำซีเรียลบำร์โค้ดที่กรอกมำใน lineEdit_barcode_number นั้นครบ 13 ตัว หรือไม่ ถ้ำครบแล้วก ำหนดให้ตัวแปร chk_number_barcode = 13 บรรทัดที่ 172-174 ถ้ำหำกว่ำซีเรียลที่กรอกมำใส่ใน lineEdit_barcode_number ไม่ครบ13หลัก จะก ำหนดให้ ตัวแปร chk_number_barcode = 0

Page 16: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

บรรทัดที่ 178 ฟังก์ชั่น on_btn_barcode_print_clicked() ท ำหน้ำที่ปริ้นบำร์โค้ด บรรทัดที่ 180 ก ำหนดเง่ือนไข ถ้ำหำกตัวแปร chk_number_barcode == 13 ให้ท ำบรรทัดถัดไป บรรทัดที่ 182 ประกำศตัวแปร ESC … ,ESC4 และตัวแปร GS1 … ,GS10 เป็นตัวแปรชนิด ByteArray บรรทัดที่ 184 น ำข้อมูล 0x1B ไปเก็บไว้ในตัวแปร ESC1 [0] บรรทัดที่ 185 น ำข้อมูล 0x1B ไปเก็บไว้ในตัวแปร ESC2 [0] บรรทัดที่ 186 น ำข้อมูล 0x1B ไปเก็บไว้ในตัวแปร ESC3 [0] บรรทัดที่ 187 น ำข้อมูล 0x1B ไปเก็บไว้ในตัวแปร ESC4 [0] บรรทัดที่ 189 น ำข้อมูล 0x1D ไปเก็บไว้ในตัวแปร GS1 [0] บรรทัดที่ 190 น ำข้อมูล 0x1D ไปเก็บไว้ในตัวแปร GS2 [0] บรรทัดที่ 191 น ำข้อมูล 0x1D ไปเก็บไว้ในตัวแปร GS3 [0] บรรทัดที่ 192 น ำข้อมูล 0x1D ไปเก็บไว้ในตัวแปร GS4 [0] บรรทัดที่ 193 น ำข้อมูล 0x1D ไปเก็บไว้ในตัวแปร GS5 [0] บรรทัดที่ 194 น ำข้อมูล 0x1D ไปเก็บไว้ในตัวแปร GS6 [0] บรรทัดที่ 195 น ำข้อมูล 0x1D ไปเก็บไว้ในตัวแปร GS7 [0] บรรทัดที่ 196 น ำข้อมูล 0x1D ไปเก็บไว้ในตัวแปร GS8 [0] บรรทัดที่ 197 น ำข้อมูล 0x1D ไปเก็บไว้ในตัวแปร GS9 [0] บรรทัดที่ 198 น ำข้อมูล 0x1D ไปเก็บไว้ในตัวแปร GS10 [0] บรรทัดที่ 200-202 ประกำศตัวแปร บรรทัดที่ 205-207 น ำข้อมูลพำรำมิเตอร์ใน ui->combo_barcod_w->currentIndex() +0x02 มำท ำกำรแปลง ให้เป็นฐำนสิบหก ที่น ำ 0x02 มำบวกเนื่องจำกข้อมูลตัวแรกเริ่มจำก 2 (จำกปกติเริ่มจำก 0x00) เม่ือแปลงเสร็จแล้วน ำข้อมูลดังกล่ำวเก็บไว้ในตัวแปร W_con3 บรรทัดที่ 209 น ำข้อมูล 0x77 ไปเก็บไว้ในตัวแปร GS8 [1] บรรทัดที่ 210 น ำข้อมูลที่อยู่ใน W_con3 ไปเก็บไว้ในตัวแปร GS8 [2] บรรทัดที่ 211 ส่งข้อมูลที่เก็บ อยู่ในตัวแปร GS8 ไปยังปริ้นเตอร์ ซ่ึงข้อมูลใน GS8 จะก ำหนดควำมกว้ำงของ บำร์โค้ด และท ำกำรเคลียร์ข้อมูลในตัวแปร GS8

Page 17: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

บรรทัดที่ 214-216 น ำข้อมูลพำรำมิเตอร์ใน ui->combo_barcod_h>currentIndex() มำท ำกำรแปลง ให้เป็นฐำนสิบหก เม่ือแปลงเสร็จแล้วน ำข้อมูลดังกล่ำวเก็บไว้ในตัวแปร H_con3 บรรทัดที่ 219 น ำข้อมูล 0x68 ไปเก็บไว้ในตัวแปร GS9 [1] บรรทัดที่ 220 น ำข้อมูลที่อยู่ใน H_con3 ไปเก็บไว้ในตัวแปร GS9 [2] บรรทัดที่ 221 ส่งข้อมูลที่เก็บ อยู่ในตัวแปร GS9 ไปยังปริ้นเตอร์ ซ่ึงข้อมูลใน GS9 จะก ำหนดควำมสูงของ บำร์โค้ด และท ำกำรเคลียร์ข้อมูลในตัวแปร GS9

บรรทัดที่ 225 น ำข้อมูล 0x66 ไปเก็บไว้ในตัวแปร GS1 [1] บรรทัดที่ 226 น ำข้อมูล 0x66 ไปเก็บไว้ในตัวแปร GS2 [1] บรรทัดที่ 227 น ำข้อมูล 0x66 ไปเก็บไว้ในตัวแปร GS3 [1]

บรรทัดที่ 229 น ำข้อมูล 0x00 ไปเก็บไว้ในตัวแปร GS1 [2]

Page 18: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

บรรทัดที่ 230 น ำข้อมูล 0x01 ไปเก็บไว้ในตัวแปร GS2 [2] บรรทัดที่ 231 น ำข้อมูล 0x02 ไปเก็บไว้ในตัวแปร GS3 [2]

บรรทัดที่ 233-236 น ำพำรำมิเตอร์ที่อยู่ใน ui->combo_barcod_font->currentIndex() มำเปรียบเทียบเง่ือนไข โดยใช้ switch case ถ้ำตรงกับ case ใด ก็จะส่งข้อมูลที่เก็บ อยู่ในตัวแปร GS1 หรือ GS2 หรือ GS3 ไปยังปริ้นเตอร์ ซ่ึงข้อมูลใน GS1-GS3 จะเป็นตัวก ำหนดฟอนต์ของบำร์โค้ด และท ำกำร เคลียร์ข้อมูลในตัวแปร GS นั้นๆ

บรรทัดที่ 243 น ำข้อมูล 0x48 ไปเก็บไว้ในตัวแปร GS4 [1] บรรทัดที่ 244 น ำข้อมูล 0x48 ไปเก็บไว้ในตัวแปร GS5 [1] บรรทัดที่ 245 น ำข้อมูล 0x48 ไปเก็บไว้ในตัวแปร GS6 [1] บรรทัดที่ 246 น ำข้อมูล 0x48 ไปเก็บไว้ในตัวแปร GS7 [1] บรรทัดที่ 248 น ำข้อมูล 0x00 ไปเก็บไว้ในตัวแปร GS4 [2] บรรทัดที่ 249 น ำข้อมูล 0x01 ไปเก็บไว้ในตัวแปร GS5 [2] บรรทัดที่ 250 น ำข้อมูล 0x02 ไปเก็บไว้ในตัวแปร GS6 [2] บรรทัดที่ 251 น ำข้อมูล 0x03 ไปเก็บไว้ในตัวแปร GS7 [2]

บรรทัดที่ 233-236 น ำพำรำมิเตอร์ที่อยู่ใน ui->combo_barcod_position->currentIndex() มำเปรียบเทียบ เง่ือนไข โดยใช้ switch case ถ้ำตรงกับ case ใด ก็จะส่งข้อมูลที่เก็บ อยู่ในตัวแปร GS4 หรือ GS5 หรือ GS6 หรือ GS7 ไปยังปริ้นเตอร์ ซ่ึงข้อมูลใน GS4-GS7 จะเป็นตัวก ำหนดต ำแหน่ง กำรแสดงหมำยเลขซีเรียลของบำร์โค้ด และท ำกำรเคลียร์ข้อมูลในตัวแปร GS นั้นๆ

Page 19: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

บรรทัดที่ 264 น ำข้อมูล 0x6B ไปเก็บไว้ในตัวแปร GS10 [1] บรรทัดที่ 265 น ำข้อมูล 0x02 ไปเก็บไว้ในตัวแปร GS10 [2] บรรทัดที่ 266 ส่งข้อมูลที่เก็บ อยู่ในตัวแปร GS10 ไปยังปริ้นเตอร์ ซ่ึงข้อมูลใน GS10 จะเป็นตัวสั่งให้ปริ้น บำร์โค้ด และท ำกำรเคลียร์ข้อมูลในตัวแปร GS10

บรรทัดที่ 270 ประกำศตัวแปร input_text เพ่ือน ำข้อมูลที่กรอกใน ui->lineEdit_barcode_number มำเก็บ ไว้ในตัวแปร input_text บรรทัดที่ 271 ส่งข้อมูลที่เก็บ อยู่ในตัวแปร input_text ไปยังปริ้นเตอร์ ซ่ึงข้อมูลใน input_text ก็คือหมำยเลข ซีเรียลบำร์โค้ด 13 หลัก ซ่ึงกำรจะท ำกำรปริ้นนั้นจะท ำกำรแปลงของให้อยู่รูปแบบของ Utf8

(toUtf8) และท ำกำรเคลียร์ข้อมูลในตัวแปร GS10

บรรทัดที่ 274 ประกำศตัวแปร ESC5 เป็นข้อมูลชนิด ByArray บรรทัดที่ 275 น ำข้อมูล 0x1B ไปเก็บไว้ในตัวแปร ESC5 [0] บรรทัดที่ 276 น ำข้อมูล 0x40 ไปเก็บไว้ในตัวแปร ESC5 [1] บรรทัดที่ 277 ส่งข้อมูลที่เก็บ อยู่ในตัวแปร ESC5 ไปยังปริ้นเตอร์ ซ่ึงข้อมูลใน ESC5 จะเป็นกำรก ำหนดค่ำเริ่มต้น

ให้กับปริ้นเตอร์และท ำกำรเคลียร์ข้อมูลในตัวแปร GS10

Page 20: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

บรรทัดที่ 280-282 ถ้ำหำกว่ำตัวแปร chk_number_barcode ไม่เท่ำกับ 13 จะกล่องข้อควำมแสดงข้อควำม เตือนว่ำ "Please enter your number 13 digit." ซ่ึงหมำยถึงว่ำกรุณำกรอกหมำยเลขซีเรียล บำร์โค้ดให้ครบ 13 หลัก จึงจะท ำกำรปริ้นบำร์โค้ดได้

บรรทัดที่ 287 ฟังก์ชั่น on_radioButton_underline_1_clicked ท ำหน้ำที่ก ำหนดรูปแบบอักษรให้มีกำรขีด เส้นใต้ ขนำด 1 dot บรรทัดที่ 290 ประกำศตัวแปร ESC1 เป็นตัวแปรชนิด ByteArray บรรทัดที่ 292 ก ำหนดเง่ือนไข ถ้ำหำกตัวแปร checked == true หรือ มีกำรคลิกในช่อง radioButton_underline_1 จะสั่งให้ท ำบรรทัดถัดไป บรรทัดที่ 293 น ำข้อมูล 0x1B ไปเก็บไว้ในตัวแปร ESC1 [0] บรรทัดที่ 294 น ำข้อมูล 0x2D ไปเก็บไว้ในตัวแปร ESC1 [1] บรรทัดที่ 295 น ำข้อมูล 0x01 ไปเก็บไว้ในตัวแปร ESC1 [2] บรรทัดที่ 296 ส่งข้อมูลที่เก็บอยู่ในตัวแปร ESC1 ไปยังปริ้นเตอร์ ซ่ึงข้อมูลที่อยู่ในตัวแปร ESC1 เป็นกำรก ำหนด รูปแบบตัวอักษรให้ขีดเส้นใต้ขนำด 1 dot และท ำกำรเคลียร์ข้อมูลในตัวแปร ESC1

Page 21: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

บรรทัดที่ 302 ฟังก์ชั่น on_radioButton_underline_2_clicked()ท ำหน้ำที่ก ำหนดรูปแบบอักษรให้มีกำรขีด เส้นใต้ ขนำด 2 dot บรรทัดที่ 305 ประกำศตัวแปร ESC1 เป็นตัวแปรชนิด ByteArray บรรทัดที่ 307 ก ำหนดเง่ือนไข ถ้ำหำกตัวแปร checked == true หรือ มีกำรคลิกในช่อง radioButton_underline_2 จะสั่งให้ท ำบรรทัดถัดไป บรรทัดที่ 308 น ำข้อมูล 0x1B ไปเก็บไว้ในตัวแปร ESC1 [0] บรรทัดที่ 309 น ำข้อมูล 0x2D ไปเก็บไว้ในตัวแปร ESC1 [1] บรรทัดที่ 310 น ำข้อมูล 0x01 ไปเก็บไว้ในตัวแปร ESC1 [2] บรรทัดที่ 311 ส่งข้อมูลที่เก็บอยู่ในตัวแปร ESC1 ไปยังปริ้นเตอร์ ซ่ึงข้อมูลที่อยู่ในตัวแปร ESC1 เป็นกำรก ำหนด รูปแบบตัวอักษรให้ขีดเส้นใต้ขนำด 2 dot และท ำกำรเคลียร์ข้อมูลในตัวแปร ESC1

บรรทัดที่ 317 ฟังก์ชั่น on_radioButton_underline_3_clicked() ท ำหน้ำที่ก ำหนดรูปแบบอักษรให้ยกเลิก กำรขีดเส้นใต้ บรรทัดที่ 320 ประกำศตัวแปร ESC1 เป็นตัวแปรชนิด ByteArray บรรทัดที่ 322 ก ำหนดเง่ือนไข ถ้ำหำกตัวแปร checked == true หรือ มีกำรคลิกในช่อง radioButton_underline_3 จะสั่งให้ท ำบรรทัดถัดไป บรรทัดที่ 323 น ำข้อมูล 0x1B ไปเก็บไว้ในตัวแปร ESC1 [0] บรรทัดที่ 324 น ำข้อมูล 0x2D ไปเก็บไว้ในตัวแปร ESC1 [1] บรรทัดที่ 325 น ำข้อมูล 0x01 ไปเก็บไว้ในตัวแปร ESC1 [2] บรรทัดที่ 326 ส่งข้อมูลที่เก็บอยู่ในตัวแปร ESC1 ไปยังปริ้นเตอร์ ซ่ึงข้อมูลที่อยู่ในตัวแปร ESC1 เป็นกำรก ำหนด รูปแบบตัวอักษรให้ยกเลิกกำรขีดเส้นใต้ และท ำกำรเคลียร์ข้อมูลในตัวแปร ESC1

Page 22: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

บรรทัดที่ 331 ฟังก์ชั่น on_radioButton_rotate_1_clicked(bool checked)ท ำหน้ำที่ก ำหนดรูปแบบอักษรให้ มีขนำด 1 dot และ หมุน 90 องศำ บรรทัดที่ 334 ประกำศตัวแปร ESC1 เป็นตัวแปรชนิด ByteArray บรรทัดที่ 336 ก ำหนดเง่ือนไข ถ้ำหำกตัวแปร checked == true หรือ มีกำรคลิกในช่อง radioButton_underline_3 จะสั่งให้ท ำบรรทัดถัดไป บรรทัดที่ 337 น ำข้อมูล 0x1B ไปเก็บไว้ในตัวแปร ESC1 [0] บรรทัดที่ 338 น ำข้อมูล 0x56 ไปเก็บไว้ในตัวแปร ESC1 [1] บรรทัดที่ 339 น ำข้อมูล 0x01 ไปเก็บไว้ในตัวแปร ESC1 [2] บรรทัดที่ 340 ส่งข้อมูลที่เก็บอยู่ในตัวแปร ESC1 ไปยังปริ้นเตอร์ ซ่ึงข้อมูลที่อยู่ในตัวแปร ESC1 ก ำหนดรูปแบบ อักษรให้มีขนำด 1 dot และ หมุน 90 องศำนั้นเอง และท ำกำรเคลียร์ข้อมูลในตัวแปร ESC1

บรรทัดที่ 346 ฟังก์ชั่น on_radioButton_rotate_2_clicked(bool checked)ท ำหน้ำที่ก ำหนดรูปแบบอักษรให้ มีขนำด 2 dot และ หมุน 90 องศำ บรรทัดที่ 349 ประกำศตัวแปร ESC1 เป็นตัวแปรชนิด ByteArray

Page 23: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

บรรทัดที่ 351 ก ำหนดเง่ือนไข ถ้ำหำกตัวแปร checked == true หรือ มีกำรคลิกในช่อง radioButton_underline_3 จะสั่งให้ท ำบรรทัดถัดไป บรรทัดที่ 352 น ำข้อมูล 0x1B ไปเก็บไว้ในตัวแปร ESC1 [0] บรรทัดที่ 353 น ำข้อมูล 0x56 ไปเก็บไว้ในตัวแปร ESC1 [1] บรรทัดที่ 354 น ำข้อมูล 0x02 ไปเก็บไว้ในตัวแปร ESC1 [2] บรรทัดที่ 355 ส่งข้อมูลที่เก็บอยู่ในตัวแปร ESC1 ไปยังปริ้นเตอร์ ซ่ึงข้อมูลที่อยู่ในตัวแปร ESC1 ก ำหนดรูปแบบ อักษรให้มีขนำด 2 dot และ หมุน 90 องศำนั้นเอง และท ำกำรเคลียร์ข้อมูลในตัวแปร ESC1

บรรทัดที่ 360 ฟังก์ชั่น on_radioButton_rotate_3_clicked(bool checked) ท ำหน้ำที่ก ำหนดรูปแบบ อักษรให้ยกเลิกกำรหมุน 90 องศำ และปรับขนำดตัวอักษรให้เป็นปกติ บรรทัดที่ 364 ประกำศตัวแปร ESC1 เป็นตัวแปรชนิด ByteArray บรรทัดที่ 366 ก ำหนดเง่ือนไข ถ้ำหำกตัวแปร checked == true หรือ มีกำรคลิกในช่อง radioButton_underline_3 จะสั่งให้ท ำบรรทัดถัดไป บรรทัดที่ 367 น ำข้อมูล 0x1B ไปเก็บไว้ในตัวแปร ESC1 [0] บรรทัดที่ 368 น ำข้อมูล 0x56 ไปเก็บไว้ในตัวแปร ESC1 [1] บรรทัดที่ 369 น ำข้อมูล 0x00 ไปเก็บไว้ในตัวแปร ESC1 [2] บรรทัดที่ 370 ส่งข้อมูลที่เก็บอยู่ในตัวแปร ESC1 ไปยังปริ้นเตอร์ ซ่ึงข้อมูลที่อยู่ในตัวแปร ESC1 ก ำหนดรูปแบบ อักษรให้ยกเลิกกำรหมุน 90 องศำ และปรับขนำดตัวอักษรให้เป็นปกตินั้นเอง และท ำกำรเคลียร์ ข้อมูลในตัวแปร ESC1

Page 24: บทความ การเขียนโปรแกรมและอธิบาย code qt thermal printer

Thaieasyelec

นายสิทธิกร หมึกแดง (นักศึกษาฝึกงาน ) : Line computer54

บรรทัดที่ 375 ฟังก์ขั่น on_btn_logo_clicked() ท ำหน้ำที่เป็นตัวสั่งให้ปริ้นบำร์โค้ด บรรทัดที่ 377 ประกำศตัวแปร logo เป็นตัวแปรชนิด ByteArray บรรทัดที่ 378 น ำข้อมูล 0x1B ไปเก็บไว้ในตัวแปร logo[0] บรรทัดที่ 379 น ำข้อมูล 0x40 ไปเก็บไว้ในตัวแปร logo[1] บรรทัดที่ 380 น ำข้อมูล 0x1B ไปเก็บไว้ในตัวแปร logo[2] บรรทัดที่ 381 น ำข้อมูล 0x61 ไปเก็บไว้ในตัวแปร logo[3] บรรทัดที่ 382 น ำข้อมูล 0x01 ไปเก็บไว้ในตัวแปร logo[4] บรรทัดที่ 383 น ำข้อมูล 0x1D ไปเก็บไว้ในตัวแปร logo[5] บรรทัดที่ 384 น ำข้อมูล 0x54 ไปเก็บไว้ในตัวแปร logo[6] บรรทัดที่ 385 น ำข้อมูล 0x1C ไปเก็บไว้ในตัวแปร logo[7] บรรทัดที่ 386 น ำข้อมูล 0x70 ไปเก็บไว้ในตัวแปร logo[8] บรรทัดที่ 387 น ำข้อมูล 0x01 ไปเก็บไว้ในตัวแปร logo[9] บรรทัดที่ 388 น ำข้อมูล 0x30 ไปเก็บไว้ในตัวแปร logo[10] บรรทัดที่ 389 น ำข้อมูล 0x1B ไปเก็บไว้ในตัวแปร logo[11] บรรทัดที่ 390 น ำข้อมูล 0x40 ไปเก็บไว้ในตัวแปร logo[12] บรรทัดที่ 392 ส่งข้อมูลที่เก็บอยู่ในตัวแปร logo ไปยังปริ้นเตอร์ ซ่ึงข้อมูลที่อยู่ในตัวแปร logo จะเป็นตัวสั่ง ให้ปริ้นโลโก้ ที่เก็บอยู่ในบัพเฟอร์ หรือหน่วยควำมจ ำในปริ้นเตอร์นั้นเองและท ำกำรเคลียร์ ข้อมูล ในตัวแปร logo