|
|
|
php_printer.dll ต่อกับเครื่องสลิป EPSON ตั้งค่าเตะเกะเงิน(Cash Drawer) ???? ไม่ทำงาน |
|
|
|
|
|
|
|
สวัสดีครับ
ไม่รู้ว่ามีใครเคยลองอย่างผมมาบ้างแล้วรึยังนะครับ
ก่อนอื่น ผมได้ตั้งค่า เครื่องพริ้นสลิป EPSON TM-T88V ให้เตะเกะเงินหลังจากพริ้น แล้วผมก็ต่อพ่วง เกะเงิน (Cash Drawer)
การทดลองครั้ง ที่ 1
ผมเปิดหน้าเว็ป ซึ่งหน้าเว็ปนั่นเป็นรูปแบบของไฟล์ pdf โดยใช้ fpdf เป็นตัวสร้างมันขึ้น แล้วผมก็กด Ctrl+P > เลือกเครื่องพริ้น EPSON แล้วก็สั่งพริ้นต์
ผลปรากฎว่า สลิปถูกพริ้นต์ หลังจากนั้นเกะเงินก็เตะออกมาครับ
การทดลองครั้งที่ 2
ผมใช้ php_printer.dll (ดัง code ที่แนบมา) สร้างและพริ้นต์ไปที่พริ้นเตอร์อัตโนมัติ
ผลปรากฎว่า สลิปถูกพริ้นต์ แต่เกะเงินไม่เตะ
คำถามคือ ทั้ง 2 การทดลองสามารถทำให้เครื่องพริ้นต์ออกมาได้ แต่ทำไมเกะถึงเตะเฉพาะวิธีที่ 1 ซึ่งการเตะเกะเงินน่าจะถูกสั่งโดยพริ้นต์เตอร์ ????
Code (PHP)
<?php
$handle = printer_open("Receipt");
printer_start_doc($handle, $F_PROJECT_NO);
printer_start_page($handle);
printer_set_option($handle,PRINTER_PAPER_FORMAT,PRINTER_FORMAT_CUSTOM);
printer_set_option($handle,PRINTER_PAPER_LENGTH,250);
printer_set_option($handle,PRINTER_PAPER_WIDTH,80);
printer_set_option($handle, PRINTER_MODE, "RAW");
$font = printer_create_font("AngsanaUPC", 40, 10, PRINTER_FW_BOLD, false, false, false, 0);
printer_select_font($handle, $font);
printer_draw_text($handle, iconv('UTF-8','TIS-620','ใบเสร็จรับเงิน'), 0, 0);
printer_delete_font($font);
$font = printer_create_font("AngsanaUPC", 35, 8.75, PRINTER_FW_NORMAL, false, false, false, 0);
printer_select_font($handle, $font);
$j=40;
printer_draw_text($handle, iconv('UTF-8','TIS-620',$DataCorp['F_NAME']), 0, $j);
$j=$j+35;
printer_draw_text($handle, iconv('UTF-8','TIS-620',$DataCorp['F_ADDRESS']), 0, $j);
$j=$j+35;
printer_draw_text($handle, iconv('UTF-8','TIS-620','โทร. '.$DataCorp['F_PHONE']), 0, $j);
$j=$j+35;
printer_draw_text($handle, iconv('UTF-8','TIS-620','------------------------------------------------------------------------'), 0, $j);
$j=$j+35;
printer_draw_text($handle, iconv('UTF-8','TIS-620','เลขที่บิล: '.$DataTprjOrderMas['F_PROJECT_NO']), 0, $j);
printer_draw_text($handle, iconv('UTF-8','TIS-620','ใบสัญญา: '.$DataTprjOrderMas['F_CONTRACT_NO']), 280, $j);
$j=$j+35;
printer_draw_text($handle, iconv('UTF-8','TIS-620','วันเวลา: '.date('Y-m-d',strtotime($DataTprjOrderMas['F_ORDER_DATE']))), 0, $j);
$j=$j+35;
printer_draw_text($handle, iconv('UTF-8','TIS-620','นาม: '. $DataTprjOrderMas['F_NAME']), 0, $j);
$j=$j+35;
printer_draw_text($handle, iconv('UTF-8','TIS-620','ชื่อผุ็ติดต่อ: '.$DataTprjOrderMas['F_NICK']), 0, $j);
printer_draw_text($handle, iconv('UTF-8','TIS-620','เบอร์โทร: '.$DataTprjOrderMas['F_PHONE']), 280, $j);
$j=$j+35;
printer_draw_text($handle, iconv('UTF-8','TIS-620','ที่อยู่: '.$DataTprjOrderMas['F_ADDRESS']), 0, $j);
$j=$j+35;
printer_draw_text($handle, iconv('UTF-8','TIS-620','------------------------------------------------------------------------'), 0, $j);
$j=$j+35;
printer_draw_text($handle, iconv('UTF-8','TIS-620','ชื่อรายการ'), 100, $j);
printer_draw_text($handle, iconv('UTF-8','TIS-620','เป็นเงิน'), 400, $j);
$j=$j+35;
printer_draw_text($handle, iconv('UTF-8','TIS-620','------------------------------------------------------------------------'), 0, $j);
$j=$j+35;
while($rs=mysql_fetch_array($DataTprjOrderDeposit)){
if($rs['F_DEPOSIT_SEQ_ID']==1){
$type = " งวดมัดจำ";
}else{
$type = " งวดค้างชำระ";
}
// Create the data cells
if($rs['F_STATUS']==''){
}else{
printer_draw_text($handle, iconv('UTF-8','TIS-620',$type), 40, $j);
printer_draw_text($handle, iconv('UTF-8','TIS-620',number_format($rs['F_PRICE_VALUE'],2)), 400, $j);
$j = $j+35;
}
}
//Create the summary cells
printer_draw_text($handle, iconv('UTF-8','TIS-620','------------------------------------------------------------------------'), 0, $j);
$j=$j+35;
printer_draw_text($handle, iconv('UTF-8','TIS-620','รวมเป็นเงิน : '), 0, $j);
printer_draw_text($handle, iconv('UTF-8','TIS-620',number_format($DataTprjOrderMas['F_PRICE_TOTAL'],2)), 400, $j);
$j=$j+35;
printer_draw_text($handle, iconv('UTF-8','TIS-620','ส่วนลด : '), 0, $j);
printer_draw_text($handle, iconv('UTF-8','TIS-620',number_format($DataTprjOrderMas['F_DISCOUNT_TOTAL'],2)), 400, $j);
$j=$j+35;
printer_draw_text($handle, iconv('UTF-8','TIS-620','ค่าธรรมเนียม : '), 0, $j);
printer_draw_text($handle, iconv('UTF-8','TIS-620',number_format($DataTprjOrderMas['F_SCHARGE_TOTAL'],2)), 400, $j);
$j=$j+35;
printer_draw_text($handle, iconv('UTF-8','TIS-620','ภาษี หัก ณ จ่าย : '), 0, $j);
printer_draw_text($handle, iconv('UTF-8','TIS-620',number_format($DataTprjOrderMas['F_VAT_TOTAL'],2)), 400, $j);
$j=$j+35;
printer_draw_text($handle, iconv('UTF-8','TIS-620','รวมเป็นเงินทั้งสิ้น : '), 0, $j);
printer_draw_text($handle, iconv('UTF-8','TIS-620',number_format($DataTprjOrderMas['F_GRAND_TOTAL'],2)), 400, $j);
$j=$j+35;
printer_draw_text($handle, iconv('UTF-8','TIS-620','วิธีชำระเงิน : '), 0, $j);
printer_draw_text($handle, iconv('UTF-8','TIS-620',$DataTprjOrderMas['F_NOTE_RROJECT']), 110, $j);
$j=$j+35;
printer_draw_text($handle, iconv('UTF-8','TIS-620','ขอขอบพระคุณที่ใช้บริการค่ะ'), 130, $j);
printer_delete_font($font);
printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);
?>
Tag : PHP
|
ประวัติการแก้ไข 2014-07-21 01:17:52 2014-07-21 01:18:29
|
|
|
|
|
Date :
2014-07-21 01:15:28 |
By :
focusmaster |
View :
2038 |
Reply :
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้ทำแล้วครับ
มันจะต้องมีไฟล์ .txt ที่เขียนขึ้นมาด้วยโปรแกรม Notepad++ แล้ว Convert Hex->ASCII เพื่อส่งโค๊ดไปที่พริ้นเตอร์ แล้วเตะเกะเงิน
วิธีการทำไฟล์ .txt
ผมใช้ชื่อไฟล์ว่า opencashdrawer.txt
1. เปิดโปรแกรม Notepad++
2. ตรวจสอบว่ามี plug in > convert ถูกติดตั้งอยู่รึป่าว
3. สร้างไฟล์ Notepad++
4. พิมพ์ 1b700019fa
5. highlight โค๊ดที่เพิ่งพิมพ์ไป
7. ไปที่ plugins->Converter-> HEX --> ASCII
8. Save
เราก็จะได้ไฟล์ opencashdrawer.txt
หลังจากนั้นเราก็ไปดึงไฟล์ opencashdrawer.txt ให้มันอ่านใน php ของเรา
Code (PHP)
<?
/////////Cash Drawer/////////
$handle = printer_open("Receipt"); //ชื่อเครื่องพริ้นต์
printer_set_option($handle, PRINTER_MODE, "RAW");
$fh = fopen("opencashdrawer.txt", "rb"); //เปิดไฟล์
$content = fread($fh, filesize("opencashdrawer.txt"));
fclose($fh);
printer_write($handle, $content); //ส่งโค๊ดไปเตะเงิน
printer_close($handle);
/////////End Cash Drawer/////////
?>
ลองนำไปใช้กันดูได้ครับ
|
ประวัติการแก้ไข 2014-07-21 18:47:56
|
|
|
|
Date :
2014-07-21 18:46:48 |
By :
focusmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2014-07-22 11:21:56 |
By :
fossil31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|