'CSN-A2 Thermel Printer By Behnam Zakizadeh @ 97/03/05 [2018]
'avr64.com
'convert from Arduino:
'Ref:
'Adafruit &:
'Example 38.1 - Sparkfun Thermal Printer Test (COM-10438)
'http://tronixstuff.com/tutorials > chapter 38
'Based On Code By Nathan Seidle Of Spark Fun Electronics 2011
$regfile = "m8adef.dat"
$crystal = 11059200
$hwstack = 64
$swstack = 64
$framesize = 64
$baud = 19200
'************************ Vars / Const ************************
Const Heattime = 80
Const Heatinterval = 255
Const Printdensity = 15
Const Printbreaktime = 15
'***************************** Sub ****************************
Declare Sub Init_printer()
Declare Sub Align(byval A As String) 'A=right,middle,left
Declare Sub Font_w2_h2_b(byval F As String) 'F= "000" to "111"
Declare Sub Font_reverse(byval R As Byte) 'R= 0 OR 1
Declare Sub Font_bold(byval B As Byte) 'B= 0 or 1
Declare Sub Font_width_x2(byval W As Byte) 'W= 0 or 1 1
Declare Sub Font_x2(byval F As Byte) 'F= 0 or 1
Declare Sub Font_updown(byval U As Byte) 'U= 0 OR 1
Declare Sub Font_underline(byval U As Byte) 'U= 0 (no) OR 1 (thin) OR 2 (thick)
Declare Sub Line_spacing(byval L As Byte) 'L=0 to 255 (default=32)
'==================== main prog:
Waitms 500
Call Init_printer()
Call Align( "middle")
Call Font_w2_h2_b( "000")
Call Font_bold(1)
Call Font_width_x2(0)
Call Font_x2(1)
Call Font_reverse(0)
Call Font_updown(0)
Call Font_underline(0)
Call Line_spacing(32)
Print Chr(144) ; Chr(162) ; Chr(161) ; " " ; Chr(244) ; Chr(145) ; Chr(247) ; _
" " ; Chr(249) ; Chr(147)
Print "www.AVR64.com"
Call Font_bold(0)
Call Font_x2(0)
Print "CSN-A2 Printer & BASCOM-AVR"
Print Chr(244) ; Chr(242) ; Chr(168)
'feed paper
Print Chr(10)
End
'_______________________________________________________________________________
Sub Init_printer()
Local Printsetting As Byte
'Modify the print speed and heat
Print Chr(27);
Print Chr(55);
Print Chr(7); 'Default 64 dots = 8*('7'+1)
Print Chr(heattime); 'Default 80 or 800us
Print Chr(heatinterval); 'Default 2 or 20us
'Modify the print density and timeout
Print Chr(18);
Print Chr(35);
Shift Printdensity , Left , 4
Printsetting = Printdensity Or Printbreaktime
Print Chr(printsetting); 'Combination Of Printdensity And Printbreaktime
End Sub
'_______________________________________________________________________________
Sub Align(byval A As String)
Select Case A
Case "left":
Print Chr(27) ; Chr(97) ; Chr(0);
Case "middle":
Print Chr(27) ; Chr(97) ; Chr(1);
Case "right":
Print Chr(27) ; Chr(97) ; Chr(2);
End Select
End Sub
'_______________________________________________________________________________
Sub Font_w2_h2_b(byval F As String)
F = "00" + F + "000"
Local Tmp As Byte
Tmp = Binval(f)
Print Chr(27);
Print Chr(33);
Print Chr(tmp);
End Sub
'_______________________________________________________________________________
Sub Font_bold(byval B As Byte)
Print Chr(27) ; Chr(69) ; Chr(b);
'Print Chr(27) ; Chr(32) ; Chr(b);
End Sub
'_______________________________________________________________________________
Sub Font_width_x2(byval W As Byte)
If W = 1 Then
Print Chr(27) ; Chr(14);
Else
Print Chr(27) ; Chr(20);
End If
End Sub
'_______________________________________________________________________________
Sub Font_x2(byval F As Byte)
If F = 1 Then
'Print Chr(29) ; Chr(33) ; Chr(119); 'MAX= 0111-0111 [W-H]
Print Chr(29) ; Chr(33) ; Chr(17); '0001-0001 [W-H]
Else
Print Chr(29) ; Chr(33) ; Chr(0);
End If
End Sub
'_______________________________________________________________________________
Sub Font_reverse(byval R As Byte)
Print Chr(29) ; Chr(66) ; Chr(r);
End Sub
'_______________________________________________________________________________
Sub Font_updown(byval U As Byte)
Print Chr(27) ; Chr(123) ; Chr(u);
End Sub
'_______________________________________________________________________________
Sub Font_underline(byval U As Byte)
Print Chr(27) ; Chr(45) ; Chr(u);
End Sub
'_______________________________________________________________________________
Sub Line_spacing(byval L As Byte)
Print Chr(27) ; Chr(51) ; Chr(l);
End Sub